filters fixed for all pages of planner writer

This commit is contained in:
IGNY8 VPS (Salman)
2026-01-15 06:19:20 +00:00
parent 51292bb1b3
commit a8309078c6
8 changed files with 372 additions and 206 deletions

View File

@@ -789,11 +789,33 @@ export async function fetchPlannerKeywordFilterOptions(
// Clusters filter options
export interface PlannerClusterFilterOptions {
statuses: FilterOption[];
difficulties: FilterOption[];
}
export async function fetchPlannerClusterFilterOptions(siteId?: number): Promise<PlannerClusterFilterOptions> {
const queryParams = siteId ? `?site_id=${siteId}` : '';
return fetchAPI(`/v1/planner/clusters/filter_options/${queryParams}`);
export interface ClusterFilterOptionsRequest {
status?: string;
difficulty_min?: number;
difficulty_max?: number;
volume_min?: number;
volume_max?: number;
search?: string;
}
export async function fetchPlannerClusterFilterOptions(
siteId?: number,
filters?: ClusterFilterOptionsRequest
): Promise<PlannerClusterFilterOptions> {
const params = new URLSearchParams();
if (siteId) params.append('site_id', siteId.toString());
if (filters?.status) params.append('status', filters.status);
if (filters?.difficulty_min !== undefined) params.append('difficulty_min', filters.difficulty_min.toString());
if (filters?.difficulty_max !== undefined) params.append('difficulty_max', filters.difficulty_max.toString());
if (filters?.volume_min !== undefined) params.append('volume_min', filters.volume_min.toString());
if (filters?.volume_max !== undefined) params.append('volume_max', filters.volume_max.toString());
if (filters?.search) params.append('search', filters.search);
const queryString = params.toString();
return fetchAPI(`/v1/planner/clusters/filter_options/${queryString ? `?${queryString}` : ''}`);
}
// Ideas filter options
@@ -804,9 +826,63 @@ export interface PlannerIdeasFilterOptions {
clusters: FilterOption[];
}
export async function fetchPlannerIdeasFilterOptions(siteId?: number): Promise<PlannerIdeasFilterOptions> {
const queryParams = siteId ? `?site_id=${siteId}` : '';
return fetchAPI(`/v1/planner/ideas/filter_options/${queryParams}`);
export interface IdeasFilterOptionsRequest {
status?: string;
content_type?: string;
content_structure?: string;
cluster?: string;
search?: string;
}
export async function fetchPlannerIdeasFilterOptions(
siteId?: number,
filters?: IdeasFilterOptionsRequest
): Promise<PlannerIdeasFilterOptions> {
const params = new URLSearchParams();
if (siteId) params.append('site_id', siteId.toString());
if (filters?.status) params.append('status', filters.status);
if (filters?.content_type) params.append('content_type', filters.content_type);
if (filters?.content_structure) params.append('content_structure', filters.content_structure);
if (filters?.cluster) params.append('cluster', filters.cluster);
if (filters?.search) params.append('search', filters.search);
const queryString = params.toString();
return fetchAPI(`/v1/planner/ideas/filter_options/${queryString ? `?${queryString}` : ''}`);
}
// Tasks filter options (Writer module)
export interface WriterTaskFilterOptions {
statuses: FilterOption[];
content_types: FilterOption[];
content_structures: FilterOption[];
clusters: FilterOption[];
sources: FilterOption[];
}
export interface TaskFilterOptionsRequest {
status?: string;
content_type?: string;
content_structure?: string;
cluster?: string;
source?: string;
search?: string;
}
export async function fetchWriterTaskFilterOptions(
siteId?: number,
filters?: TaskFilterOptionsRequest
): Promise<WriterTaskFilterOptions> {
const params = new URLSearchParams();
if (siteId) params.append('site_id', siteId.toString());
if (filters?.status) params.append('status', filters.status);
if (filters?.content_type) params.append('content_type', filters.content_type);
if (filters?.content_structure) params.append('content_structure', filters.content_structure);
if (filters?.cluster) params.append('cluster', filters.cluster);
if (filters?.source) params.append('source', filters.source);
if (filters?.search) params.append('search', filters.search);
const queryString = params.toString();
return fetchAPI(`/v1/writer/tasks/filter_options/${queryString ? `?${queryString}` : ''}`);
}
// Content filter options (Writer module)
@@ -818,9 +894,30 @@ export interface WriterContentFilterOptions {
sources: FilterOption[];
}
export async function fetchWriterContentFilterOptions(siteId?: number): Promise<WriterContentFilterOptions> {
const queryParams = siteId ? `?site_id=${siteId}` : '';
return fetchAPI(`/v1/writer/content/filter_options/${queryParams}`);
export interface ContentFilterOptionsRequest {
status?: string;
site_status?: string;
content_type?: string;
content_structure?: string;
source?: string;
search?: string;
}
export async function fetchWriterContentFilterOptions(
siteId?: number,
filters?: ContentFilterOptionsRequest
): Promise<WriterContentFilterOptions> {
const params = new URLSearchParams();
if (siteId) params.append('site_id', siteId.toString());
if (filters?.status) params.append('status', filters.status);
if (filters?.site_status) params.append('site_status', filters.site_status);
if (filters?.content_type) params.append('content_type', filters.content_type);
if (filters?.content_structure) params.append('content_structure', filters.content_structure);
if (filters?.source) params.append('source', filters.source);
if (filters?.search) params.append('search', filters.search);
const queryString = params.toString();
return fetchAPI(`/v1/writer/content/filter_options/${queryString ? `?${queryString}` : ''}`);
}
// Clusters-specific API functions