-
raghosh authored
fixed value field text conversion issue from update item table. Removed protein column and DB column from every table. Renamed Evidence star to Confidence Score everywhere.
raghosh authoredfixed value field text conversion issue from update item table. Removed protein column and DB column from every table. Renamed Evidence star to Confidence Score everywhere.
ContributorListTable.vue 4.02 KiB
<template>
<section>
<div class="h-1/2 overflow-y-auto shadow-md sm:rounded-lg">
<h2 v-if="error" class="text-red-500">
{{ errorMsg }}
</h2>
<h5 v-if="!showTable" class="text-center">
No contribution made yet.
</h5>
<table v-else class="w-full table-auto text-left text-gray-500 dark:text-gray-400">
<thead class="
sticky top-0
bg-gray-50
text-gray-700
uppercase
dark:bg-gray-700 dark:text-gray-400
">
<tr class="p-8 sticky top-0">
<th v-for="item in tableHeader" :key="item" scope="col" class="px-6 py-3">
{{ item }}
</th>
</tr>
</thead>
<tbody class="overflow-y-scroll w-full" style="height: 2vh;" >
<tr v-for="items in topContributors" :key="items.id"
class="bg-white border-b dark:bg-gray-800 dark:border-gray-700">
<td scope="row" class="
px-6
py-4
font-medium
text-gray-900
dark:text-white
whitespace-nowrap
">
{{ items.fullName }}
</td>
<td scope="row" class="
px-6
py-4
font-medium
text-gray-900
dark:text-white
whitespace-nowrap
">
<span class="
bg-blue-100
text-blue-800
font-semibold
mr-2
px-2.5
py-0.5
rounded
dark:bg-blue-200 dark:text-blue-800
">
{{ items.contribution }}
</span>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</template>
<script>
let host = require('@/components/js/const').apiHost;
export default {
props: ['id', 'entity'],
data() {
return {
tableHeader: ['Name', 'Contributions'],
isDev: process.env.NODE_ENV === 'development',
topContributors: null,
error: false,
errorMsg: '',
showTable: true,
};
},
mounted() {
this.getContributors();
},
methods: {
async getContributors() {
if (this.isDev) {
host = require('@/components/js/const').devApiHost;
}
try {
const res = await fetch(
`${host}/api/update-item/filterContributors/${this.entity}/${this.id}`
);
if (!res.ok) {
this.error = true;
this.errorMsg = `${res.status} Internal Error, please write a mail to DDCode Admin`;
return;
}
this.error = false;
this.errorMsg = '';
const response = await res.json();
const convertedArray = response.entries.map((e) => ({
id: e.id,
username: e.username,
fullName: e.full_name,
contribution: e.SubmittedUpdateItems.length,
}));
let sortedArray = convertedArray.sort(
(a, b) => b.contribution - a.contribution
);
// const sorted = [...new Set(convertedArray)].sort((a, b) => b.contribution - a.contribution);
let syncedList = sortedArray.filter((list) => list.contribution > 0);
if (syncedList.length === 0) {
this.showTable = false;
return;
}
this.showTable = true;
let rank = 1;
for (let i in syncedList) {
if (
i > 0 &&
syncedList[i].contribution < syncedList[i - 1].contribution
) {
rank += 1;
}
syncedList[i].rank = rank;
}
let top10Contributors = syncedList.filter((list) => list.rank <= 10);
this.topContributors = top10Contributors;
} catch (err) {
this.error = true;
this.errorMsg = `${err.message} Internal Error, please write a mail to DDCode Admin`;
console.log(err);
}
},
},
};
</script>
<style>
</style>