Skip to content
Snippets Groups Projects
Commit 9744ac62 authored by raghosh's avatar raghosh
Browse files

#43: Fixed the filter issue. Contributors can see the status of their...

#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.
parent 58b9aa44
No related branches found
No related tags found
No related merge requests found
...@@ -87,8 +87,8 @@ module.exports = createCoreController('api::update-item.update-item', ({ strapi ...@@ -87,8 +87,8 @@ module.exports = createCoreController('api::update-item.update-item', ({ strapi
case 'Authenticated': case 'Authenticated':
case 'Contributor': case 'Contributor':
// Remove operation should be intact // Remove operation should be intact
// ctx.query['filters'] = { submittedBy: ctx.state.user.id }; ctx.query['filters'] = { submittedBy: ctx.state.user.id };
// break; break;
case 'Maintainer': case 'Maintainer':
case 'Administrator': case 'Administrator':
...@@ -103,27 +103,40 @@ module.exports = createCoreController('api::update-item.update-item', ({ strapi ...@@ -103,27 +103,40 @@ module.exports = createCoreController('api::update-item.update-item', ({ strapi
return super.find(ctx) return super.find(ctx)
}, },
async filterProteinOrCondensateRequest(ctx){ async filterProteinOrCondensateRequest(ctx) {
// return ctx.send('Hello World!'); // return ctx.send('Hello World!');
console.log(); console.log();
let res; let res;
switch (ctx.state.user.role.name) { switch (ctx.state.user.role.name) {
case 'Public': case 'Public':
case 'Authenticated': case 'Authenticated':
res= await strapi.db.query('api::update-item.update-item').findMany({ // res = await strapi.db.query('api::update-item.update-item').findMany({
where: { // where: {
EntityId: { // EntityId: {
$contains: ctx.params.id // $contains: ctx.params.id
} // }
// },
// });
ctx.query["filters"] = {
...ctx.query["filters"],
EntityId: {
$contains: ctx.params.id,
}, },
});
};
res = super.find(ctx)
break break
case 'Contributor': case 'Contributor':
// Remove operation should be intact // 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({ // res = await strapi.db.query('api::update-item.update-item').findMany({
// //
// where: { // where: {
...@@ -139,7 +152,13 @@ module.exports = createCoreController('api::update-item.update-item', ({ strapi ...@@ -139,7 +152,13 @@ module.exports = createCoreController('api::update-item.update-item', ({ strapi
case 'Maintainer': case 'Maintainer':
// console.log(ctx) // console.log(ctx)
// console.log(ctx.params) // 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', { // res= await strapi.entityService.findMany('api::update-item.update-item', {
// start: 10, // start: 10,
// limit: 15, // limit: 15,
...@@ -157,17 +176,17 @@ module.exports = createCoreController('api::update-item.update-item', ({ strapi ...@@ -157,17 +176,17 @@ module.exports = createCoreController('api::update-item.update-item', ({ strapi
// Apply review operation // Apply review operation
// const entity = await strapi.service('api::update-item.update-item').findOne(ctx.params.id); // const entity = await strapi.service('api::update-item.update-item').findOne(ctx.params.id);
// console.log(entity); // console.log(entity);
res= await strapi.db.query('api::update-item.update-item').findMany({ ctx.query["filters"] = {
...ctx.query["filters"],
where: { EntityId: {
EntityId: { $contains: ctx.params.id,
$contains: ctx.params.id
}
}, },
});
};
res = super.find(ctx)
break; break;
} }
console.log(res); console.log(res);
return res return res
}, },
async findOne(ctx) { async findOne(ctx) {
......
...@@ -154,11 +154,7 @@ export default { ...@@ -154,11 +154,7 @@ export default {
const qs = require("qs"); const qs = require("qs");
const query = { const query = {
filters: {
EntityId: {
$contains: vm.data,
},
},
pagination: { pagination: {
pageSize: lengthItem.value, pageSize: lengthItem.value,
page: page, page: page,
...@@ -224,7 +220,7 @@ export default { ...@@ -224,7 +220,7 @@ export default {
encodeValuesOnly: true, encodeValuesOnly: true,
}); });
let url = `${host}/api/update-items?${queryString}`; let url = `${host}/api/update-item/filterProteinOrCondensateRequest/${vm.data}?${queryString}`;
console.log("new url", url); console.log("new url", url);
const jwt = vm.jwt; const jwt = vm.jwt;
if (jwt === null) { if (jwt === null) {
......
<template> <template>
<table
<table :id="id"
:id="id" class="table table-striped table-bordered table-hover"
class="table table-striped table-bordered table-hover" ></table>
></table>
</template> </template>
<script> <script>
const _ = require('lodash'); const _ = require("lodash");
let host = require('./js/const').apiHost let host = require("./js/const").apiHost;
const $ = window.jQuery = require('jquery'); const $ = (window.jQuery = require("jquery"));
require('@/components/js/datatable'); require("@/components/js/datatable");
let table; let table;
export default { export default {
props: ["id", "data", "meta"],
props: ['id', 'data', 'meta'],
data() { data() {
return { return {
rows: [], rows: [],
header: [], header: [],
total: 0, total: 0,
isDev: process.env.NODE_ENV === 'development', isDev: process.env.NODE_ENV === "development",
}; };
}, },
computed: { computed: {
jwt: function () { jwt: function () {
return this.$store.getters['User/jwt'] return this.$store.getters["User/jwt"];
}, },
}, },
methods: { methods: {
...@@ -47,7 +44,6 @@ export default { ...@@ -47,7 +44,6 @@ export default {
fnCreatedCell: (nTd, sData, oData) => { fnCreatedCell: (nTd, sData, oData) => {
$(nTd).html(`<a href="" class="edit-link"> ${sData}</a>`); $(nTd).html(`<a href="" class="edit-link"> ${sData}</a>`);
}, },
}, },
{ {
title: "Resource Name", title: "Resource Name",
...@@ -77,11 +73,10 @@ export default { ...@@ -77,11 +73,10 @@ export default {
title: "Submitted at", title: "Submitted at",
data: "attributes.SubmittedAt", data: "attributes.SubmittedAt",
render: function (data, type, row, meta) { render: function (data, type, row, meta) {
return new Date(Date.parse(data)).toLocaleString(); return new Date(Date.parse(data)).toLocaleString();
}, },
}, },
// { // {
// title: "Reviewer", // title: "Reviewer",
// data: "attributes.reviewedBy", // data: "attributes.reviewedBy",
...@@ -95,12 +90,15 @@ export default { ...@@ -95,12 +90,15 @@ export default {
// }, // },
]; ];
vm.headers = columns vm.headers = columns;
const nTableOptions = { const nTableOptions = {
columns, columns,
// aaSorting: [[ 0, 'asc' ]], // aaSorting: [[ 0, 'asc' ]],
lengthMenu: [[10, 25, 50, 100], [10, 25, 50, 100]], lengthMenu: [
[10, 25, 50, 100],
[10, 25, 50, 100],
],
paging: true, paging: true,
searching: true, searching: true,
info: true, info: true,
...@@ -112,9 +110,9 @@ export default { ...@@ -112,9 +110,9 @@ export default {
sSearch: "Filter", sSearch: "Filter",
}, },
fnServerData: function (sSource, aoData, fnCallback, oSettings) { 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}`; const tableId = `#${id}`;
...@@ -134,55 +132,64 @@ export default { ...@@ -134,55 +132,64 @@ export default {
vm.editUpdateItem(row.data().id); vm.editUpdateItem(row.data().id);
}); });
}, },
async fetchCallback (data, aoData, fnCallback) { async fetchCallback(data, aoData, fnCallback) {
let vm = this let vm = this;
// console.log(aoData) // console.log(aoData)
let orderItem = aoData.find(x => x.name === 'order') let orderItem = aoData.find((x) => x.name === "order");
let startItem = aoData.find(x => x.name === 'start') let startItem = aoData.find((x) => x.name === "start");
let lengthItem = aoData.find(x => x.name === 'length') let lengthItem = aoData.find((x) => x.name === "length");
let searchItem = aoData.find(x => x.name === 'search') let searchItem = aoData.find((x) => x.name === "search");
// console.log(`length = ${lengthItem.value}, offset = ${startItem.value}`) // console.log(`length = ${lengthItem.value}, offset = ${startItem.value}`)
// console.log(`orderItem = ${orderItem.value}, searchItem = ${searchItem.value.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) { if (vm.isDev) {
host = require('./js/const').devApiHost; host = require("./js/const").devApiHost;
} }
const qs = require('qs'); const qs = require("qs");
const query = { const query = {
filters: { pagination: {
EntityId: { pageSize: lengthItem.value,
$contains: vm.data, 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) { if (orderItem.value.length > 0) {
orderItem.value.forEach(function (data) { orderItem.value.forEach(function (data) {
// console.log(data) // console.log(data)
order = `${columns[data.column]}:${data.dir}` order = `${columns[data.column]}:${data.dir}`;
}) });
// console.log(order) // console.log(order)
} }
query['sort'] = order query["sort"] = order;
if (searchItem.value.value) { if (searchItem.value.value) {
query['filters'] = { query["filters"] = {
$or: [ $or: [
{ {
Entity: { Entity: {
$containsi: search, $containsi: search,
} },
}, },
{ {
EntityId: { EntityId: {
...@@ -202,54 +209,53 @@ export default { ...@@ -202,54 +209,53 @@ export default {
{ {
Value: { Value: {
$containsi: search, $containsi: search,
} },
}] },
} ],
};
} }
const queryString = qs.stringify(query, { const queryString = qs.stringify(query, {
encodeValuesOnly: true, encodeValuesOnly: true,
}); });
let url = `${host}/api/update-items?${queryString}`; let url = `${host}/api/update-item/filterProteinOrCondensateRequest/${vm.data}?${queryString}`;
console.log("protein udate", url); console.log("protein udate", url);
const jwt = vm.jwt; const jwt = vm.jwt;
if(jwt === null) { if (jwt === null) {
return return;
} }
// let dat = { // let dat = {
// draw: aoData.draw, // draw: aoData.draw,
// data: vm.data
// }
// fnCallback(dat) // data: vm.data
// }
// fnCallback(dat)
try { try {
const res = await this.axios.get(url, { const res = await this.axios.get(url, {
headers: { headers: {
Authorization: `Bearer ${jwt}` Authorization: `Bearer ${jwt}`,
} },
}); });
if (res.data) {
if(res.data) { let dat = {
let dat = {
draw: aoData.draw, 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, recordsFiltered: res.data.meta.pagination.total,
data: res.data.data data: res.data.data,
} };
fnCallback(dat) fnCallback(dat);
} }
} catch(error) { } catch (error) {
this.error = true;
this.error = true this.errorMsg = "You are not authorized to access this item.";
this.errorMsg = "You are not authorized to access this item."
} }
}, },
exportTsv() { exportTsv() {
...@@ -259,7 +265,6 @@ console.log("protein udate", url); ...@@ -259,7 +265,6 @@ console.log("protein udate", url);
mounted() { mounted() {
const vm = this; const vm = this;
vm.createTable(vm.id); vm.createTable(vm.id);
}, },
}; };
</script> </script>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment