<div class="home">
    <h1>Mon CV</h1>
    
</br>
<div class="homepanel">
    <div class="row w-100">
        <div class="hbox col-lg">
            <h1><i class="fas fa-puzzle-piece"></i> Sections</h1>
            <div class="cv-sections">

            <div class="row w-100">
            <select id="cv-section-selector" class="cv-selector">
                <option>Qui suis-je ?</option>
                <option>Contact</option>
                <option>Formations</option>
                <option>Diplomes & Certifications</option>
                <option>Passions et activités</option>
                <option>Ma recherche de stage</option>
            </select>
            </div>
            <div class="row w-100">
            <textarea id="cv-section-textarea" class="cv-textarea">

            </textarea>
            </div>

            <div class="row w-100">
                <button id="cv-section-save" class="cv-save col-lg-2"><i class="fa fa-save"></i> Sauvegarder</button>
            </div>
            <div class="row w-100">
                
                <p id="cv-section-info" class="cv-info" style="color:rgb(255, 48, 48)"></p>
            </div>
            
            </div>
        </div>
        <div class="hbox col-lg">
          
              
            <h1><i class="fa fa-gear"></i> Projets</h1>
            <div class="cv-sections">

                <div class="row w-100">
                <select id="cv-project-selector" class="col-lg-10 cv-selector">
                </select>
                <button id="cv-project-add" class="col-lg-1 cv-plus"><i class="fa fa-plus"></i></button>
                </div>
                
                <div class="row w-100">
                <textarea id="cv-project-textarea" class="cv-textarea">
    
                </textarea>
                </div>
                <div class="row cv-upload-section">
                    <p class="col-lg-8" style="font-size: 14px;">Image : <span id="cv-m-upload-name">Aucune image !</span></p>
                    <button id="cv-m-upload-btn" style="margin-left: 10%;" class="col-lg-2 cv-upload"><i class="fa fa-upload"></i> Upload</button>
                    <input id='cv-m-upload-file' type='file' hidden/>
                    
                </div>
    
                <div class="row w-100">
                    <button id="cv-project-save" class="cv-save col-lg-2"><i class="fa fa-save"></i> Sauvegarder</button>
                    <button id="cv-project-del" class="cv-del col-lg-2"><i class="fa fa-trash"></i> Effacer</button>
                </div>
                <div class="row w-100">
                
                    <p id="cv-project-info" class="cv-info" style="color:rgb(255, 48, 48)"></p>
                </div>
                
            </div>
            
        </div>
        
         
    </div>
    <div class="row w-100">
        <div class="hbox col-lg">
          
              
            <h1><i class="fa fa-signal"></i> Statistiques</h1>
            <p>Coming soon ...</p>
            
         </div>
    </div>
   

</div>

</div>

<dialog class="cv_addproject" id="cv-project-dialog">
    <h1><i class="fa fa-project-diagram"></i> Créer un projet</h1>
        <p>Nom du projet :</p>
        <input class="inp" id="cv-project-add-input" type="text">
        <div style="color: rgb(255, 76, 76);" id="cv-project-add-info"></div>
    </div>
    <div class="cv-upload-section">
        <p style="font-size: 14px;">Image : <span id="cv-upload-name">NULL_NAME</span> <button id="cv-upload-btn" style="margin-left: 10%;" class="cv-upload"><i class="fa fa-upload"></i> Upload</button></p>
        <input id='cv-upload-file' type='file' hidden/>
        
    </div>
    <button onclick="getPage('cv.html')" id="cv-project-add-close" class="cv_add_close">Annuler</button>
    <button id="cv-project-add-confirm" class="cv_add_confirm">Ajouter</button>

</dialog>



<script>
    if(typeof checkDelare == "undefined") {
        const checkDelare = true;

        const sectionTextArea = document.getElementById("cv-section-textarea")
        const sectionSelector = document.getElementById("cv-section-selector")
        const sectionSave = document.getElementById("cv-section-save")
        const sectionInfo = document.getElementById("cv-section-info")

        const projectTextArea = document.getElementById("cv-project-textarea")
        const projectSelector = document.getElementById("cv-project-selector")
        const projectSave = document.getElementById("cv-project-save")
        const projectInfo = document.getElementById("cv-project-info")
        const projectDelete = document.getElementById("cv-project-del")
        const projectAdd = document.getElementById("cv-project-add")
        const projectDialog = document.getElementById("cv-project-dialog") 
        const projectAddInput = document.getElementById("cv-project-add-input")
        const projectAddConfirm = document.getElementById("cv-project-add-confirm")
        const projectAddInfo = document.getElementById("cv-project-add-info")

        const projectUploadFile = document.getElementById("cv-upload-file")
        const projectUploadBtn = document.getElementById("cv-upload-btn")
        const projectUploadName = document.getElementById("cv-upload-name")

        const eprojectUploadFile = document.getElementById("cv-m-upload-file")
        const eprojectUploadBtn = document.getElementById("cv-m-upload-btn")
        const eprojectUploadName = document.getElementById("cv-m-upload-name")

        var sectionSelectedMD = null;
        var projectSelectedMD = null;

        loadText(sectionTextArea, "WHOAMI")
        getProjects(projectSelector)

        projectAddConfirm.addEventListener("click", () => {

            projectAddInfo.innerHTML = ""

            

            const refusedChar = ['\\','/' ,':' ,'*','?' ,'"','<','>','|']
            var wrongName = true;

            for(var char of refusedChar) {

                console.log(wrongName)

                if(projectAddInput.value.includes(char)) {
                    wrongName = false;

                } 
            }

            if(wrongName == true && projectAddInput.value != "" && projectAddInput.value != "WHOAMI" && projectAddInput.value != "CONTACT" && projectAddInput.value != "FORMATION" && projectAddInput.value != "DIPLOME" && projectAddInput.value != "LOBBIES" && projectAddInput.value != "FIND") {

                fetch('/cv', {
                method: 'POST',
                redirect: 'follow',
                headers: {
                    'Accept': 'application/json',
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify({"request":"add", "value": projectAddInput.value})
                })
                .then(response => response.json())
                .then(response => res(response))

                function res(response) {
                    if(response.result == "failed") {
                        content.innerHTML = ' <h1 style="color:red;"><i style="color:yellow; font-size: 2vw;" class="fa fa-warning"></i>  Erreur de chargement des données - Erreur : ' + response.content  + '</h1>'
                        console.log("FAILED")
                    
                    } else if(response.result == "success") {

                        if(response.content == "ERROR_NOT_PERMITTED") {
                            projectAddInfo.innerHTML = "Erreur, le fichier n'a pas été ajouté correctement !"

                        } else {
                            projectDialog.close()
                            getProjects(projectSelector)
                            loadText(projectTextArea, projectAddInput.value)
                            projectSelector.value = projectAddInput.value
                        }
                        
                    }

                }

                if(projectUploadFile.files.length > 0) {

                    const file_acc = new FormData();
                    file_acc.append("apic", projectUploadFile.files[0])

                    fetch('/upload', {
                    method: 'POST',
                    mode:"cors",
                    cache:"no-cache",
                    credentials:"same-origin",
                    headers: {
                        "uploadforproject": projectAddInput.value

                    },
                    referrerPolicy:"no-referrer",
                    redirect: 'follow',
                    body: file_acc
                }).then(response => response.json())
                .then(response => resupload(response))

                function resupload(response) {


                    if(response.result == "ERROR") {
                        projectInfo.innerHTML = "L'image n'a pas été upload !"

                    
                    } 

                    

                } 
                   
                }




            } else {

                projectAddInfo.innerHTML = "Ce nom n'est pas autorisé !"
            }
        })

        projectAdd.addEventListener("click", () => {

            projectDialog.showModal()

            projectAddInput.value = ""
            projectUploadName.innerHTML = "Aucune image."
            projectUploadFile.value = null;
        

        })

        projectUploadFile.addEventListener("change", () => {

            projectUploadName.innerHTML = projectUploadFile.files[0].name

        })


        projectUploadBtn.addEventListener("click", () => {

            projectUploadFile.click()
        })

        eprojectUploadBtn.addEventListener("click", () => {

            eprojectUploadFile.click()
        })

        eprojectUploadFile.addEventListener("change", () => {

            eprojectUploadName.innerHTML = eprojectUploadFile.files[0].name

                if(eprojectUploadFile.files.length > 0) {

                const file_acc = new FormData();
                file_acc.append("apic", eprojectUploadFile.files[0])

                fetch('/upload', {
                    method: 'POST',
                    mode:"cors",
                    cache:"no-cache",
                    credentials:"same-origin",
                    headers: {
                        "uploadforproject": projectSelector.value

                    },
                    referrerPolicy:"no-referrer",
                    redirect: 'follow',
                    body: file_acc
                }).then(response => response.json())
                .then(response => resupload(response))

                function resupload(response) {


                    if(response.result == "ERROR") {
                        projectInfo.innerHTML = "L'image n'a pas été upload !"


                    } else {

                        projectInfo.innerHTML = "<span style='color:rgb(130, 255, 163); '>L'image a été correctement upload !</span>"
                    }



                } 

            }



        })
        

        projectDelete.addEventListener("click", () => {

            const opt = projectSelector.value

            deleteProject(opt)

        })

        sectionSelector.addEventListener("change", () => {
            const opt = sectionSelector.value

            if(opt == "Qui suis-je ?") {
                loadText(sectionTextArea, "WHOAMI")
                
            } else if(opt == "Contact") {
                loadText(sectionTextArea, "CONTACT")
         
            } else if(opt == "Formations") {
                loadText(sectionTextArea, "FORMATION")
               
            } else if(opt == "Diplomes & Certifications") {
                loadText(sectionTextArea, "DIPLOME")
             
            } else if(opt == "Passions et activités") {
                loadText(sectionTextArea, "LOBBIES")
               
            } else if(opt == "Ma recherche de stage") {
                loadText(sectionTextArea, "FIND")
              
            }

        })

        


        projectSelector.addEventListener("change", () => {
            const opt = projectSelector.value

            loadText(projectTextArea, opt)

        })

        sectionSave.addEventListener("click", () => {

            sectionInfo.innerHTML = ""

       

            fetch('/cv', {
                method: 'POST',
                redirect: 'follow',
                headers: {
                    'Accept': 'application/json',
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify({"request":"set", "value": sectionTextArea.value, "type": sectionSelectedMD})
                })
                .then(response => response.json())
                .then(response => res(response))

                function res(response) {
                    if(response.result == "failed") {
                        content.innerHTML = ' <h1 style="color:red;"><i style="color:yellow; font-size: 2vw;" class="fa fa-warning"></i>  Erreur de chargement des données - Erreur : ' + response.content  + '</h1>'
                        console.log("FAILED")
                    
                    } else if(response.result == "success") {

                        if(response.content == "ERROR_NOT_PERMITTED") {
                            sectionInfo.innerHTML = "Erreur, le fichier n'a pas été sauvegardé correctement !"

                        } else {
                            sectionInfo.innerHTML = "<span style='color:rgb(130, 255, 163); '>Le fichier a été sauvegardé avec succès !</span>"

                        }
                        
                    }

                }

        })

        projectSave.addEventListener("click", () => {

        projectInfo.innerHTML = ""



        fetch('/cv', {
            method: 'POST',
            redirect: 'follow',
            headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json'
            },
            body: JSON.stringify({"request":"set", "value": projectTextArea.value, "type": projectSelectedMD})
            })
            .then(response => response.json())
            .then(response => res(response))

            function res(response) {
                if(response.result == "failed") {
                    content.innerHTML = ' <h1 style="color:red;"><i style="color:yellow; font-size: 2vw;" class="fa fa-warning"></i>  Erreur de chargement des données - Erreur : ' + response.content  + '</h1>'
                    console.log("FAILED")
                
                } else if(response.result == "success") {

                    if(response.content == "ERROR_NOT_PERMITTED") {
                        projectInfo.innerHTML = "Erreur, le fichier n'a pas été sauvegardé correctement !"

                    } else {
                        projectInfo.innerHTML = "<span style='color:rgb(130, 255, 163); '>Le fichier a été sauvegardé avec succès !</span>"

                    }
                    
                }

            }

        })


        loadText(sectionTextArea, "WHOAMI")
        
        function loadText(textArea, requestElement) {

            sectionSelectedMD = requestElement
            projectSelectedMD = projectSelector.value
            

                fetch('/cv', {
                    method: 'POST',
                    redirect: 'follow',
                    headers: {
                        'Accept': 'application/json',
                        'Content-Type': 'application/json'
                    },
                    body: JSON.stringify({"request":"get", "value": requestElement})
                })
                .then(response => response.json())
                .then(response => res(response))

                function res(response) {
                    if(response.result == "failed") {
                        content.innerHTML = ' <h1 style="color:red;"><i style="color:yellow; font-size: 2vw;" class="fa fa-warning"></i>  Erreur de chargement des données - Erreur : ' + response.content  + '</h1>'
                        console.log("FAILED")
                    
                    } else if(response.result == "success") {

                        textArea.value = response.content
                        
                    }

                }
            


        }

        function getProjects(selector) {

            fetch('/cv', {
                    method: 'POST',
                    redirect: 'follow',
                    headers: {
                        'Accept': 'application/json',
                        'Content-Type': 'application/json'
                    },
                    body: JSON.stringify({"request":"get-projects"})
                })
                .then(response => response.json())
                .then(response => res(response))

                function res(response) {
                    if(response.result == "failed") {
                        content.innerHTML = ' <h1 style="color:red;"><i style="color:yellow; font-size: 2vw;" class="fa fa-warning"></i>  Erreur de chargement des données - Erreur : ' + response.content  + '</h1>'
                        console.log("FAILED")
                    
                    } else if(response.result == "success") {

                        const projectList = response.content
                        var projectSelectorInner = new Array();

                        for(var projet of projectList) {

                            projectSelectorInner.push("<option>" + projet + "</option>")
                         
                        }

                        if(projectList.length == 0) {

                            projectInfo.innerHTML = "<span style='color: white;'>Aucun projet</span>"
                            projectTextArea.innerHTML = 'Aucun projet n\'est disponible'
                        }
                        

                        selector.innerHTML = projectSelectorInner.join("")
                        loadText(projectTextArea, selector.value)
                    }

                }
            
                        

        }

        function deleteProject(opt) {

                fetch('/cv', {
                    method: 'POST',
                    redirect: 'follow',
                    headers: {
                        'Accept': 'application/json',
                        'Content-Type': 'application/json'
                    },
                    body: JSON.stringify({"request":"del", "value": opt})
                })
                .then(response => response.json())
                .then(response => res(response))

                function res(response) {
                    if(response.result == "failed") {
                        content.innerHTML = ' <h1 style="color:red;"><i style="color:yellow; font-size: 2vw;" class="fa fa-warning"></i>  Erreur de chargement des données - Erreur : ' + response.content  + '</h1>'
                        console.log("FAILED")
                    
                    } else if(response.result == "success") {

                        if(response.content == "ERROR_NOT_PERMITTED") {
                            projectInfo.innerHTML = "Erreur, le fichier n'a pas été supprimé correctement !"

                        } else {
                            projectInfo.innerHTML = "<span style='color:rgb(130, 255, 163); '>Le fichier a été supprimé avec succès !</span>"

                        }

                        getProjects(projectSelector)
                        
                    }

                }

        }
    }
</script>


<!-- Style-->
<style>

.cv_addproject {

border-radius: 1vw;
border-color: transparent;
background-color: rgb(80, 80, 80);
color: white;
text-align: center;

}

.cv_add_close {

border-radius: 1vw;
border-color: rgb(255, 48, 48);
border-width: 1%;
border-style: solid;
color: white;
background-color: transparent;
transition: all 0.2s ease 0s;
margin: 0.5vw;
padding: 0.5vw;
font-size: 1vw;
}

.cv_add_close:hover {
box-shadow: 1px 1px 10px rgb(255, 48, 48);
background-color: rgb(255, 48, 48);
color: black;
}

.cv_add_close:active {
box-shadow: none;

}

.cv_add_confirm {

border-radius: 1vw;
border-color: rgb(0, 174, 255);
border-width: 1%;
border-style: solid;
color: white;
background-color: transparent;
transition: all 0.2s ease 0s;
margin: 0.5vw;
padding: 0.5vw;
font-size: 1vw;

}

.cv_add_confirm:hover {
box-shadow: 1px 1px 10px rgb(0, 174, 255);
background-color: rgb(0, 174, 255);
color: black;
}

.cv_add_confirm:active {
box-shadow: none;

}

.inp {

border-style: hidden;
border-radius: 1vw;
padding: 0.2vw;
padding-left: 1vw;
transition: all 0.2s ease 0s;
margin-bottom: 0.5vw;
width: 100%;


}



.inp:hover {

box-shadow: 2px 2px 5px rgba(255, 255, 255, 0.477) ;

}


.inp:focus {

box-shadow: 5px 5px 5px rgba(0, 174, 255, 0.477) ;

}


.cv-info {

    margin-top: 5%;
}

.cv-upload-section {

    align-items: center;
    margin-top: 3%;

}

.cv-selector {

    border-radius: 1vw;
    border-color: rgb(0, 174, 255);
    border-width: 1%;
    border-style: solid;
    color: white;
    background-color: transparent;
    transition: all 0.2s ease 0s;
    font-size: 0.7vw;
    padding: 0.5vw;
    margin-bottom: 3%;
    



}

.cv-selector:hover {
    box-shadow: 1px 1px 10px rgb(0, 174, 255);
    background-color: rgb(0, 174, 255);
    color: black;
}

.cv-selector:active {
    box-shadow: none;

}

.cv-selector option {

    background-color: rgb(80, 80, 80);
    color: white;
}

.cv-upload {

border-radius: 1vw;
border-color: rgb(0, 174, 255);
border-width: 1%;
border-style: solid;
color: white;
background-color: transparent;
transition: all 0.2s ease 0s;
font-size: 0.7vw;
padding: 0.5vw;

}

.cv-upload:hover {
box-shadow: 1px 1px 10px rgb(0, 174, 255);
background-color: rgb(0, 174, 255);
color: black;
}

.cv-upload:active {
box-shadow: none;

}

.cv-save{

    border-radius: 1vw;
    border-color: rgb(0, 174, 255);
    border-width: 1%;
    border-style: solid;
    color: white;
    background-color: transparent;
    transition: all 0.2s ease 0s;
    font-size: 0.7vw;
    padding: 0.5vw;
    margin-top: 3%;
    margin-right: 3%;



}

.cv-save:hover {
    box-shadow: 1px 1px 10px rgb(0, 174, 255);
    background-color: rgb(0, 174, 255);
    color: black;
}

.cv-save:active {
    box-shadow: none;

}

.cv-plus {

border-radius: 1vw;
border-color: rgb(0, 174, 255);
border-width: 1%;
border-style: solid;
color: white;
background-color: transparent;
transition: all 0.2s ease 0s;
font-size: 0.7vw;
padding: 0.5vw;
margin-bottom: 3%;
margin-left: 2%;

}

.cv-plus:hover {
box-shadow: 1px 1px 10px rgb(0, 174, 255);
background-color: rgb(0, 174, 255);
color: black;
}

.cv-plus:active {
box-shadow: none;

}


.cv-del {

    border-radius: 1vw;
    border-color: rgb(255, 48, 48);
    border-width: 1%;
    border-style: solid;
    color: white;
    background-color: transparent;
    transition: all 0.2s ease 0s;
    font-size: 0.7vw;
    padding: 0.5vw;
    margin-top: 3%;
    margin-right: 3%;



}

.cv-del:hover {
    box-shadow: 1px 1px 10px rgb(255, 48, 48);
    background-color: rgb(255, 48, 48);
    color: black;
}

.cv-del:active {
    box-shadow: none;

}

.cv-textarea {

    border-radius: 1vw;
    padding: 3%;
    color: black;
    height: 15vw;
    
}


.cv-sections {

    padding: 2% !important;
}


.hbox h1 {

    font-size: large;

}

table  {
    color: white;
    
}



.hbox {
    
    margin: 1%;
    padding: 1%;
    background-color: rgb(80, 80, 80);
    border-radius: 1vw;
    box-shadow: 5px 5px 5px rgba(80, 80, 80, 0.477) ;

  }

</style>