{"id":116,"date":"2024-05-22T14:20:19","date_gmt":"2024-05-22T12:20:19","guid":{"rendered":"https:\/\/spgoo.org\/?page_id=116"},"modified":"2024-05-22T14:33:13","modified_gmt":"2024-05-22T12:33:13","slug":"exploitation","status":"publish","type":"page","link":"https:\/\/spgoo.org\/?page_id=116","title":{"rendered":"Exploitation"},"content":{"rendered":"<script type='text\/javascript'>\nvar id = \"91\";<\/script>\n<script type='text\/javascript' src='https:\/\/spgoo.org\/wp-content\/uploads\/winp-css-js\/91.js?ver=1716380732'><\/script>\n\n\n<script type='text\/javascript'>\nvar id = \"93\";<\/script>\n<script type='text\/javascript' src='https:\/\/spgoo.org\/wp-content\/uploads\/winp-css-js\/93.js?ver=1716363146'><\/script>\n\n\n<script type='text\/javascript'>\nvar id = \"95\";<\/script>\n<script type='text\/javascript' src='https:\/\/spgoo.org\/wp-content\/uploads\/winp-css-js\/95.js?ver=1716363170'><\/script>\n\n\n<link ref=\"stylesheet\" type=\"text\/css\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.4.0\/css\/all.min.css\" \/>\r\n<script type=\"text\/javascript\" src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.4.0\/js\/all.min.js\"><\/script>\r\n\r\n<script type=\"text\/javascript\" charset=\"UTF-8\" src=\"https:\/\/cdn.jsdelivr.net\/npm\/jsxgraph\/distrib\/jsxgraphcore.js\"><\/script>\r\n<link rel=\"stylesheet\" type=\"text\/css\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/jsxgraph\/distrib\/jsxgraph.css\" \/>\r\n\r\n\r\n<link rel=\"stylesheet\" type=\"text\/css\" href=\".\/personnalisation\/css\/cbm_style.css\" \/>\r\n\r\n<script>\r\nwindow.MathJax = {\r\n  tex: {\r\n    inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\r\n    displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ],\r\n    packages: ['base', 'ams']\r\n  },\r\n  options: {\r\n    ignoreHtmlClass: 'tex2jax_ignore',\r\n    processHtmlClass: 'tex2jax_process'\r\n  }\r\n};\r\n<\/script>  \r\n<script type=\"text\/javascript\" id=\"MathJax-script\"  src=\"https:\/\/cdn.jsdelivr.net\/npm\/mathjax@3\/es5\/tex-mml-chtml.js\"><\/script>\r\n    \r\n    <!-- --------------------------------------------------------------------------------------->\r\n    <!-- -----                      FENETRE PRINCIPALE                                ---------->\r\n    <!-- --------------------------------------------------------------------------------------->\r\n    <div id=\"box0\" class=\"jxgbox\" style=\"width:1230px; height:150px;\"><\/div>\r\n    <!-- <div style=\"height:800px;overflow-y: auto; overflow-x: auto;background-color: #E5E4E2;\"> -->\r\n        <div id=\"resultats\" style=\"width:1230px; height:800px;overflow-y: auto; overflow-x: auto;background-color: #E5E4E2;\" > <\/div>\r\n    <!-- <\/div> -->\r\n    <aside>\r\n        <div id=\"box4\" class=\"jxgbox\" style=\"width:300px; height:950px;\"><\/div>\r\n    <\/aside>  \r\n    <div id=\"box6\" class=\"jxgbox\" style=\"width:1220px; height:100px;display:none\"><\/div>\r\n\r\n\r\n    <!-- --------------------------------------------------------------------------------------->\r\n    <!-- -----                      FENETRE DE SAISIE DES PONDERATIONS                ---------->\r\n    <!-- --------------------------------------------------------------------------------------->\r\n    <div id=\"mydivPonderations\" class=\"fen_arrondie\" style=\"opacity: 1;width:300px;margin-bottom:10px;display:none\" >\r\n        <div id=\"mydivPonderationsheader\" class=\"fen_arrondie\" style=\"height:70px;\">\r\n            &#8212; Fen\u00eatre d&#8217;application des actions &#8212; \r\n            <span id=\"titre_commentaire\" ><\/span>\r\n            <button type=\"button\" class=\"close\" onclick=\"closeModal('mydivPonderations');\" data-dismiss=\"modal\" aria-label=\"Close\">\r\n              <span aria-hidden=\"true\">\u00d7<\/span>\r\n            <\/button>\r\n        <\/div>\r\n        <div class=\"modele_local_Comments fen_arrondie\" id=\"div_corps_Comments\" \r\n        style=\"background-color:#aaa9a8;color:#130b8c;padding:2px 0px 10px 2px;margin:-15px 0px 0px 0px\">\r\n            <div class=\"row\">\r\n                <div class=\"col-sm-12\">\r\n                    <label class=\"form-check-label\" id=\"action_identifiant\">Contenu :<\/label>\r\n                <\/div>\r\n            <\/div>\t\r\n            <div class=\"row\">\r\n                <div class=\"col-sm-5\">\r\n                    <label class=\"form-check-label\" >$Action :$<\/label>\r\n                <\/div>\r\n                <div class=\"col-sm-5\">\r\n                    <label class=\"form-check-label\" id=\"action_origine\">Contenu :<\/label>\r\n                <\/div>\r\n            <\/div>\t\r\n            <hr>\t\r\n            <div class=\"row\">\r\n                <div class=\"col-sm-12\" style=\"text-align:center;\">\r\n                    <label class=\"form-check-label\">D\u00e9finition des bornes du seuil<\/label>\r\n                <\/div>\r\n            <\/div >\r\n            <div class=\"row\">\r\n                <div class=\"col-sm-12\" style=\"text-align:center;\">\r\n                    <input type=\"checkbox\" checked\/>\r\n                    <input type=\"number\" id=\"input_seuil_inf\" value=\"\" style=\"width:70px;\"\/>\r\n                    <label class=\"form-check-label\" style=\"display:inner-block;\" id=\"action_seuil\"><\/label>\r\n                    <input type=\"number\" id=\"input_seuil_sup\" value=\"\" style=\"width:70px;\"\/>\r\n                <\/div>\r\n            <\/div>\t\r\n            <hr>\t\t     \r\n            <div class=\"row\">\r\n                <div class=\"col-sm-12\" style=\"text-align:center;\">\r\n                    <label class=\"form-check-label\" >Position de la bulle dans la s\u00e9quence<\/label>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"row\">\r\n                <div class=\"col-sm-12\" style=\"text-align:center;\">\r\n                    <input type=\"checkbox\" checked\/>\r\n                    <input type=\"number\" id=\"input_x_inf\" value=\"\" style=\"width:70px;\"\/>\r\n                    <label class=\"form-check-label\" id=\"action_x1_x2\"><\/label>\r\n                    <input type=\"number\" id=\"input_x_sup\" value=\"\" style=\"width:70px;\"\/>\r\n                <\/div>\r\n            <\/div>\t\r\n            <hr>\t\t            \t\t\r\n            <div class=\"row \">\r\n                <div class=\"col-sm-12\" style=\"text-align:center;\">\r\n                    <button  type=\"button\" class=\"btn btn-warning\" onclick=\"valide_application_action(this,event);\">Valider<\/button>\r\n                <\/div>\r\n            <\/div>\t\r\n        <\/div>\r\n    <\/div>\r\n    <!-------      FIN     FENETRE DE SAISIE DES PONDERATIONS                ---------->\r\n\r\n    <div id=\"mydivSPGoO\" class=\"fen_arrondie\" style=\"opacity: 1;width:450px;margin-bottom:10px;display:none\" >\r\n        <div id=\"mydivSPGoOheader\" class=\"fen_arrondie\" style=\"height:70px;\">\r\n            $Scientific~Programing~Group~Of~Orleans~~$ \r\n            <button type=\"button\" class=\"close\" onclick=\"closeModal('mydivSPGoO');\" data-dismiss=\"modal\" aria-label=\"Close\">\r\n              <span aria-hidden=\"true\">\u00d7<\/span>\r\n            <\/button>\r\n        <\/div>\r\n        <div class=\"modele_local_Comments fen_arrondie\" id=\"div_corps_Comments\" \r\n        style=\"background-color:#aaa9a8;color:#130b8c;padding:2px 0px 10px 2px;margin:-15px 0px 0px 0px\">\r\n        <br\/>    \r\n        <div class=\"row\">\r\n                <div class=\"col-sm-5\">\r\n                    <label class=\"form-check-label\" style=\"color:red\" >$Members~:$<\/label>\r\n                <\/div>\r\n                <div class=\"col-sm-5\">\r\n                    <label class=\"form-check-label\" id=\"action_origine\"><\/label>\r\n                <\/div>\r\n            <\/div>\t\r\n            <hr>\t\r\n            <div class=\"row\">\r\n                <div class=\"col-sm-4\" style=\"text-align:center;\">\r\n                    <img decoding=\"async\"  src=\".\/personnalisation\/images\/e_eveno.jpg\" style=\"width:40px; height:40px;display:inner-block;\" ><\/img>\r\n                <\/div>\r\n                <div class=\"col-sm-8\" style=\"text-align:left;\">\r\n                    <label class=\"form-check-label\" style=\"display:inner-block;\" >$E.~Eveno~(CNRS)$ <\/label>\r\n                <\/div>\r\n            <\/div>\t\r\n            <hr>\t\r\n            <div class=\"row\">\r\n                <div class=\"col-sm-4\" style=\"text-align:center;\">\r\n                    <img decoding=\"async\"  src=\".\/personnalisation\/images\/p_krezel.jpg\" style=\"width:40px; height:40px;display:inner-block;\" ><\/img>\r\n                <\/div>\r\n                <div class=\"col-sm-8\" style=\"text-align:left;\">\r\n                    <label class=\"form-check-label\" style=\"display:inner-block;\" >$P.~Krezel~(CNRS)$ <\/label>\r\n                <\/div>\r\n            <\/div>\t\r\n            <hr>\t\r\n            <div class=\"row\">\r\n                <div class=\"col-sm-4\" style=\"text-align:center;\">\r\n                    <img decoding=\"async\"  src=\".\/personnalisation\/images\/c_piatecki.png\" style=\"width:40px; height:40px;display:inner-block;\" ><\/img>\r\n                <\/div>\r\n                <div class=\"col-sm-8\" style=\"text-align:left;\">\r\n                    <label class=\"form-check-label\" style=\"display:inner-block;\" >$C.~Piatecki~(UO)$ <\/label>\r\n                <\/div>\r\n            <\/div>\t\r\n            <hr>\t\t     \r\n            <div class=\"row\">\r\n                <div class=\"col-sm-4\" style=\"text-align:center;\">\r\n                    <img decoding=\"async\"  src=\".\/personnalisation\/images\/y_stroppa.jpg\" style=\"width:40px; height:40px;display:inner-block;\" ><\/img>\r\n                <\/div>\r\n                <div class=\"col-sm-8\" style=\"text-align:left;\">\r\n                    <label class=\"form-check-label\" style=\"display:inner-block;\" >$Y.~Stroppa~(CNRS)$ <\/label>\r\n                <\/div>\r\n\r\n            <\/div>\t\r\n            <hr>\t\r\n\r\n        <\/div>\r\n    <\/div>\r\n    <!-------      FIN     FENETRE DE SAISIE DES PONDERATIONS                ---------->\r\n\r\n\r\n\r\n<script type=\"text\/javascript\">\r\nvar ex1=lot_1[23][\"mRna\"];  \/\/ pour initialiser si besoin \r\nlet liste_images={};\r\n\r\nJXG.Options.text.cssDefaultStyle = 'font-family:KaTeX_Main, serif;font-size:4 vmin';\r\n\/\/ JXG.Options.text.highlightCssDefaultStyle = 'font-family:KaTeX_Main, serif;font-size:4 vmin';\r\nJXG.Options.text.useMathJax = true;\t\r\nJXG.Options.line.highlightStrokeWidth = 5;\r\n\r\n\/\/ ---------------------------------------\r\n\/\/ Creation du Board entete board0\r\n\/\/ ---------------------------------------\r\nvar board0 = JXG.JSXGraph.initBoard(\"box0\", {pan: {enabled:false},boundingbox: [-7,100, 140,-5], axis:false,\r\n    withLines:true,defaultAxes: {    x: { ticks: {visible: true} },    y: { ticks: {visible: true} }  },\r\n    showNavigation:false,showCopyright:false}),\r\n    over = function () {\r\n        if (this.visProp.fixed) {\r\n            board0.containerObj.style.cursor = 'pointer';\r\n        }\r\n    },\r\n    out = function () {\r\n        if (this.visProp.fixed) {\r\n            board0.containerObj.style.cursor = 'default';\r\n        }\r\n    };\r\n    board0.renderer.container.style.backgroundColor='#E5E4E2';\r\n \/\/var text0_1 = board.create('text',[130,290,'$\\\\text{Orl\u00e9ans}$'],{fixed:true,fontsize:14, color: venetianRed});\r\nvar text0_1 = board0.create('text',[20,60,'$\\\\text{Prototype exp\u00e9rimental de mise au point ARN '+'$\\\\rightarrow$'+ ' Image}$'],{fixed:true,fontsize:22, color: venetianRed});\r\nconst lien_explootation = board0.create('text',[25,45,'<a href=\".\/?page_id=98\" >Mise au point<\/a>'],{fixed:true,fontsize:12, color: venetianRed});\r\nvar ind_board = board0.create('text',[-7,90,'$\\\\text{Board0}$'],{fixed:true,fontsize:12, color: venetianRed});\r\nvar text0 = board0.create('text',[110,60,'$\\\\text{SPGoO (2024) }$'],{fixed:true,fontsize:16, color: venetianRed});\r\ntext0.on(\"up\", function() {\r\n    document.getElementById(\"mydivSPGoO\").style.display=\"block\";\r\n});\r\ntext0.on('over', over);\r\ntext0.on('out', out);\r\n\r\nvar trash_global = board0.create('button', [-4, 20, '<i title=\"Supression de toutes les images.\" style=\"height:40px;color:blue\" class=\"fa fa-trash\" aria-hidden=\"true\"><\/i>', \r\n        function() {suppression_all_images();}], {strokeColor:\"blue\"});      \r\n\r\n\r\nlet select_adn = board0.create('text',[5,20,\r\n    '<div style =\"font-family:Computer Modern,serif;font-size:16px;font-style:italic;\"><select class=\"mybox\" style=\"width:200px\" id=\"select_adn\" onchange=\"chargement_();\"> '+\r\n  '<option value=\"-1\">Veuillez s\u00e9lectionner un item<\/option><option value=\"all\">All<\/option><\/select><\/div>'],{fixed:true,size:14});\r\n\r\nlet  chk_size_iso=board0.create('text',[60,30,'<input type=\"radio\" onclick=\"chg_strateg_img();\" id=\"size_iso1\" name=\"size_image\" value=\"0\" checked><label for=\"size_iso\">$Size~iso$<\/label>']);\r\nlet  chk_size_centree=board0.create('text',[80,30,'<input type=\"radio\"  onclick=\"chg_strateg_img();\"id=\"size_centree\" name=\"size_image\" value=\"2\"><label for=\"size_iso\">$Size~Centr\u00e9e~de~longueur~$<\/label>']);\r\nlet  chk_size_long=board0.create('input',[105,30,\"100\",\"\"], {id:\"input_long\", cssStyle: 'width: 60px'});\r\n\r\nchk_size_long.rendNodeInput.addEventListener(\"keyup\", ( function () {\r\n        if (event.keyCode<96 || event.keyCode>106) {\r\n            let nouv=chk_size_long.Value().substr(0, chk_size_long.Value().length-1);\r\n            chk_size_long.set(nouv);\r\n            longueur=parseInt(nouv);\r\n        }\r\n        longueur=parseInt(chk_size_long.Value());\r\n}));\r\n\r\nlet  chk_format_svg=board0.create('text',[60,10,'<input onclick=\"chg_format_img();\" type=\"radio\" id=\"webp\" name=\"format_img\" value=\"webp\" checked ><label for=\"size_iso\">$webp$<\/label>']);\r\nlet  chk_format_jpg=board0.create('text',[80,10,'<input onclick=\"chg_format_img();\"  type=\"radio\" id=\"jpeg\" name=\"format_img\" value=\"jpeg\" ><label for=\"size_iso\">$jpeg$<\/label>']);\r\nlet  chk_format_png=board0.create('text',[100,10,'<input onclick=\"chg_format_img();\"  type=\"radio\" id=\"png\" name=\"format_img\" value=\"png\"><label for=\"size_iso\">$png$<\/label>']);\r\nlet  chk_format_webp=board0.create('text',[120,10,'<input onclick=\"chg_format_img();\"  type=\"radio\" id=\"svg\" name=\"format_img\" value=\"svg\" ><label for=\"size_iso\">$svg$<\/label>']);\r\n\r\nlet format_Img=\"webp\";\r\nconst chg_format_img=async function() {\r\n    \/\/ prendre l'ensemble des image et reconstruire les images au bon format \r\n    format_Img=event.target.id;\r\n    \/*for await (const e of Object.keys(liste_images)) {\r\n            const indice= liste_images[e].indice;\r\n        const toto=await bande_couleur(indice,true,format_Img);\r\n    };*\/\r\n     await Promise.all(Object.keys(liste_images).map(async (e,promise)=> {\r\n        console.log(e);\r\n        const indice= liste_images[e].indice;\r\n        console.log(indice);\r\n        await promise;\r\n        const toto=await bande_couleur(indice,true,format_Img);\r\n    }),Promise.resolve());\r\n    \/\/ Object.keys(liste_images).forEach((e)=> bande_couleur(liste_images[e].indice,true,format_Img))\r\n}\r\nlet longueur=-1;\r\n\/\/ changement de strategie pour la construction de l'image \r\nconst chg_strateg_img=function() {\r\n    if (event.target.id==\"size_centree\") {\r\n        \/\/ il faut recuperer la longueur et reconstruire les images en consequences \r\n        longueur = parseInt(chk_size_long.Value());\r\n    } else {\r\n        longueur=-1;\r\n    }\r\n}\r\n\r\nconst suppression_all_images=function() {\r\n    Object.keys(liste_images).forEach((e)=> {\r\n        if (document.getElementById(\"zone_\"+ e)!=undefined) {\r\n            document.getElementById(\"zone_\"+ e).remove();\r\n            let indice=liste_images[e][\"numero\"];\r\n            let sel=document.getElementById(\"select_adn\");\r\n            sel.item(indice).style.color=\"#1c87c9\";\r\n        }   \r\n    });    \r\n    liste_images={};\r\n}\r\n\r\n\r\n\/\/ ---------------------------------------------------------\r\n\/\/ Traitement de la partie affichage Board4 \r\n\/\/ ---------------------------------------------------------\r\nvar board4 = JXG.JSXGraph.initBoard(\"box4\", {pan: {enabled:false},boundingbox: [-10,110, 120,-20], axis:false,\r\nwithLines:false,defaultAxes: {    x: { ticks: {visible: true} },    y: { ticks: {visible: true} }  },\r\nshowNavigation:false,showCopyright:false});\r\nboard4.jc = new JXG.JessieCode();\r\nboard4.renderer.container.style.backgroundColor='#E5E4E2';\r\n\r\n\/\/ -----------------------------------------------------\r\n\/\/ Affiche les \u00e9l\u00e9ment\u00e0 partir de la liste_actions\r\n\/\/ -----------------------------------------------------\r\nfunction drawGrid() {\r\n    JXG.JSXGraph.freeBoard(board4);\r\n    board4 = JXG.JSXGraph.initBoard(\"box4\", {pan: {enabled:false},boundingbox: [1-2, 80, 20, -2], axis:false,\r\n    withLines:true, defaultAxes: {x: { ticks: {visible: true} },y: { ticks: {visible: true} }\r\n    },showNavigation:false,showCopyright:false}),\r\n    over = function () {\r\n        if (this.visProp.fixed) {\r\n            board4.containerObj.style.cursor = 'pointer';\r\n        }\r\n    },\r\n    out = function () {\r\n        if (this.visProp.fixed) {\r\n            board4.containerObj.style.cursor = 'default';\r\n        }\r\n    };    \r\n    var ind_board4 = board4.create('text',[0,79,'$\\\\text{Board4}$'],{sise:20, color: venetianRed});\r\n    let ligne=78;\r\n    board4.create('text',[3, ligne,'$\\\\text{Liste des actions}$'],{fontsize:16,fixed:true,highlight:false});\r\n    \/\/ doit parcourir la liste des actiosn et affiche le contenu \r\n    ligne-=2.5;\r\n    Object.keys(Liste_actions).forEach((key_act)=>\r\n        {\r\n            let act=Liste_actions[key_act];\r\n            let chaine=act.identifiant.substr(0,8)+\"--\"+act.aire+\"-\"+act.seuil;\r\n            var checkboxAct = board4.create('checkbox', [0,ligne, ''],{checked:act.status, fixed:true,highlight:false});\r\n            checkboxAct.act=act;\r\n            checkboxAct.on(\"up\", function() {\r\n                this.act.status=!this.Value();\r\n            });\r\n            \/\/ on verifie qu'il y a une mise en application de l'action \r\n            let couleur=\"blue\";\r\n            if (Object.keys(Liste_applications).includes(act.identifiant))\r\n                couleur=\"green\";\r\n            let item_act=board4.create('text',[2, ligne,'$\\\\text{'+chaine+'}$'],{color:couleur,fontsize:14,fixed:true,highlight:false});\r\n            item_act.on('over', function() {\r\n                   board4.containerObj.style.cursor = 'pointer';\r\n            });\r\n            item_act.on('out', function() {\r\n                board4.containerObj.style.cursor = 'default';\r\n            });\r\n            var button_on = board4.create('button', [15, ligne, '<i style=\"height:15px;color:grey;\" title=\"Suppression\" class=\"fa fa-trash\" aria-hidden=\"true\"><\/i>', function() {\r\n                        \/\/ reconstruction_image_ponderations();\r\n                        \/\/ suppression de l'action courante de la liste des actions et de la mise en application \r\n                        suppression_action(this); \r\n            }], {});\r\n            button_on.identifiant=act.identifiant; \r\n            item_act.Act=act\r\n            \/\/ permet de conserver le line entre la chekbox et la zone de texte \r\n            item_act.checkbox=checkboxAct;\r\n            item_act.on(\"up\", function() {\r\n                \/\/ rechargement de la fenetre pour modification \r\n                recharge_fen_ponderation(this.Act);\r\n            });\r\n            ligne-=3.5;\r\n    });\r\n    ligne-=5;\r\n    \/\/ bouton d'application des pond\u00e9rations \r\n    var button_on = board4.create('button', [1, ligne, '<i  title=\"G\u00e9n\u00e9ration des images avec les pond\u00e9rations.\" style=\"height:40px;color:green\" class=\"fa fa-circle-down\" aria-hidden=\"true\"><\/i>', function() {\r\n        reconstruction_image_ponderations();\r\n    }], {});\r\n\r\n    var button_off = board4.create('button', [8, ligne, '<i title=\"R\u00e9initialisation des images.\" style=\"height:40px;color:red\" class=\"fa fa-circle-up\" aria-hidden=\"true\"><\/i>', function() {\r\n        reinit_ponderations_all_images();\r\n    }], {});  \r\n      \r\n    var button2 = board4.create('button', [15, ligne, '<i title=\"Sauvegarde des valeurs d\\'apllication.\" style=\"height:40px;color:blue\" class=\"fa fa-save\" aria-hidden=\"true\"><\/i>', \r\n        function() {sauvegarde_application_actions();}], {strokeColor:\"blue\"});      \r\n   \r\n    let comments=[\"Application des actions sur la production\",\"des images.\",\r\n    \"Seules les actions en vert vont \u00eatre appliqu\u00e9es.\",\r\n    \"Il est n\u00e9cessaire de d\u00e9finir pour chaque action\",\r\n    \"les conditions d'application : \",\r\n    \" -Conditions sur l'intervalle des aires \",\r\n    \" -Condition sur la Position dans la s\u00e9quence\"]; \r\n    ligne-=7;\r\n    for (let commentaires of comments) {\r\n        board4.create('text',[-0.5, ligne,'$\\\\text{'+commentaires+'}$'],{color:\"black\",fontsize:14,fixed:true,highlight:false});\r\n        ligne-=1.5;\r\n    }\r\n}\r\n \r\n\r\nconst sauvegarde_application_actions=function() {\r\n    sauvegarde_local_storage(\"CBM_Applications_\",Liste_applications);\r\n}\r\n\r\nconst suppression_action=function(obj) {\r\n    delete Liste_actions[obj.identifiant];\r\n    drawGrid();\r\n}\r\n\r\nconst addElement=function(parentId, elementType, elementId, contenu,display=\"display:block\") {\r\n\tvar p = document.getElementById(parentId);\r\n\tvar newElement = document.createElement(elementType);\r\n\tnewElement.setAttribute(\"id\", elementId);\r\n\tnewElement.innerHTML = contenu;\r\n\tnewElement.setAttribute(\"style\", display);\r\n\tp.appendChild(newElement);\r\n}\t\r\n\r\nconst dataHeader = 'data:image\/svg+xml;charset=utf-8'\r\nconst loadImage = async url => {\r\n  const img = document.createElement('img')\r\n  img.src = url\r\n  return new Promise((resolve, reject) => {\r\n    img.onload = () => resolve(img)\r\n    img.onerror = reject\r\n  })\r\n}\r\nconst encodeAsUTF8 = s => `${dataHeader},${encodeURIComponent(s)}`\r\n\/\/const encodeAsUTF8 = s => `${dataHeader},{encodeURIComponent(s)}`\r\nconst structure_ligne=\"<div class='row'>\" +\r\n        \"<div class='col-sm-1' style='align-content:center;text-align:center'>\" +\r\n            \"<i style='height:35px;color:green;cursor:pointer' onclick='supprimer_image(\\\"XXX\\\");' title='Suppression' class='fa fa-trash' aria-hidden='true' id='poubelle_XXX'><\/i>\" +\r\n        \"<\/div>\" +        \r\n        \"<div class='col-sm-11'>\" +\r\n            \"<img src='YYY' style='cursor:pointer;' width='1000px;' height='80px' id='XXX' crossOrigin='Anonymous' \/>\" +\r\n        \"<\/div>\" +            \r\n    \"<\/div>\" ;\r\n\r\nconst supprimer_image=function (XXX) {\r\n    document.getElementById(\"zone_\"+ XXX).remove();\r\n    \/\/ il faut retirer de la liste des images \r\n    let indice=liste_images[XXX][\"numero\"];\r\n    delete liste_images[XXX];\r\n    console.log(indice);\r\n    \/\/ modifier le visuel dans la liste de s\u00e9lection \r\n    let sel=document.getElementById(\"select_adn\");\r\n    sel.item(indice).style.color=\"#1c87c9\";\r\n}\r\n\r\n\/\/ -------------------------------------------\r\n\/\/ construction de l'image \u00e0 partir du Board6\r\n\/\/ -------------------------------------------\r\nvar productSVG = async (name,lg, board6, format=\"webp\") => {\r\n    var svgRoot = board6.renderer.svgRoot, svg;\r\n    svgRoot.setAttribute(\"xmlns\", \"http:\/\/www.w3.org\/2000\/svg\");\r\n    svgRoot.setAttribute(\"width\", board6.canvasWidth);\r\n    svgRoot.setAttribute(\"height\", board6.canvasHeight);\r\n    svg = (new XMLSerializer()).serializeToString(svgRoot);\r\n    let dataUrl=\"\";    \r\n    if (format==\"svg\") {\r\n        var svg64 = btoa(svg);\r\n        var b64Start = 'data:image\/svg+xml;base64,';\r\n        var image64 = b64Start + svg64;\r\n        dataURL=image64;\r\n    } else {\r\n        const svgdata=encodeAsUTF8(svg);\r\n        const img = await loadImage(svgdata);\r\n        const canvas = document.createElement('canvas')\r\n        canvas.width = board6.canvasWidth;\r\n        canvas.height = board6.canvasHeight;\r\n        canvas.getContext('2d').drawImage(img, 0, 0,board6.canvasWidth,board6.canvasHeight);\r\n        dataURL = await canvas.toDataURL('image\/'+format, 1.0)\r\n    }\r\n    \r\n    var ligne=structure_ligne.replace(\/XXX\/g , name).replace('YYY',dataURL );\r\n    addElement(\"resultats\", \"div\",\"zone_\"+name, ligne);\r\n    \r\n    let titre=document.createElement(\"h4\");\r\n    titre.innerText=name+\"--->(\"+ lg+ \")\";\r\n    document.getElementById(\"zone_\"+name).appendChild(titre);\r\n\r\n    let saut=document.createElement(\"hr\");\r\n    document.getElementById(\"zone_\"+name).appendChild(saut);\r\n}\r\n\r\nvar reajusteSVG = async (name,lg, board6, format=\"webp\") => {\r\n    var svgRoot = board6.renderer.svgRoot, svg;\r\n    svgRoot.setAttribute(\"xmlns\", \"http:\/\/www.w3.org\/2000\/svg\");\r\n    svgRoot.setAttribute(\"width\", board6.canvasWidth);\r\n    svgRoot.setAttribute(\"height\", board6.canvasHeight);\r\n    svg = (new XMLSerializer()).serializeToString(svgRoot);\r\n    let dataUrl=\"\";    \r\n    if (format==\"svg\") {\r\n        let svg64 = btoa(svg);\r\n        let b64Start = 'data:image\/svg+xml;base64,';\r\n        let image64 = b64Start + svg64;\r\n        const dataURL=image64;\r\n        document.getElementById(name).src=dataURL;\r\n    } else {\r\n        const svgdata=encodeAsUTF8(svg);\r\n        const img = await loadImage(svgdata);\r\n        const canvas = document.createElement('canvas')\r\n        canvas.width = board6.canvasWidth;\r\n        canvas.height = board6.canvasHeight;\r\n        canvas.getContext('2d').drawImage(img, 0, 0,board6.canvasWidth,board6.canvasHeight);\r\n        const dataURL = await canvas.toDataURL('image\/'+format, 1.0);\r\n        document.getElementById(name).src=dataURL;\r\n    } \r\n}\r\n\r\n\r\nconst reinit_ponderations_all_images=async function() {\r\n    Object.keys(liste_images).forEach((img) => {\r\n        \/\/ on recup\u00e8re l'indice de l'image \r\n        let indice_img=liste_images[img][\"indice\"];\r\n        bande_couleur(indice_img, true, format_Img);\r\n    })  \r\n}\r\n\r\nconst recharge_fen_ponderation=function(Act) {\r\n    document.getElementById(\"mydivPonderations\")[\"Act\"]=Act;\r\n    document.getElementById(\"action_identifiant\").innerText=Act.identifiant;\r\n    document.getElementById(\"action_origine\").innerText=Act.aire;\r\n    document.getElementById(\"action_seuil\").innerText='<=' +parseInt(Act.seuil)+'<=';\r\n    document.getElementById(\"action_x1_x2\").innerText='<=' +Act.x1 +' \u00e0 '+ Act.x2 + '<=';\r\n    \/\/ verifier si l'action est d\u00e9j\u00e0 dans la liste des application_action \r\n    if (Object.keys(Liste_applications).includes(Act.identifiant)) {\r\n        let appli_action=Liste_applications[Act.identifiant];\r\n        \/\/ il faut charger les elements de la mise en application dans la fentre\r\n        document.getElementById(\"input_seuil_inf\").max=parseInt(Act.seuil);\r\n        document.getElementById(\"input_seuil_inf\").value=parseInt(appli_action.Intervalle_seuil[0]);\r\n        document.getElementById(\"input_seuil_sup\").min=parseInt(Act.seuil);\r\n        document.getElementById(\"input_seuil_sup\").value=parseInt(appli_action.Intervalle_seuil[1]);\r\n\r\n        document.getElementById(\"input_x_inf\").min=0;\r\n        document.getElementById(\"input_x_inf\").max=Act.x1;\r\n        document.getElementById(\"input_x_inf\").value=appli_action.Intervalle_position[0];\r\n        document.getElementById(\"input_x_sup\").min=Act.x2;\r\n        document.getElementById(\"input_x_sup\").max=130;\r\n        document.getElementById(\"input_x_sup\").value=appli_action.Intervalle_position[1]\r\n    } else {\r\n        document.getElementById(\"input_seuil_sup\").min=parseInt(Act.seuil);\r\n        document.getElementById(\"input_seuil_sup\").value=parseInt(Act.seuil)+20;\r\n        document.getElementById(\"input_seuil_inf\").max=parseInt(Act.seuil);\r\n        document.getElementById(\"input_seuil_inf\").value=parseInt(Act.seuil)-20;\r\n\r\n        document.getElementById(\"input_x_sup\").min=Act.x2;\r\n        document.getElementById(\"input_x_sup\").max=130;\r\n        document.getElementById(\"input_x_sup\").value=130;\r\n        \r\n        document.getElementById(\"input_x_inf\").min=0;\r\n        document.getElementById(\"input_x_inf\").max=Act.x1;\r\n        document.getElementById(\"input_x_inf\").value=0;\r\n    }\r\n    document.getElementById(\"mydivPonderations\").style.display=\"block\";        \r\n}\r\n\r\n\/\/ ----------------------------------------------------------------------\r\n\/\/ application de la ponderation sur chaque base en fonction de l'action \r\n\/\/ -----------------------------------------------------------------------\r\nconst reconstruction_image_ponderations= async function() {\r\n    \/\/ il faut supprimer toutes les images \r\n    \/\/ passer en revue l'ensemble des poind\u00e9rations et les appliquer sur le board 6 \r\n    Object.keys(liste_images).forEach((img) => {\r\n        \/\/ on recup\u00e8re l'indice de l'image \r\n        let indice_img=liste_images[img][\"indice\"];\r\n        let sequence=lot_1[indice_img][\"mRna\"];\r\n        \/\/ il faut fixer pour chaque  base la couleur correspondante \r\n        let tab_coul=[];\r\n        let ind_posit=0\r\n        for (let lettre of sequence) {\r\n            let tab_c=[];\r\n            tab_c=[...tableau_couleurs[lettre]];\r\n            tab_coul.push(tab_c);\r\n        }\r\n        Object.keys(Liste_actions).forEach((action)=> {\r\n            let Act=Liste_actions[action];\r\n            \/\/ il faut v\u00e9rifier la mise en application de l'action\r\n            if (Object.keys(Liste_applications).includes(Act.identifiant)) {\r\n                if (Act.status) {  \/\/ on verifie la validite de l'action (si coch\u00e9e ou pas)\r\n                    for (let ind=Act.x1; ind<=Act.x2; ind++) {\r\n                        let val=sequence[ind];\r\n                        tab_coul[ind][0]+=Act.ponderations[val]*5;\r\n                        if (tab_coul[ind][0]>358) tab_coul[ind][0]=358-tab_coul[ind][0];\r\n                        if (tab_coul[ind][0]<0) tab_coul[ind][0]=358+tab_coul[ind][0];\r\n                        \/\/tab_bases[ind].visProp.fillcolor=JXG.hsv2rgb(tab[0], tab[1], tab[2]);\r\n                    }\r\n                }\r\n            }\r\n        }) \r\n        \/\/ reconstruction de l'image avec le tablea des couleurs \r\n        \/\/ bande_couleur_modifiee(liste_images[img][\"indice\"], liste_images[img][\"image\"], tab_coul);\r\n        bande_couleur_modifiee(liste_images[img][\"indice\"],  tab_coul);\r\n        \r\n    });\r\n    \r\n    \r\n}\r\n\r\ndragElement(document.getElementById(\"mydivPonderations\"));\r\ndragElement(document.getElementById(\"mydivSPGoO\"));\r\n\r\nconst closeModal=function(obj) {\r\n\tdocument.getElementById(obj).style.display=\"none\";\r\n}\r\n\r\n\r\nfunction dragElement(elmnt) {\r\n  var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;\r\n  if (document.getElementById(elmnt.id + \"header\")) {\r\n    \/\/ if present, the header is where you move the DIV from:\r\n    document.getElementById(elmnt.id + \"header\").onmousedown = dragMouseDown;\r\n  } else {\r\n    \/\/ otherwise, move the DIV from anywhere inside the DIV:\r\n   elmnt.onmousedown = dragMouseDown;\r\n  }\r\n\r\n  function dragMouseDown(e) {\r\n    e = e || window.event;\r\n    e.preventDefault();\r\n    \/\/ get the mouse cursor position at startup:\r\n    pos3 = e.clientX;\r\n    pos4 = e.clientY;\r\n    document.onmouseup = closeDragElement;\r\n    \/\/ call a function whenever the cursor moves:\r\n    document.onmousemove = elementDrag;\r\n  }\r\n\r\n  function elementDrag(e) {\r\n    e = e || window.event;\r\n    e.preventDefault();\r\n    \/\/ calculate the new cursor position:\r\n    pos1 = pos3 - e.clientX;\r\n    pos2 = pos4 - e.clientY;\r\n    pos3 = e.clientX;\r\n    pos4 = e.clientY;\r\n    \/\/ set the element's new position:\r\n    elmnt.style.top = (elmnt.offsetTop - pos2) + \"px\";\r\n    elmnt.style.left = (elmnt.offsetLeft - pos1) + \"px\";\r\n  }\r\n\r\n  function closeDragElement() {\r\n    \/\/ stop moving when mouse button is released:\r\n    document.onmouseup = null;\r\n    document.onmousemove = null;\r\n  }\r\n}\t\t\r\n\r\n\/\/ Query the element\r\nconst ele = document.getElementById('mydivCommandes');\r\n\r\n\/\/ The current position of mouse\r\nlet x = 0;\r\nlet y = 0;\r\n\r\n\/\/ The dimension of the element\r\nlet w = 0;\r\nlet h = 0;\r\n\r\n\/\/ -----------------------------\r\n\/\/ Validation de la saisie \r\n\/\/ -----------------------------\r\nconst valide_application_action=function() {\r\n    \/\/ Controler les saisies effectu\u00e9es et enregistrer la mise en application de l'action pour les affectations des couleurs \r\n    \/\/ generer l'application de l'action et la stocker dans la liste Liste_applications\r\n    let IdAction=document.getElementById(\"action_identifiant\").innerText;    \r\n    let val_seuil_sup=document.getElementById(\"input_seuil_sup\").value;\r\n    let val_seuil_inf=document.getElementById(\"input_seuil_inf\").value;\r\n    let val_position_sup=document.getElementById(\"input_x_sup\").value;\r\n    let val_position_inf=document.getElementById(\"input_x_inf\").value;   \r\n    \/\/ est-ce que c'est unen nouvelle  application ou pas \r\n    if (Object.keys(Liste_applications).includes(IdAction)) {\r\n        \/\/ on modifie la liste existante \r\n        console.log(\"il faut modifier l'element \");\r\n\r\n    } else {\r\n        let appli_action=new Application_action(IdAction, [val_seuil_inf,val_seuil_sup],[val_position_inf,val_position_sup]) ;   \r\n        Liste_applications[IdAction]=appli_action;\r\n    }\r\n    closeModal(\"mydivPonderations\");\r\n}\r\n\r\n\r\n\/\/ -----------------------------------------------------------\r\n\/\/ S\u00e9lection de la s\u00e9quence \r\n\/\/ -----------------------------------------------------------\r\nconst chargement_=function() {\r\n    let sel=document.getElementById(\"select_adn\");\r\n    if (sel.value==\"all\") {\r\n        \/\/ generation de toutes les images \r\n        for (i=2; i<sel.length;i++){\r\n            let valeur=sel.item(i).value;\r\n            let name=sel.item(i).innerText;    \r\n            liste_images[name]={\"indice\": valeur, \"numero\": i};\r\n            bande_couleur(valeur, false, format_Img);\r\n\r\n        }\r\n    } else {\r\n        let name=sel.item(sel.selectedIndex).innerText;\r\n        sel.item(sel.selectedIndex).style.color=\"red\";\r\n        if (!Object.keys(liste_images).includes(name)) {\r\n            let indice_tab=sel.value; \r\n            liste_images[name]={\"indice\": indice_tab, \"numero\": sel.selectedIndex};\r\n            bande_couleur(indice_tab, false, format_Img);\r\n        }\r\n    }\r\n}\r\n\r\n\/\/ -----------------------------------------------\r\n\/\/ Chargement de la liste des \u00e9l\u00e9ments d'exemple \r\n\/\/ -----------------------------------------------\r\nconst charge_adn=function() {\r\n  \/\/ balaye le tableau et charge les options \r\n  var sele = document.getElementById('select_adn');\r\n    let i=0;\r\n    for (var jeu of Object.keys(lot_1)){\r\n        var option = document.createElement(\"option\");\r\n        option.text = lot_1[jeu][\"names_seq\"];\r\n        option.value = jeu;  \/\/ on donne l'indice de la s\u00e9quence \r\n        sele.add(option);\r\n        i=i+1;\r\n    }\r\n}\r\n\r\n\r\njQuery(document).ready(function(){\r\n    \r\njQuery('.input-group').on('click', '.button-plus', function(e) {\r\n        incrementValue(e);\r\n    });\r\n\r\n    \r\njQuery('.input-group').on('click', '.button-minus', function(e) {\r\n        decrementValue(e);\r\n    });  \r\n   \r\n});\r\n\r\n\/\/ -------------------------------------------------------------------------------------------------\r\n\/\/ Chargement au demarrage de la page de l'ensemble des ADN dans le select  au niveau de la value \r\n\/\/ -------------------------------------------------------------------------------------------------\r\ndocument.addEventListener(\"DOMContentLoaded\",function() {\r\n  charge_adn();\r\n  \/\/drawGrid();\r\n  Liste_actions= rechargement_data(\"CBM_Actions\");\r\n  Liste_applications=rechargement_data(\"CBM_Applications_\");\r\n  drawGrid();\r\n});\r\n\r\n<\/script>\r\n\r\n\r\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":39,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-116","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/spgoo.org\/index.php?rest_route=\/wp\/v2\/pages\/116","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/spgoo.org\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/spgoo.org\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/spgoo.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/spgoo.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=116"}],"version-history":[{"count":1,"href":"https:\/\/spgoo.org\/index.php?rest_route=\/wp\/v2\/pages\/116\/revisions"}],"predecessor-version":[{"id":117,"href":"https:\/\/spgoo.org\/index.php?rest_route=\/wp\/v2\/pages\/116\/revisions\/117"}],"up":[{"embeddable":true,"href":"https:\/\/spgoo.org\/index.php?rest_route=\/wp\/v2\/pages\/39"}],"wp:attachment":[{"href":"https:\/\/spgoo.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=116"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}