feat: fix frontend and activate imports
This commit is contained in:
@@ -23,15 +23,15 @@ export default function AdminDashboard() {
|
||||
useEffect(() => {
|
||||
const fetchStats = async () => {
|
||||
try {
|
||||
// In a real app we'd have a specific stats endpoint,
|
||||
// In a real app we'd have a specific stats endpoint,
|
||||
// but for now we'll calculate from lists
|
||||
const [orgs, users] = await Promise.all([
|
||||
cmsApi.getOrganizations(),
|
||||
const [org, users] = await Promise.all([
|
||||
cmsApi.getOrganization(),
|
||||
cmsApi.getAllUsers()
|
||||
]);
|
||||
|
||||
setStats({
|
||||
orgs: orgs.length,
|
||||
orgs: 1, // Single tenant architecture
|
||||
users: users.length,
|
||||
courses: 0 // We'd need a global courses count
|
||||
});
|
||||
|
||||
@@ -29,12 +29,12 @@ export default function UsersPage() {
|
||||
|
||||
const loadData = async () => {
|
||||
try {
|
||||
const [usersData, orgsData] = await Promise.all([
|
||||
const [usersData, orgData] = await Promise.all([
|
||||
cmsApi.getAllUsers(),
|
||||
cmsApi.getOrganizations()
|
||||
cmsApi.getOrganization()
|
||||
]);
|
||||
setUsers(usersData);
|
||||
setOrganizations(orgsData);
|
||||
setOrganizations([orgData]); // Single tenant - wrap in array for compatibility
|
||||
} catch (error) {
|
||||
console.error('Failed to load data', error);
|
||||
} finally {
|
||||
|
||||
@@ -2,15 +2,14 @@
|
||||
|
||||
import React, { useState, useEffect } from 'react';
|
||||
import { questionBankApi, QuestionBank, QuestionBankFilters, QuestionBankType } from '@/lib/api';
|
||||
import {
|
||||
Plus, Search, Filter, Edit2, Trash2, Volume2, VolumeX, Download,
|
||||
import {
|
||||
Plus, Search, Filter, Edit2, Trash2, Download,
|
||||
Upload, Sparkles, ChevronDown, ChevronUp, X, Check, AlertCircle,
|
||||
Headphones, BookOpen, Tag, Hash, Globe
|
||||
} from 'lucide-react';
|
||||
import QuestionBankEditor from '@/components/QuestionBank/QuestionBankEditor';
|
||||
import QuestionBankCard from '@/components/QuestionBank/QuestionBankCard';
|
||||
import MySQLImportModal from '@/components/QuestionBank/MySQLImportModal';
|
||||
import AudioGeneratorModal from '@/components/QuestionBank/AudioGeneratorModal';
|
||||
|
||||
export default function QuestionBankPage() {
|
||||
const [questions, setQuestions] = useState<QuestionBank[]>([]);
|
||||
@@ -21,8 +20,6 @@ export default function QuestionBankPage() {
|
||||
const [showEditor, setShowEditor] = useState(false);
|
||||
const [editingQuestion, setEditingQuestion] = useState<QuestionBank | null>(null);
|
||||
const [showImportModal, setShowImportModal] = useState(false);
|
||||
const [showAudioModal, setShowAudioModal] = useState(false);
|
||||
const [selectedForAudio, setSelectedForAudio] = useState<string | null>(null);
|
||||
|
||||
const loadQuestions = async () => {
|
||||
try {
|
||||
@@ -67,17 +64,6 @@ export default function QuestionBankPage() {
|
||||
await loadQuestions();
|
||||
};
|
||||
|
||||
const handleAudioGenerate = (questionId: string) => {
|
||||
setSelectedForAudio(questionId);
|
||||
setShowAudioModal(true);
|
||||
};
|
||||
|
||||
const handleAudioSuccess = async () => {
|
||||
setShowAudioModal(false);
|
||||
setSelectedForAudio(null);
|
||||
await loadQuestions();
|
||||
};
|
||||
|
||||
const getQuestionTypeLabel = (type: QuestionBankType) => {
|
||||
const labels: Record<QuestionBankType, string> = {
|
||||
'multiple-choice': 'Opción Múltiple',
|
||||
@@ -311,7 +297,6 @@ export default function QuestionBankPage() {
|
||||
question={question}
|
||||
onEdit={() => handleEdit(question)}
|
||||
onDelete={() => handleDelete(question.id)}
|
||||
onGenerateAudio={() => handleAudioGenerate(question.id)}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
@@ -337,18 +322,6 @@ export default function QuestionBankPage() {
|
||||
onCancel={() => setShowImportModal(false)}
|
||||
/>
|
||||
)}
|
||||
|
||||
{/* Audio Generator Modal */}
|
||||
{showAudioModal && selectedForAudio && (
|
||||
<AudioGeneratorModal
|
||||
questionId={selectedForAudio}
|
||||
onSuccess={handleAudioSuccess}
|
||||
onCancel={() => {
|
||||
setShowAudioModal(false);
|
||||
setSelectedForAudio(null);
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user