Newer
Older

raghosh
committed
<template>
<table
:id="id"
class="table table-striped table-bordered table-hover"

raghosh
committed
</template>
<script>
const _ = require('lodash');
let host = require('./js/const').apiHost;

raghosh
committed
const $ = (window.jQuery = require('jquery'));
require('@/components/js/datatable');

raghosh
committed
let table;
export default {

raghosh
committed
data() {
return {
rows: [],
header: [],
total: 0,

raghosh
committed
};
},
computed: {
jwt: function () {

raghosh
committed
},
},
mounted() {
const vm = this;
vm.createTable(vm.id);
},

raghosh
committed
methods: {
editUpdateItem(id) {
// eslint-disable-next-line
this.$router.push("/updateitem/" + id);
},
createTable(id) {
const vm = this;
const columns = [
{

raghosh
committed
fnCreatedCell: (nTd, sData, oData) => {
$(nTd).html(`<a href="" class="edit-link"> ${sData}</a>`);
},

raghosh
committed
},
{

raghosh
committed
},
{
className: 'whitespace-normal break-all'

raghosh
committed
},
{

raghosh
committed
},
{

raghosh
committed
},
{
title: 'Change Operation',
data: 'attributes.ChangeOperation',

raghosh
committed
},
{
fnCreatedCell: (nTd, sData, oData) => {
if(sData==='synced'){

raghosh
committed
$(nTd).html(`<div class="rounded-full font-bold capitalize px-4 mr-2 bg-gray-500 text-white p-2 rounded flex items-center justify-center">${sData}</div>`);
} else if(sData==='accepted'){

raghosh
committed
$(nTd).html(`<div class="rounded-full font-bold capitalize px-4 mr-2 bg-green-500 text-white p-2 rounded flex items-center justify-center">${sData}</div>`);
}else if(sData==='rejected'){

raghosh
committed
$(nTd).html(`<div class="rounded-full font-bold capitalize px-4 mr-2 bg-red-500 text-white p-2 rounded flex items-center justify-center">${sData}</div>`);
}else if(sData==='requested'){

raghosh
committed
$(nTd).html(`<div class="rounded-full font-bold capitalize px-4 mr-2 bg-yellow-500 text-white p-2 rounded flex items-center justify-center">${sData}</div>`);
}
},

raghosh
committed
},
{

raghosh
committed
render: function (data, type, row, meta) {
return new Date(Date.parse(data)).toLocaleString();
},
},
{
// data: `<button class="btn btn-primary edit-link btn-outline font-bold" style="font-weight:bold">
// View<i class="fa fa-edit" style="font-weight:bold"></i>
// </button>`,

raghosh
committed
defaultContent: `<button class="rounded-md bg-transparent hover:bg-blue-600 text-blue-700
hover:text-white
border border-blue-500
hover:border-transparent
focus:ring-2 focus:ring-blue-300
items-center
px-4
py-2
font-bold
text-center view-link">
View
</button>`,
}

raghosh
committed
// {
// title: "Reviewer",
// data: "attributes.reviewedBy",
// render: function (data, type, row, meta) {
// if (data.data) {
// return data.data.attributes.username;
// } else {
// return "";
// }
// },
// },
];
vm.headers = columns;

raghosh
committed
const nTableOptions = {
columns,
// aaSorting: [[ 0, 'asc' ]],
lengthMenu: [
[10, 25, 50, 100],
[10, 25, 50, 100],
],

raghosh
committed
paging: true,
searching: true,
info: true,
bProcessing: true,
bServerSide: true,
order: [], // order: [[0, 'asc']],
bDestroy: true, // Add this property to new setting,
oLanguage: {

raghosh
committed
},
rowCallback: function (row, data) {
if (!data.attributes.SyncResponse && data.attributes.Status !='rejected') {
$(row).css('background-color', '#e6e6e6');
}

raghosh
committed
},
fnServerData: function (sSource, aoData, fnCallback, oSettings) {
oSettings.jqXHR = vm.fetchCallback(vm.rows, aoData, fnCallback);

raghosh
committed
},
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>>',

raghosh
committed
};
const tableId = `#${id}`;
if (table) {
table.destroy();
$(tableId).empty();
}
table = $(tableId).DataTable(nTableOptions);
const tableBody = `${tableId} tbody`;

raghosh
committed
e.preventDefault();
const tr = $(e.target).parent().parent();
const row = table.row(tr);
vm.editUpdateItem(row.data().id);
});
$(tableBody).on('click', 'tr td button.view-link', (e) => {
e.preventDefault();
const tr = $(e.target).parent().parent();
const row = table.row(tr);
vm.editUpdateItem(row.data().id);
});

raghosh
committed
},
async fetchCallback(data, aoData, fnCallback) {
let vm = this;

raghosh
committed
// 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');

raghosh
committed
// console.log(`length = ${lengthItem.value}, offset = ${startItem.value}`)
// console.log(`orderItem = ${orderItem.value}, searchItem = ${searchItem.value.value}`)
const page = startItem.value / lengthItem.value + 1;

raghosh
committed
let search = searchItem.value.value;

raghosh
committed
if (vm.isDev) {

raghosh
committed
}

raghosh
committed
const query = {
pagination: {
pageSize: lengthItem.value,
page: page,

raghosh
committed
},
};
const columns = [
'id',
'Entity',
'EntityId',
'Attribute',
'Value',
'ChangeOperation',
'Status',
'SubmittedAt',
'submittedBy.username',
'reviewedBy.username',

raghosh
committed

raghosh
committed
if (orderItem.value.length > 0) {
orderItem.value.forEach(function (data) {
// console.log(data)
order = `${columns[data.column]}:${data.dir}`;
});

raghosh
committed
// console.log(order)
}

raghosh
committed
if (searchItem.value.value) {

raghosh
committed
$or: [
{
Entity: {
$containsi: search,

raghosh
committed
},
{
EntityId: {
$containsi: search,
},
},
{
ChangeOperation: {
$containsi: search,
},
},
{
Attribute: {
$containsi: search,
},
},
{
Value: {
$containsi: search,
},
},
],
};

raghosh
committed
}
const queryString = qs.stringify(query, {
encodeValuesOnly: true,
});
let url = `${host}/api/update-item/filterProteinRequest/${vm.data}?${queryString}`;

moon
committed
// console.log('protein udate', url);

raghosh
committed
const jwt = vm.jwt;
if (jwt === null) {
return;

raghosh
committed
}
// let dat = {
// draw: aoData.draw,

raghosh
committed
// data: vm.data
// }
// fnCallback(dat)

raghosh
committed

raghosh
committed
try {
const res = await this.axios.get(url, {
headers: {
Authorization: `Bearer ${jwt}`,
},

raghosh
committed
});

raghosh
committed
if (res.data) {
let dat = {

raghosh
committed
draw: aoData.draw,
? vm.total
: (vm.total = res.data.meta.pagination.total),
recordsFiltered: res.data.meta.pagination.total,
data: res.data.data,
};

raghosh
committed
fnCallback(dat);

raghosh
committed
}
} catch (error) {
this.error = true;
this.errorMsg = 'You are not authorized to access this item.';

raghosh
committed
}

raghosh
committed
},
exportTsv() {
// const vm = this;
},
},
};
</script>

raghosh
committed
<style>

raghosh
committed
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
@import url("~@/assets/datatable.css");
select.form-control {
font-size: 12px;
padding: 3px 12px;
}
ul.pagination {
font-size: 1rem;
}
.form-inline .form-control {
height: 25px;
line-height: 25px;
vertical-align: middle;
}
.edit-link {
font-weight: bold;
color: #0065b9;
}
.pagination {
font-size: 1.2rem;
}
.panel-table {
font-size: 1.4rem;
margin-bottom: 20px;
background-color: #fff;
border: 1px solid rgba(0, 0, 0, 0.05);
border-radius: 4px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
}
</style>