mirror of
https://github.com/PhaseII-eAmusement-Network/PhaseWeb3-Vue.git
synced 2026-04-25 15:35:59 -05:00
Update version info, push last changes I had.
This commit is contained in:
parent
0ccf7d182a
commit
622a08536d
|
|
@ -1,7 +1,7 @@
|
|||
VITE_APP_VERSION="3.0.22"
|
||||
VITE_API_URL="http://10.5.7.5:8000/"
|
||||
VITE_API_KEY="your_api_key_should_be_here"
|
||||
VITE_ASSET_PATH="/assets"
|
||||
VITE_GAME_ASSET_PATH="https://cdn.phaseii.network/file/PhaseII/game-assets"
|
||||
VITE_DISCORD_OAUTH_URL="https://discord.com/oauth2/authorize?client_id=947985989421395988&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A5173%2F%23%2Fprofile%2Fintegrate%2Fdiscord&scope=identify"
|
||||
VITE_APP_VERSION="3.0.23"
|
||||
VITE_API_URL="http://10.5.7.5:8000/"
|
||||
VITE_API_KEY="your_api_key_should_be_here"
|
||||
VITE_ASSET_PATH="/assets"
|
||||
VITE_GAME_ASSET_PATH="https://cdn.phaseii.network/file/PhaseII/game-assets"
|
||||
VITE_DISCORD_OAUTH_URL="https://discord.com/oauth2/authorize?client_id=947985989421395988&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A5173%2F%23%2Fprofile%2Fintegrate%2Fdiscord&scope=identify"
|
||||
VITE_TACHI_OAUTH_URL="https://kamai.tachi.ac/oauth/request-auth?clientID=CIb72d1ff81fcfdc001ead8bde3a0ae1a7e0663a37"
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
VITE_APP_VERSION="3.0.22"
|
||||
VITE_API_URL="https://restfulsleep.phaseii.network"
|
||||
VITE_API_KEY="your_api_key_should_be_here"
|
||||
VITE_ASSET_PATH="https://cdn.phaseii.network/file/PhaseII/web-assets"
|
||||
VITE_GAME_ASSET_PATH="https://cdn.phaseii.network/file/PhaseII/game-assets"
|
||||
VITE_DISCORD_OAUTH_URL="https://discord.com/oauth2/authorize?client_id=947985989421395988&response_type=code&redirect_uri=https%3A%2F%2Fweb3.phaseii.network%2F%23%2Fprofile%2Fintegrate%2Fdiscord&scope=identify"
|
||||
VITE_APP_VERSION="3.0.23"
|
||||
VITE_API_URL="https://restfulsleep.phaseii.network"
|
||||
VITE_API_KEY="your_api_key_should_be_here"
|
||||
VITE_ASSET_PATH="https://cdn.phaseii.network/file/PhaseII/web-assets"
|
||||
VITE_GAME_ASSET_PATH="https://cdn.phaseii.network/file/PhaseII/game-assets"
|
||||
VITE_DISCORD_OAUTH_URL="https://discord.com/oauth2/authorize?client_id=947985989421395988&response_type=code&redirect_uri=https%3A%2F%2Fweb3.phaseii.network%2F%23%2Fprofile%2Fintegrate%2Fdiscord&scope=identify"
|
||||
VITE_TACHI_OAUTH_URL="https://kamai.tachi.ac/oauth/request-auth?clientID=CIce4260e1939ceed11c8e48ee857a3aef2a87ba56"
|
||||
|
|
@ -1,25 +1,26 @@
|
|||
{
|
||||
"3.0.1": ["- (Feature) Added update popup", "- (Optimization) Disabled ParticlesJS for the time being. This will be returned as an option in the future.", "- (Optimization) Fill in more score table data for GFDM.", "- (soon™️) I've started rival support, but it's not ready just yet. Stay tuned!"],
|
||||
"3.0.2": ["- (Feature) Added new greetings", "- (Feature) Added new user background", "- (Feature) Added toggle for disabling/enabling this popup", "- (Feature) Added version info to footer", "- (Feature) Fill in more profile data on personal profile view", "- (Fix) DDR stats now work again", "- (Fix) DDR player weight can now be set (kinda)"],
|
||||
"3.0.3": ["- (Feature) Discord avatars are now reactive!", "- (Feature) New profile badges! I'll be working on a backend for these soon™️", "- (Optimization) Fix this box's formatting on mobile."],
|
||||
"3.0.4": ["- (Feature) Add performance event flag settings for SOUND VOLTEX EXCEED GEAR"],
|
||||
"3.0.5": ["- (Feature) Add profile badges based on Discord server roles. Expands Discord linking capabilities."],
|
||||
"3.0.6": ["- (Major) Replace non-standard game cards with a standardized and new header card. May break some layouts so PLEASE REPORT BUGS!", "- (Feature) Create song detail page, not yet completed or reactive.", "- (Bugfix) Fix issue where deleteSession fails if the session has already been deleted.", "- (Minor) Edit ring color on red buttons", "- (Admin) Add Arcades admin page", "- (Bugfix) Fix incorrect prop types for Notes Radar"],
|
||||
"3.0.7": ["- (Major) Song data page now loads data. This data is quite broken for a few games so EXPECT BUGS!", "- (Optimization) Add in table data for games, still missing some data but the basics are complete now."],
|
||||
"3.0.8": ["- (Minor) Added game event options for Classic IIDX versions"],
|
||||
"3.0.8-shrimplinks": ["- (Bugfix) Fix broken session."],
|
||||
"3.0.9": ["- (Minor) Add additional data to the dashboard, including today stats and score stats. Add score stats to chart."],
|
||||
"3.0.10": ["- (Major) Add experimental records pages, work on score processing.", "- (Bugfix) Clean up new dashboard data."],
|
||||
"3.0.11": ["- (Bugfix) Fix broken chart sorting for certain games.", "- (Bugfix) Add spacing on mobile for personal records user buttons."],
|
||||
"3.0.12": ["- (Feature) Add new game event settings to SILENT SCOPE: BONE EATER and beatmaniaIIDX EPOLIS."],
|
||||
"3.0.13": ["- (Feature) Add new game event settings to beatmaniaIIDX EPOLIS."],
|
||||
"3.0.14": ["- (Minor) Fix footer buttons on tables, add generic export table button for every table."],
|
||||
"3.0.15": ["- (Minor) Add beta support for Pinky Crush, clean up gameDB a little.", "- (Optimization) Convert dashboard to a more modular backend.", "- (Bugfix) Fix warnings on auth pages."],
|
||||
"3.0.16": ["- (Major) Add multiple new admin features for network management.", "- (Optimization) Optimize backend for arcade operations.", "- (Bugfix) Fix possible backend issues with better type enforcing.", "- (Bugfix) Fix event data and game data for IIDX Pinky Crush.", "- (Minor) Add assets for Nostalgia."],
|
||||
"3.0.17": ["- (Major) Add initial public profile support.", "- (Minor) Lay groundwork for public profile page", "- (Optimization) Clean up admin pages", "- (Bugfix) Clean up random 500 errors."],
|
||||
"3.0.18": ["- (Admin) Adds the ability to add and remove managers from an arcade.", "- (Minor) Lay groundwork for avatars in tables.", "- (Minor) Add new profile customizations."],
|
||||
"3.0.19": ["- (Admin) Finish admin arcade and machine pages.", "- (Minor) Add new greetings."],
|
||||
"3.0.20": ["- (Major) Add read state to network news.", "- (Minor) Add new greetings.", "- (Minor) Add information to linked services", "- (Minor) Add session info and button to remove all sessions", "- (Minor) Add text gradient animation backend, needs ported to text once finished."],
|
||||
"3.0.21": ["- (Admin) Finish admin machine/arcade pages", "- (Major) Finish initial public profile page", "- (Minor) Change table right-click behavior", "- (Admin) Finish admin News pages", "- (Admin) Add search for user via card ID"],
|
||||
"3.0.22": ["- (Major) Finish first implementation of the public profile page", "- (Minor) Clean up dashboard game stat box", "- (Minor) Load profile name in game stat box"]
|
||||
{
|
||||
"3.0.1": ["- (Feature) Added update popup", "- (Optimization) Disabled ParticlesJS for the time being. This will be returned as an option in the future.", "- (Optimization) Fill in more score table data for GFDM.", "- (soon™️) I've started rival support, but it's not ready just yet. Stay tuned!"],
|
||||
"3.0.2": ["- (Feature) Added new greetings", "- (Feature) Added new user background", "- (Feature) Added toggle for disabling/enabling this popup", "- (Feature) Added version info to footer", "- (Feature) Fill in more profile data on personal profile view", "- (Fix) DDR stats now work again", "- (Fix) DDR player weight can now be set (kinda)"],
|
||||
"3.0.3": ["- (Feature) Discord avatars are now reactive!", "- (Feature) New profile badges! I'll be working on a backend for these soon™️", "- (Optimization) Fix this box's formatting on mobile."],
|
||||
"3.0.4": ["- (Feature) Add performance event flag settings for SOUND VOLTEX EXCEED GEAR"],
|
||||
"3.0.5": ["- (Feature) Add profile badges based on Discord server roles. Expands Discord linking capabilities."],
|
||||
"3.0.6": ["- (Major) Replace non-standard game cards with a standardized and new header card. May break some layouts so PLEASE REPORT BUGS!", "- (Feature) Create song detail page, not yet completed or reactive.", "- (Bugfix) Fix issue where deleteSession fails if the session has already been deleted.", "- (Minor) Edit ring color on red buttons", "- (Admin) Add Arcades admin page", "- (Bugfix) Fix incorrect prop types for Notes Radar"],
|
||||
"3.0.7": ["- (Major) Song data page now loads data. This data is quite broken for a few games so EXPECT BUGS!", "- (Optimization) Add in table data for games, still missing some data but the basics are complete now."],
|
||||
"3.0.8": ["- (Minor) Added game event options for Classic IIDX versions"],
|
||||
"3.0.8-shrimplinks": ["- (Bugfix) Fix broken session."],
|
||||
"3.0.9": ["- (Minor) Add additional data to the dashboard, including today stats and score stats. Add score stats to chart."],
|
||||
"3.0.10": ["- (Major) Add experimental records pages, work on score processing.", "- (Bugfix) Clean up new dashboard data."],
|
||||
"3.0.11": ["- (Bugfix) Fix broken chart sorting for certain games.", "- (Bugfix) Add spacing on mobile for personal records user buttons."],
|
||||
"3.0.12": ["- (Feature) Add new game event settings to SILENT SCOPE: BONE EATER and beatmaniaIIDX EPOLIS."],
|
||||
"3.0.13": ["- (Feature) Add new game event settings to beatmaniaIIDX EPOLIS."],
|
||||
"3.0.14": ["- (Minor) Fix footer buttons on tables, add generic export table button for every table."],
|
||||
"3.0.15": ["- (Minor) Add beta support for Pinky Crush, clean up gameDB a little.", "- (Optimization) Convert dashboard to a more modular backend.", "- (Bugfix) Fix warnings on auth pages."],
|
||||
"3.0.16": ["- (Major) Add multiple new admin features for network management.", "- (Optimization) Optimize backend for arcade operations.", "- (Bugfix) Fix possible backend issues with better type enforcing.", "- (Bugfix) Fix event data and game data for IIDX Pinky Crush.", "- (Minor) Add assets for Nostalgia."],
|
||||
"3.0.17": ["- (Major) Add initial public profile support.", "- (Minor) Lay groundwork for public profile page", "- (Optimization) Clean up admin pages", "- (Bugfix) Clean up random 500 errors."],
|
||||
"3.0.18": ["- (Admin) Adds the ability to add and remove managers from an arcade.", "- (Minor) Lay groundwork for avatars in tables.", "- (Minor) Add new profile customizations."],
|
||||
"3.0.19": ["- (Admin) Finish admin arcade and machine pages.", "- (Minor) Add new greetings."],
|
||||
"3.0.20": ["- (Major) Add read state to network news.", "- (Minor) Add new greetings.", "- (Minor) Add information to linked services", "- (Minor) Add session info and button to remove all sessions", "- (Minor) Add text gradient animation backend, needs ported to text once finished."],
|
||||
"3.0.21": ["- (Admin) Finish admin machine/arcade pages", "- (Major) Finish initial public profile page", "- (Minor) Change table right-click behavior", "- (Admin) Finish admin News pages", "- (Admin) Add search for user via card ID"],
|
||||
"3.0.22": ["- (Major) Finish first implementation of the public profile page", "- (Minor) Clean up dashboard game stat box", "- (Minor) Load profile name in game stat box"],
|
||||
"3.0.23": ["- (Major) Moved to Tailwind V4 (SoftieTechCat)", "- (Major) Updated all dependencies (SoftieTechCat)", "- (Bugfix) Fix bug if user has no read news", "- (Backend) Insane optimization with user loading, data loading, cache parsing.", "- (Minor) Add new greetings."]
|
||||
}
|
||||
|
|
@ -497,8 +497,8 @@
|
|||
},
|
||||
{
|
||||
"author": "Anonymous",
|
||||
"header": "Hey <username>, keep it 100!",
|
||||
"comment": "No misses, only MFCs today."
|
||||
"header": "Hey <username>, keep it 1,000,000!",
|
||||
"comment": "No perfects, only MFCs today."
|
||||
},
|
||||
{
|
||||
"author": "Anonymous",
|
||||
|
|
@ -524,5 +524,45 @@
|
|||
"author": "SoftieTechCat",
|
||||
"header": "My name is <username>, yo.",
|
||||
"comment": "I'm the GOAT of PhaseII, yo. Uhuh."
|
||||
},
|
||||
{
|
||||
"author": "DDR X",
|
||||
"header": "All this waiting around, <username>",
|
||||
"comment": "What is this, a golf tournament? FOUR."
|
||||
},
|
||||
{
|
||||
"author": "DDR X",
|
||||
"header": "We're not playing cards here, <username>",
|
||||
"comment": "We're dancing. Come on."
|
||||
},
|
||||
{
|
||||
"author": "DDR X",
|
||||
"header": "Fresh, <username>.",
|
||||
"comment": "Straight up fresh."
|
||||
},
|
||||
{
|
||||
"author": "DDR X",
|
||||
"header": "I don't know, <username>",
|
||||
"comment": "Have you got the stamina?"
|
||||
},
|
||||
{
|
||||
"author": "DDR X",
|
||||
"header": "Come on, <username>",
|
||||
"comment": "Let's dance already."
|
||||
},
|
||||
{
|
||||
"author": "DDR X",
|
||||
"header": "So what, <username>?",
|
||||
"comment": "We gonna dance or what?"
|
||||
},
|
||||
{
|
||||
"author": "DDR X",
|
||||
"header": "Sure, <username>",
|
||||
"comment": "I guess we can take a break..."
|
||||
},
|
||||
{
|
||||
"author": "DDR X",
|
||||
"header": "You gotta step quick, <username>",
|
||||
"comment": "Watch out for the shock arrow!"
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ import AsideMenu from "@/components/Menus/AsideMenu.vue";
|
|||
import FooterBar from "@/components/FooterBar.vue";
|
||||
import { loadUserAuthKey, deleteUserAuthKey } from "@/stores/auth";
|
||||
import { gameData } from "@/constants";
|
||||
// import BaseButton from "@/components/BaseButton.vue";
|
||||
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
|
|
@ -274,7 +275,15 @@ const menuAside = computed(() => {
|
|||
>
|
||||
<BaseIcon :path="mdiMenu" size="24" />
|
||||
</NavBarItemPlain>
|
||||
<NavBarItemPlain use-margin> </NavBarItemPlain>
|
||||
|
||||
<div class="h-full flex place-items-center ml-4 gap-4">
|
||||
<!-- <span>You can add up to 4 buttons here</span>
|
||||
<BaseButton small label="QuickNav" color="info" />
|
||||
<BaseButton small label="QuickNav" color="success" />
|
||||
<BaseButton small label="QuickNav" color="warning" />
|
||||
<BaseButton small label="QuickNav" color="danger" />
|
||||
<span>They're sticky!</span> -->
|
||||
</div>
|
||||
</NavBar>
|
||||
<AsideMenu
|
||||
:is-aside-mobile-expanded="isAsideMobileExpanded"
|
||||
|
|
|
|||
|
|
@ -38,15 +38,6 @@ export default [
|
|||
},
|
||||
],
|
||||
},
|
||||
// {
|
||||
// to: "/goals",
|
||||
// icon: mdiFlagCheckered,
|
||||
// label: "Goals",
|
||||
// },
|
||||
// {
|
||||
// icon: mdiCogs,
|
||||
// label: "Edit Dashboard",
|
||||
// },
|
||||
{
|
||||
icon: mdiLogout,
|
||||
label: "Log out",
|
||||
|
|
|
|||
|
|
@ -10,6 +10,16 @@ export async function APIAdminDashboard() {
|
|||
}
|
||||
}
|
||||
|
||||
export async function APIAdminAudit() {
|
||||
try {
|
||||
const data = await mainStore.callApi(`/admin/audit`);
|
||||
return data.data;
|
||||
} catch (error) {
|
||||
console.log("Error loading admin audit:", error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
export async function APIAdminArcades() {
|
||||
try {
|
||||
const data = await mainStore.callApi(`/admin/arcades`);
|
||||
|
|
|
|||
|
|
@ -1,20 +1,20 @@
|
|||
<script setup>
|
||||
import { ref, onMounted } from "vue";
|
||||
import { mdiFlagCheckered, mdiCashEdit } from "@mdi/js";
|
||||
import { mdiFlagCheckered, mdiCashEdit, mdiExclamationThick } from "@mdi/js";
|
||||
import SectionMain from "@/components/SectionMain.vue";
|
||||
import CardBox from "@/components/CardBox.vue";
|
||||
import LayoutAuthenticated from "@/layouts/LayoutAuthenticated.vue";
|
||||
import SectionTitleLine from "@/components/SectionTitleLine.vue";
|
||||
import GeneralTable from "@/components/GeneralTable.vue";
|
||||
|
||||
import { APIAdminDashboard } from "@/stores/api/admin";
|
||||
const dashboardData = ref({});
|
||||
import { APIAdminAudit } from "@/stores/api/admin";
|
||||
const auditData = ref({});
|
||||
const loading = ref(true);
|
||||
|
||||
onMounted(async () => {
|
||||
try {
|
||||
const data = await APIAdminDashboard();
|
||||
dashboardData.value = data;
|
||||
const data = await APIAdminAudit();
|
||||
auditData.value = data;
|
||||
loading.value = false;
|
||||
} catch (error) {
|
||||
console.log("Failed to fetch admin data:", error);
|
||||
|
|
@ -82,36 +82,116 @@ const transactionHeaders = [
|
|||
},
|
||||
];
|
||||
|
||||
function formatTransactions(events) {
|
||||
var formattedItems = [];
|
||||
for (var item of events) {
|
||||
if (item.type == "paseli_transaction") {
|
||||
if (item.timestamp) {
|
||||
const date = new Date(item.timestamp * 1000);
|
||||
item.date = date.toLocaleString();
|
||||
}
|
||||
const updaterHeaders = [
|
||||
{
|
||||
text: "Timestamp",
|
||||
value: "date",
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
text: "PCBID",
|
||||
value: "data.pcbid",
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
text: "Name",
|
||||
value: "data.name",
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
text: "Value",
|
||||
value: "data.value",
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
text: "Model",
|
||||
value: "data.model",
|
||||
width: 120,
|
||||
},
|
||||
];
|
||||
|
||||
formattedItems.push(item);
|
||||
const exceptionHeaders = [
|
||||
{
|
||||
text: "Timestamp",
|
||||
value: "date",
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
text: "Service",
|
||||
value: "data.service",
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
text: "PCBID",
|
||||
value: "data.pcbid",
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
text: "Model",
|
||||
value: "data.model",
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
text: "Request",
|
||||
value: "data.requestName",
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
text: "Method",
|
||||
value: "data.method",
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
text: "Traceback",
|
||||
value: "data.traceback",
|
||||
width: 120,
|
||||
},
|
||||
];
|
||||
|
||||
const unhandledHeaders = [
|
||||
{
|
||||
text: "Timestamp",
|
||||
value: "date",
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
text: "Request",
|
||||
value: "data.request",
|
||||
width: 120,
|
||||
},
|
||||
];
|
||||
|
||||
function formatData(events) {
|
||||
return events.map((item) => {
|
||||
if (item.timestamp) {
|
||||
const date = new Date(item.timestamp * 1000);
|
||||
item.date = date.toLocaleString();
|
||||
}
|
||||
}
|
||||
|
||||
return formattedItems;
|
||||
if (item?.data?.service === "xrpc" && item?.data?.request) {
|
||||
const extracted = extractExceptionData(item.data.request);
|
||||
item.data.pcbid = extracted.pcbid;
|
||||
item.data.model = extracted.model;
|
||||
item.data.requestName = extracted.requestName;
|
||||
item.data.method = extracted.method;
|
||||
}
|
||||
|
||||
return item;
|
||||
});
|
||||
}
|
||||
|
||||
function formatEvents(events) {
|
||||
var formattedItems = [];
|
||||
for (var item of events) {
|
||||
if (item.type == "pcbevent") {
|
||||
if (item.timestamp) {
|
||||
const date = new Date(item.timestamp * 1000);
|
||||
item.date = date.toLocaleString();
|
||||
}
|
||||
function extractExceptionData(xmlString) {
|
||||
const modelMatch = xmlString.match(/<call[^>]*model="([^"]+)"/);
|
||||
const pcbidMatch = xmlString.match(/<call[^>]*srcid="([^"]+)"/);
|
||||
const methodMatch = xmlString.match(/<([^ >]+)[^>]*method="([^"]+)"/);
|
||||
const requestNameMatch = xmlString.match(/<call[^>]*>\s*<([^ >]+)/);
|
||||
|
||||
formattedItems.push(item);
|
||||
}
|
||||
}
|
||||
|
||||
return formattedItems;
|
||||
return {
|
||||
model: modelMatch?.[1] || null,
|
||||
pcbid: pcbidMatch?.[1] || null,
|
||||
requestName: requestNameMatch?.[1] || null,
|
||||
method: methodMatch?.[2] || null,
|
||||
};
|
||||
}
|
||||
</script>
|
||||
|
||||
|
|
@ -123,6 +203,25 @@ function formatEvents(events) {
|
|||
<h1 class="text-3xl">Service Logs</h1>
|
||||
</CardBox>
|
||||
|
||||
<SectionTitleLine
|
||||
:icon="mdiExclamationThick"
|
||||
title="Recent Tracebacks"
|
||||
color="text-red-400"
|
||||
main
|
||||
/>
|
||||
<CardBox has-table class="mb-4">
|
||||
<div
|
||||
class="bg-white dark:bg-slate-900/95 rounded-2xl lg:flex lg:justify-between"
|
||||
>
|
||||
<div class="w-full">
|
||||
<GeneralTable
|
||||
:headers="exceptionHeaders"
|
||||
:items="formatData(auditData?.exception)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</CardBox>
|
||||
|
||||
<SectionTitleLine
|
||||
:icon="mdiFlagCheckered"
|
||||
title="Recent PCB Events"
|
||||
|
|
@ -136,7 +235,7 @@ function formatEvents(events) {
|
|||
<div class="w-full">
|
||||
<GeneralTable
|
||||
:headers="eventHeaders"
|
||||
:items="formatEvents(dashboardData?.audit)"
|
||||
:items="formatData(auditData?.pcbevent)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -155,7 +254,7 @@ function formatEvents(events) {
|
|||
<div class="w-full">
|
||||
<GeneralTable
|
||||
:headers="transactionHeaders"
|
||||
:items="formatTransactions(dashboardData?.audit)"
|
||||
:items="formatData(auditData?.paseli_transaction)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -235,7 +235,11 @@ const cardBoxes = ref([
|
|||
:content="news.body"
|
||||
:date="humanReadableTime(news.timestamp)"
|
||||
:cover="news.data.img"
|
||||
:read="mainStore?.userData?.seen_news[news.id] ?? false"
|
||||
:read="
|
||||
mainStore?.userData?.seen_news
|
||||
? mainStore?.userData?.seen_news[news.id]
|
||||
: false
|
||||
"
|
||||
class="w-full h-full"
|
||||
/>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user