More
This commit is contained in:
parent
cd34ee693f
commit
05a1f316e1
58 changed files with 3113 additions and 1277 deletions
|
|
@ -1,6 +1,7 @@
|
|||
import type { FeatureMeta, FeatureFilters } from '../types';
|
||||
import { INITIAL_RETRY_MS, MAX_RETRY_MS } from './consts';
|
||||
import pb from './pocketbase';
|
||||
import { getSchoolBackendFeatureName } from './school-filter';
|
||||
|
||||
export function logNonAbortError(label: string, error: unknown): void {
|
||||
if (error instanceof Error && error.name === 'AbortError') {
|
||||
|
|
@ -82,8 +83,29 @@ export function buildFilterString(
|
|||
): string {
|
||||
const entries = Object.entries(filters);
|
||||
if (entries.length === 0) return '';
|
||||
return entries
|
||||
.filter(([name]) => name !== exclude)
|
||||
|
||||
const merged = new Map<string, [number, number] | string[]>();
|
||||
for (const [name, value] of entries) {
|
||||
if (name === exclude) continue;
|
||||
const backendName = getSchoolBackendFeatureName(name) ?? name;
|
||||
const prev = merged.get(backendName);
|
||||
if (
|
||||
prev &&
|
||||
Array.isArray(prev) &&
|
||||
Array.isArray(value) &&
|
||||
typeof prev[0] === 'number' &&
|
||||
typeof value[0] === 'number'
|
||||
) {
|
||||
merged.set(backendName, [
|
||||
Math.max(prev[0] as number, value[0] as number),
|
||||
Math.min(prev[1] as number, value[1] as number),
|
||||
]);
|
||||
} else if (!prev) {
|
||||
merged.set(backendName, value);
|
||||
}
|
||||
}
|
||||
|
||||
return [...merged.entries()]
|
||||
.map(([name, value]) => {
|
||||
const meta = features.find((f) => f.name === name);
|
||||
if (meta?.type === 'enum') {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue