import React, {Component} from 'react'; import ProgressBox from './ProgressBox'; import QuestionBox from './QuestionBox'; // import './App.css'; import 'material-design-icons-iconfont/dist/material-design-icons.css'; class App extends Component { state = { config: null, question: null, answers: [], message: '', isLastQuestion: false, currentQuestionIndex: 0, directories: [], uniqueIdInput: '' }; api = { showMessage: (message) => { this.setState({ message }); }, updateState: (newState) => { this.setState(newState); } }; handleUniqueIdChange = (event) => { this.setState({ uniqueIdInput: event.target.value }); }; handleUniqueIdSubmit = (event) => { event.preventDefault(); this.getAnswers(this.state.uniqueIdInput); }; /// SI /?id=eddd /// ( sans /test_sub_name/?id=eddd -> récupérer currentPath à partir de l'id ) getAnswers = async (uniqueId) => { const url = `/api/getanswers/`; const headers = Object.assign( {'Content-Type': 'application/json', 'X-Unique-ID': uniqueId}, {} ); console.error(uniqueId) try { const response = await fetch(url, { method: 'POST', headers: headers, }); // if (!response.ok) { // throw new Error(`HTTP error! status: ${response.status}`); // } const data = await response.json(); const find_questionnaire_path=data[0].currentPath console.log('---- Données reçues (async getAnswers) :\n', data); console.log(find_questionnaire_path) window.location.href = window.location.origin + find_questionnaire_path + "?id=" + uniqueId; } catch (error) { console.error('Erreur lors de la récupération des réponses :', error); this.api.showMessage('Erreur lors de la récupération des réponses Vérifier l\'identifiant unique.'); } }; componentDidMount() { const currentPath = window.location.pathname; console.log(currentPath); let config; let jsonData; try { if (currentPath === "/") { config = require('./questionnaires/Questionful.json'); // this.api.showMessage('GO'); /// SI /?id=eddd /// ( sans /test_sub_name/?id=eddd -> récupérer currentPath à partir de l'id ) const searchParams = new URLSearchParams(window.location.search); const idParam = searchParams.get('id'); if (idParam) { this.getAnswers(idParam); } } else { config = require('./questionnaires' + currentPath + '/Questionful.json'); const pathSegments = currentPath.split('/').filter(segment => segment !== ''); const lastSegment = pathSegments[pathSegments.length - 1] || 'Accueil'; document.title = lastSegment.charAt(0).toUpperCase() + lastSegment.slice(1) + " ( questionnaire )"; } } catch (error) { console.error("Erreur lors du chargement de la configuration :", error); this.api.showMessage('Error! Failed to load configuration.'); return; } this.setState({ config }, () => { if (!this.state.config) { this.api.showMessage('Error! No configuration provided.'); return; } // Récupérer l'uniqueId depuis config const { uniqueId } = this.state.config; console.log("// uniqueId "+uniqueId) ///// undefined ! // //// not set in config, saved in data.json THEN user client parameter // const searchParams = new URLSearchParams(window.location.search); // const idParam = searchParams.get('id'); // const uniqueId_state = idParam; // const questionParam = searchParams.get('question'); // console.log("uniqueId_state // "+uniqueId_state) // if (idParam) { // jsonData = require('./data.json'); // const filteredData = jsonData.filter(item => item.uniqueId === uniqueId_state); // if (filteredData.length === 0) { // console.error(`Aucune entrée trouvée avec l'uniqueId: ${uniqueId}`); // // return res.status(404).send('Aucune donnée trouvée pour cet identifiant unique.'); // } else { // console.warn("// uniqueId filteredData OK (read, loaded)") // // console.warn(filteredData) // // return filteredData // } // } // else // Si uniqueId existe, récupérer les réponses if (uniqueId) { /// This works ? using api server ? alert("getone") this.getAnswers(uniqueId); } if (!this.state.question) { this.api.updateState({ question: this.state.config.questions[0] }); } // Mettre à jour les variables CSS this.updateCssVariables(); }); if (currentPath === "/") { this.fetchDirectories(); } else { // Création de la boîte d'information const infoBox = document.createElement('div'); infoBox.id = 'info-box'; infoBox.innerHTML = `
*/}
Questionnaires