mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-29 18:13:47 +00:00
feat: add referral network graph visualization page
Interactive Sigma.js + graphology graph with ForceAtlas2 web worker layout, campaign/user node coloring, filters via nodeReducer pattern, search highlighting, user/campaign detail side panels, and 4-locale translations. Dependencies: sigma v3, graphology, graphology-layout-forceatlas2.
This commit is contained in:
31
src/api/referralNetwork.ts
Normal file
31
src/api/referralNetwork.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import apiClient from './client';
|
||||
import type {
|
||||
NetworkGraphData,
|
||||
NetworkUserDetail,
|
||||
NetworkCampaignDetail,
|
||||
NetworkSearchResult,
|
||||
} from '@/types/referralNetwork';
|
||||
|
||||
export const referralNetworkApi = {
|
||||
getNetworkGraph: async (): Promise<NetworkGraphData> => {
|
||||
const response = await apiClient.get('/cabinet/admin/referral-network/');
|
||||
return response.data;
|
||||
},
|
||||
|
||||
getUserDetail: async (userId: number): Promise<NetworkUserDetail> => {
|
||||
const response = await apiClient.get(`/cabinet/admin/referral-network/user/${userId}`);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
getCampaignDetail: async (campaignId: number): Promise<NetworkCampaignDetail> => {
|
||||
const response = await apiClient.get(`/cabinet/admin/referral-network/campaign/${campaignId}`);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
search: async (query: string): Promise<NetworkSearchResult> => {
|
||||
const response = await apiClient.get('/cabinet/admin/referral-network/search', {
|
||||
params: { q: query },
|
||||
});
|
||||
return response.data;
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user