Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9d947f19b9 | |||
| 02731c021a |
@@ -187,8 +187,8 @@ console.log('imageLink', imageLink)
|
|||||||
item?.file_type === undefined
|
item?.file_type === undefined
|
||||||
? "icons/01.png"
|
? "icons/01.png"
|
||||||
: "icons/" + item.file_type + ".png";
|
: "icons/" + item.file_type + ".png";
|
||||||
return (<div key={index} className="widget-text">
|
return (<div key={index} className={`widget-text ${imageLink == file_url && 'bg-light'}`}>
|
||||||
<div className="media align-items-center" onClick={()=>setImageLink(file_url)} style={{cursor: 'pointer'}}>
|
<div className={`media align-items-center`} onClick={()=>setImageLink(file_url)} style={{cursor: 'pointer'}}>
|
||||||
<img src={getImage(avtarImage)}
|
<img src={getImage(avtarImage)}
|
||||||
// src={`assets/img/file-icon/${item.file_type}.png`}
|
// src={`assets/img/file-icon/${item.file_type}.png`}
|
||||||
className="img-fluid"
|
className="img-fluid"
|
||||||
@@ -223,7 +223,15 @@ console.log('imageLink', imageLink)
|
|||||||
</div>
|
</div>
|
||||||
<div className="card-body d-flex justify-content-center align-items-center pl-0 pr-0 scrollbar scroll_dark">
|
<div className="card-body d-flex justify-content-center align-items-center pl-0 pr-0 scrollbar scroll_dark">
|
||||||
{imageLink &&
|
{imageLink &&
|
||||||
<img src={imageLink} alt='file-image' />
|
<img className="w-100 h-auto" src={imageLink} alt='file-image' />
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
<div className="card-header d-flex justify-content-between align-items-center">
|
||||||
|
{imageLink &&
|
||||||
|
<>
|
||||||
|
<p>0 x 0 px</p>
|
||||||
|
<p>size: 0 bytes</p>
|
||||||
|
</>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ export default function ProductReportTable() {
|
|||||||
<div className="col-md-12 m-b-30">
|
<div className="col-md-12 m-b-30">
|
||||||
<div className="d-block d-sm-flex flex-nowrap align-items-center">
|
<div className="d-block d-sm-flex flex-nowrap align-items-center">
|
||||||
<div className="page-title mb-2 mb-sm-0">
|
<div className="page-title mb-2 mb-sm-0">
|
||||||
<h4>Payments Report</h4>
|
<h4>Products Report</h4>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -5,12 +5,13 @@ import queryKeys from "../../services/queryKeys";
|
|||||||
import {getReportsTopicsList} from "../../services/services";
|
import {getReportsTopicsList} from "../../services/services";
|
||||||
import PaymentReportTable from "./PaymentReportTable";
|
import PaymentReportTable from "./PaymentReportTable";
|
||||||
import ProductReportTable from "./ProductReportTable";
|
import ProductReportTable from "./ProductReportTable";
|
||||||
|
import sortArrayByListOrder from "../../helpers/sortArrayByLIstOrder";
|
||||||
|
|
||||||
|
|
||||||
export default function Reports() {
|
export default function Reports() {
|
||||||
|
|
||||||
const {data, isFetching, isError, error} = useQuery({
|
const {data, isFetching, isError, error} = useQuery({
|
||||||
queryKey: queryKeys.my_files,
|
queryKey: queryKeys.topics,
|
||||||
queryFn: () => {
|
queryFn: () => {
|
||||||
let reqData = {
|
let reqData = {
|
||||||
token: localStorage.getItem('token'), // USER TOKEN
|
token: localStorage.getItem('token'), // USER TOKEN
|
||||||
@@ -22,6 +23,13 @@ export default function Reports() {
|
|||||||
|
|
||||||
const reportTopicList = data?.data?.topics?.topics;
|
const reportTopicList = data?.data?.topics?.topics;
|
||||||
|
|
||||||
|
const renderedTable = {
|
||||||
|
payment: <PaymentReportTable />,
|
||||||
|
product: <ProductReportTable />
|
||||||
|
}
|
||||||
|
|
||||||
|
const sortedReportTopicList= sortArrayByListOrder(reportTopicList ? reportTopicList : []) // SORTED SETTINGSCONFIG
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<BreadcrumbComBS title='Reports' paths={['Dashboard', 'Reports']}/>
|
<BreadcrumbComBS title='Reports' paths={['Dashboard', 'Reports']}/>
|
||||||
@@ -36,28 +44,29 @@ export default function Reports() {
|
|||||||
{/*</div>*/}
|
{/*</div>*/}
|
||||||
<div className="card-body">
|
<div className="card-body">
|
||||||
<div className="tab tab-vertical">
|
<div className="tab tab-vertical">
|
||||||
<ul className="nav nav-tabs" role="tablist">
|
|
||||||
{reportTopicList && reportTopicList.map((item, index) => {
|
{/* <!-- Tabs --> */}
|
||||||
return (
|
<ul className="nav nav-tabs" id="myTab" role="tablist">
|
||||||
<li className="nav-item">
|
{sortedReportTopicList && sortedReportTopicList.map((item, index) => {
|
||||||
<a className="nav-link" id={`report-${item.url}-tab`}
|
return (
|
||||||
data-toggle="tab" href={`#`} role="tab"
|
<li key={index} className="nav-item" role="presentation">
|
||||||
aria-controls="home-09" aria-selected="true"> {item.name}</a>
|
<a className={`nav-link ${index == 0 && 'active'}`} id={`tab-${item?.url}`} href="#" data-bs-toggle="tab" data-bs-target={`#content-${item?.url}`} type="button" role="tab">
|
||||||
</li>
|
{item?.name}
|
||||||
)
|
</a>
|
||||||
}
|
</li>
|
||||||
)
|
)
|
||||||
}
|
})}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
{/* <!-- Tab Content --> */}
|
||||||
<div className="tab-content">
|
<div className="tab-content">
|
||||||
<div className="tab-pane fade active show" id="home-09" role="tabpanel"
|
{sortedReportTopicList && sortedReportTopicList.map((item, index) => {
|
||||||
aria-labelledby="home-09-tab">
|
return (
|
||||||
{<PaymentReportTable/>}
|
<div key={index} className={`tab-pane fade show ${index == 0 && 'active'}`} id={`content-${item?.url}`} role="tabpanel">
|
||||||
</div>
|
{renderedTable[item?.url]}
|
||||||
<div className="tab-pane fade" id="profile-09" role="tabpanel"
|
</div>
|
||||||
aria-labelledby="profile-09-tab">
|
)
|
||||||
{<ProductReportTable/>}
|
})}
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
function sortArrayByListOrder(data) {
|
||||||
|
// Convert object to array if needed
|
||||||
|
const array = Array.isArray(data)
|
||||||
|
? [...data]
|
||||||
|
: Object.values(data);
|
||||||
|
|
||||||
|
// Sort ascending by list_order
|
||||||
|
array.sort((a, b) => {
|
||||||
|
const orderA = a.list_order ?? 0;
|
||||||
|
const orderB = b.list_order ?? 0;
|
||||||
|
return orderA - orderB;
|
||||||
|
});
|
||||||
|
|
||||||
|
return array;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default sortArrayByListOrder
|
||||||
@@ -12,6 +12,7 @@ const queryKeys = {
|
|||||||
subscriptions: ['subscriptions'],
|
subscriptions: ['subscriptions'],
|
||||||
profile_data: ['profile_data'],
|
profile_data: ['profile_data'],
|
||||||
my_files: ['my_files'],
|
my_files: ['my_files'],
|
||||||
|
topics: ['topics'],
|
||||||
|
|
||||||
dashboard: ['dashboard'],
|
dashboard: ['dashboard'],
|
||||||
topBar: ['top-bar'],
|
topBar: ['top-bar'],
|
||||||
|
|||||||
Reference in New Issue
Block a user