10/12/2024 - 22h
parent
7041e28a94
commit
6916a25595
|
@ -91,6 +91,7 @@
|
|||
"react": "^18.2.0",
|
||||
"react-apexcharts": "^1.4.0",
|
||||
"react-app-rewired": "^2.2.1",
|
||||
"react-audio-voice-recorder": "^2.2.0",
|
||||
"react-big-calendar": "^1.8.4",
|
||||
"react-bootstrap": "^2.1.2",
|
||||
"react-burger-menu": "^3.0.6",
|
||||
|
@ -2999,6 +3000,20 @@
|
|||
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz",
|
||||
"integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ=="
|
||||
},
|
||||
"node_modules/@ffmpeg/ffmpeg": {
|
||||
"version": "0.11.6",
|
||||
"resolved": "https://registry.npmjs.org/@ffmpeg/ffmpeg/-/ffmpeg-0.11.6.tgz",
|
||||
"integrity": "sha512-uN8J8KDjADEavPhNva6tYO9Fj0lWs9z82swF3YXnTxWMBoFLGq3LZ6FLlIldRKEzhOBKnkVfA8UnFJuvGvNxcA==",
|
||||
"dependencies": {
|
||||
"is-url": "^1.2.4",
|
||||
"node-fetch": "^2.6.1",
|
||||
"regenerator-runtime": "^0.13.7",
|
||||
"resolve-url": "^0.2.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12.16.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@floating-ui/core": {
|
||||
"version": "1.5.3",
|
||||
"resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.3.tgz",
|
||||
|
@ -17485,6 +17500,11 @@
|
|||
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
|
||||
"integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
|
||||
},
|
||||
"node_modules/is-url": {
|
||||
"version": "1.2.4",
|
||||
"resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
|
||||
"integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww=="
|
||||
},
|
||||
"node_modules/is-weakmap": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
|
||||
|
@ -26056,6 +26076,28 @@
|
|||
"semver": "bin/semver"
|
||||
}
|
||||
},
|
||||
"node_modules/react-audio-visualize": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/react-audio-visualize/-/react-audio-visualize-1.2.0.tgz",
|
||||
"integrity": "sha512-rfO5nmT0fp23gjU0y2WQT6+ZOq2ZsuPTMphchwX1PCz1Di4oaIr6x7JZII8MLrbHdG7UB0OHfGONTIsWdh67kQ==",
|
||||
"peerDependencies": {
|
||||
"react": ">=16.2.0",
|
||||
"react-dom": ">=16.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/react-audio-voice-recorder": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/react-audio-voice-recorder/-/react-audio-voice-recorder-2.2.0.tgz",
|
||||
"integrity": "sha512-Hq+143Zs99vJojT/uFvtpxUuiIKoLbMhxhA7qgxe5v8hNXrh5/qTnvYP92hFaE5V+GyoCXlESONa0ufk7t5kHQ==",
|
||||
"dependencies": {
|
||||
"@ffmpeg/ffmpeg": "^0.11.6",
|
||||
"react-audio-visualize": "^1.1.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">=16.2.0",
|
||||
"react-dom": ">=16.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/react-avatar": {
|
||||
"version": "3.10.0",
|
||||
"resolved": "https://registry.npmjs.org/react-avatar/-/react-avatar-3.10.0.tgz",
|
||||
|
@ -37078,6 +37120,17 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"@ffmpeg/ffmpeg": {
|
||||
"version": "0.11.6",
|
||||
"resolved": "https://registry.npmjs.org/@ffmpeg/ffmpeg/-/ffmpeg-0.11.6.tgz",
|
||||
"integrity": "sha512-uN8J8KDjADEavPhNva6tYO9Fj0lWs9z82swF3YXnTxWMBoFLGq3LZ6FLlIldRKEzhOBKnkVfA8UnFJuvGvNxcA==",
|
||||
"requires": {
|
||||
"is-url": "^1.2.4",
|
||||
"node-fetch": "^2.6.1",
|
||||
"regenerator-runtime": "^0.13.7",
|
||||
"resolve-url": "^0.2.1"
|
||||
}
|
||||
},
|
||||
"@floating-ui/core": {
|
||||
"version": "1.5.3",
|
||||
"resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.3.tgz",
|
||||
|
@ -47967,6 +48020,11 @@
|
|||
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
|
||||
"integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
|
||||
},
|
||||
"is-url": {
|
||||
"version": "1.2.4",
|
||||
"resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
|
||||
"integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww=="
|
||||
},
|
||||
"is-weakmap": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
|
||||
|
@ -54466,6 +54524,20 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"react-audio-visualize": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/react-audio-visualize/-/react-audio-visualize-1.2.0.tgz",
|
||||
"integrity": "sha512-rfO5nmT0fp23gjU0y2WQT6+ZOq2ZsuPTMphchwX1PCz1Di4oaIr6x7JZII8MLrbHdG7UB0OHfGONTIsWdh67kQ=="
|
||||
},
|
||||
"react-audio-voice-recorder": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/react-audio-voice-recorder/-/react-audio-voice-recorder-2.2.0.tgz",
|
||||
"integrity": "sha512-Hq+143Zs99vJojT/uFvtpxUuiIKoLbMhxhA7qgxe5v8hNXrh5/qTnvYP92hFaE5V+GyoCXlESONa0ufk7t5kHQ==",
|
||||
"requires": {
|
||||
"@ffmpeg/ffmpeg": "^0.11.6",
|
||||
"react-audio-visualize": "^1.1.3"
|
||||
}
|
||||
},
|
||||
"react-avatar": {
|
||||
"version": "3.10.0",
|
||||
"resolved": "https://registry.npmjs.org/react-avatar/-/react-avatar-3.10.0.tgz",
|
||||
|
|
|
@ -86,6 +86,7 @@
|
|||
"react": "^18.2.0",
|
||||
"react-apexcharts": "^1.4.0",
|
||||
"react-app-rewired": "^2.2.1",
|
||||
"react-audio-voice-recorder": "^2.2.0",
|
||||
"react-big-calendar": "^1.8.4",
|
||||
"react-bootstrap": "^2.1.2",
|
||||
"react-burger-menu": "^3.0.6",
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
|
||||
<url>
|
||||
<loc>https://www.mysy-training.com/Display-Detail-Article/signature-electronique-et-organismes-de-formation</loc>
|
||||
<lastmod>2024-11-38T11:35:41+00:00</lastmod>
|
||||
<lastmod>2024-11-08T11:35:41+00:00</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>1.0000</priority>
|
||||
</url>
|
||||
|
@ -99,6 +99,12 @@
|
|||
</url>
|
||||
|
||||
|
||||
<url>
|
||||
<loc>https://www.mysy-training.com/Display-Detail-Article/comment-choisir-un-logiciel-de-gestion-adapte-a-votre-centre-de-formation---261</loc>
|
||||
<lastmod>2024-12-05T11:35:41+00:00</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>1.0000</priority>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://www.mysy-training.com/Connexion</loc>
|
||||
|
@ -122,8 +128,4 @@
|
|||
<priority>1.0000</priority>
|
||||
</url>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</urlset>
|
|
@ -53,7 +53,7 @@ import TestUrl_New from "./pages/testurl_new";
|
|||
import QuiSommesNous_v3 from "./pages/quisommesnous_v3";
|
||||
import Fonctionnalites from "./pages/fonctionnalite";
|
||||
import Test_Drag_Drop from "./pages/test_drag_drop";
|
||||
|
||||
|
||||
import Test_Drag_Drop2 from "./pages/test_dnd";
|
||||
|
||||
import ESign from "./pages/eSigne";
|
||||
|
|
|
@ -109,7 +109,7 @@ const Fonctionnalites_V1 = () => {
|
|||
return (
|
||||
<div className="fonctionnalite_v1">
|
||||
<Helmet>
|
||||
<title>Gestion Administrative, CRM, LMS, Marketplace, découvrez les Fonctionnalités et Modules du logiciel de gestion des organismes de formation</title>
|
||||
<title>Logiciel de gestion pour Organisme de formation : Gestion Administrative, CRM, LMS, Marketplace, découvrez les Fonctionnalités et Modules du logiciel de gestion des organismes de formation</title>
|
||||
<meta name="description" content="Avec notre logiciel Tout-en-Un, Nous automatisons les étapes Qualiopi (Inscription, Documents personnalisés, Les émargements sécurisés, Les évaluations, etc). Votre Le bilan pédagogique et financier est généré automatiquement." />
|
||||
<meta name="robots" content="index,follow" />
|
||||
<meta name="title" content="Gestion Administrative, CRM, LMS, Marketplace, découvrez les Fonctionnalités et Modules du logiciel de gestion des organismes de formation" />
|
||||
|
|
|
@ -218,7 +218,7 @@ const QuiSommesNous_v4 = () => {
|
|||
</Helmet>
|
||||
<Header />
|
||||
|
||||
<h1 style={{ fontSize: '0.1px', opacity: '0', height: '0.1px' }}>Éditeur français de logiciels de gestion dédiés aux organismes de formation, nous proposons des solutions complètes couvrant la gestion administrative, le CRM, l’e-learning et les marketplaces. Nos outils sont conçus pour accompagner les organismes de formation dans l’obtention et le maintien de la certification QUALIOPI, en toute sérénité. Grâce à nos solutions abordables, nous facilitons l’automatisation de vos processus : inscriptions, évaluations, émargement (via QR code), gestion des check-lists QUALIOPI, personnalisation et édition de documents, gestion des formateurs, et création de catalogues de formations sur mesure</h1>
|
||||
<h1 style={{ fontSize: '0.1px', opacity: '0', height: '0.1px' }}>Éditeur français de logiciels de gestion dédiés aux organismes de formation, nous proposons des solutions complètes couvrant la gestion administrative, le CRM, l'e-learning et les marketplaces. Nos outils sont conçus pour accompagner les organismes de formation dans l'obtention et le maintien de la certification QUALIOPI, en toute sérénité. Grâce à nos solutions abordables, nous facilitons l'automatisation de vos processus : inscriptions, évaluations, émargement (via QR code), gestion des check-lists QUALIOPI, personnalisation et édition de documents, gestion des formateurs, et création de catalogues de formations sur mesure</h1>
|
||||
{/*** GESTION Contact */}
|
||||
<Dialog
|
||||
open={Dialog_contact_open}
|
||||
|
|
|
@ -63,6 +63,8 @@ import {
|
|||
gridVisibleColumnFieldsSelector,
|
||||
} from '@mui/x-data-grid';
|
||||
|
||||
import { AudioRecorder, useAudioRecorder } from 'react-audio-voice-recorder';
|
||||
|
||||
//import ContextMenu from 'react-jsx-context-menu';
|
||||
import { ContextMenu, ContextMenuTrigger } from "react-contextmenu";
|
||||
import * as XLSX from 'xlsx';
|
||||
|
@ -852,7 +854,7 @@ const TestUrl_New = (props) => {
|
|||
|
||||
const [visibleColumns, setVisibleColumns] = React.useState();
|
||||
|
||||
|
||||
|
||||
/*const {
|
||||
transcript,
|
||||
listening,
|
||||
|
@ -864,6 +866,64 @@ const TestUrl_New = (props) => {
|
|||
return <span>Browser doesn't support speech recognition.</span>;
|
||||
}*/
|
||||
|
||||
const recorderControls = useAudioRecorder(
|
||||
{
|
||||
noiseSuppression: true,
|
||||
echoCancellation: true,
|
||||
},
|
||||
(err) => console.table(err) // onNotAllowedOrFound
|
||||
);
|
||||
|
||||
|
||||
const addAudioElement = (blob) => {
|
||||
const url = URL.createObjectURL(blob);
|
||||
|
||||
|
||||
const audio = document.createElement('audio');
|
||||
|
||||
audio.src = url;
|
||||
audio.controls = true;
|
||||
|
||||
document.body.appendChild(audio);
|
||||
|
||||
|
||||
setblob_recorded_file(audio.attributes.src.nodeValue);
|
||||
|
||||
};
|
||||
|
||||
async function send_audi_blob(e) {
|
||||
|
||||
const audioBlob = await fetch(blob_recorded_file).then((r) => r.blob());
|
||||
const audiofile = new File([audioBlob], "audiofile.mp3", {
|
||||
type: "audio/mp3",
|
||||
});
|
||||
|
||||
var formData = new FormData();
|
||||
formData.append("file", audiofile);
|
||||
|
||||
fetch(
|
||||
process.env.REACT_APP_API_URL + "myclass/api/Get_Audio_File/",
|
||||
{
|
||||
method: 'POST',
|
||||
body: formData,
|
||||
}
|
||||
).then((response) => response.json())
|
||||
.then((result) => {
|
||||
//console.log('Success:', result['message']);
|
||||
//setisimgSelected(false);
|
||||
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error('Error - send_audi_blob:');
|
||||
// setisimgSelected(true);
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
const [blob_recorded_file, setblob_recorded_file] = React.useState("");
|
||||
|
||||
return (
|
||||
<div className="testurl_new">
|
||||
<Helmet>
|
||||
|
@ -1055,6 +1115,26 @@ const TestUrl_New = (props) => {
|
|||
|
||||
<button onClick={display_data}> display data </button>
|
||||
|
||||
|
||||
<div>
|
||||
<h2> enregistrement audio </h2> <br />
|
||||
|
||||
<AudioRecorder
|
||||
onRecordingComplete={(blob) => addAudioElement(blob)}
|
||||
recorderControls={recorderControls}
|
||||
// downloadOnSavePress={true}
|
||||
downloadFileExtension="mp3"
|
||||
showVisualizer={true}
|
||||
/>
|
||||
<br />
|
||||
<button onClick={recorderControls.stopRecording}>Stop recording</button>
|
||||
<br />
|
||||
|
||||
file = {blob_recorded_file} <br/>
|
||||
<button onClick={send_audi_blob}> envoyer fichier</button>
|
||||
|
||||
</div>
|
||||
|
||||
<h2> manip datagrid </h2>
|
||||
<div style={{ height: 300, width: '100%' }}>
|
||||
<DataGrid
|
||||
|
|
Loading…
Reference in New Issue