<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <title>PARROT - Documentation</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/marked/0.3.6/marked.min.js"></script> <link rel="stylesheet" type="text/css" href="style.css"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"> </head> <body> <!--navbar--> <nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top"> <a class="navbar-brand" href="#">PARROT</a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarNav"> <div class="navbar-nav"> <a class="nav-link" href="index.html">Home</a> <a class="nav-link" href="documentation.html">Documentation</a> <a class="nav-link active" href="#">AI models</a> <a class="nav-link" href="contact.html">Contact</a> </div> </div> </nav> <button id="topBtn" onclick="topFunction()">↑</button> <!--main--> <div class="container mt-5"> <div class="row"> <div class="col-lg-11"> <h1 class="mb-4 mt-4">AI models</h1> <p>AI models are hosted on HugginFace and can be downloaded directly from the PARROT application. We provide trained segmentation and dose prediction models. See below for model details.</p> <section class="mt-4"> <div style="display: flex;"> <table class="mt-4 ml-5" id="segTable"> <tr class="header"> <th colspan="2">Segmentation models</th> </tr> <tr class="header"> <th>Locations</th> <th>Architectures</th> </tr> </table> <table class="mt-4 ml-5" id="doseTable"> <tr class="header"> <th colspan="2">Dose prediction models</th> </tr> <tr class="header"> <th>Locations</th> <th>Architectures</th> </tr> </table> </div> </section> <section> <h2>Details</h2> <section class="mt-4" id="dose-prediction"> <h3>Segmentation models</h3> <section id="segCards"></section> <h3>Dose prediction models</h3> <section id="doseCards"></section> </section> </section> <!-- <section class="mt-4" id="add-your-models"> <h2>Add your models</h2> </section> --> </div> </div> </div> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script> <script src="modelData.js"></script> <script> function init() { getModelCard(dataModel.seg,'seg'); getModelCard(dataModel.dose,'dose'); AI_ModelTableCreate(dataModel.seg,'seg'); AI_ModelTableCreate(dataModel.dose,'dose'); AI_ModelCardsCreate(dataModel.seg,'seg'); AI_ModelCardsCreate(dataModel.dose,'dose'); } //displays the button if the user scrolls 50px at least function scrollFunction() { if (document.body.scrollTop > 50 || document.documentElement.scrollTop > 50) { mybutton.style.display = "block";} else { mybutton.style.display = 'none';} } //reset users position on the page function topFunction() { document.body.scrollTop = 0; document.documentElement.scrollTop = 0; } function AI_ModelTableCreate(dataSection,id) { tbl = document.getElementById(id.concat('Table')); // equalizes both table's length N_row = Math.max(dataModel.seg.length,dataModel.dose.length); for (let i = 0; i < N_row; i++) { const tr = tbl.insertRow(); // creates a filled row if (i < dataSection.length) { // data-href contains the id of the model which is linked to it (eg: data-href="#x" will transfer the user to the component with id="x") tr.setAttribute('class', 'clickable'); tr.setAttribute('data-href','#'.concat(id.concat(i.toString()))) for (let j = 0; j < 2; j++) { const td = tr.insertCell(); // fills in the cells the data assiociated to it if (j === 0) {td.appendChild(document.createTextNode(dataSection[i].location));} else {td.appendChild(document.createTextNode(dataSection[i].architecture));} } } // creates an empty row else { for (let j = 0; j < 2; j++) { const td = tr.insertCell(); td.appendChild(document.createTextNode("")) } } } } function AI_ModelCardsCreate(dataSection,id) { renderSection = document.getElementById(id.concat('Cards')); // defines et sets attribute for each divs containing the modelcard for (let i = 0; i < dataSection.length; i++) { canvas = document.createElement('div'); canvas.setAttribute('class','row') canvas.style.border = "5px solid rgb(189, 190, 191)"; div = document.createElement('div'); div.setAttribute('id',id.concat(i.toString())) div.style.padding = "50px"; // adds the structure to the section canvas.appendChild(div) renderSection.appendChild(canvas) } } function getModelCard(dataSection,id) { // gets the url of each model card, that are stocked in "modelData.js" for(let i = 0; i < dataSection.length; i++) { var apiUrl = dataSection[i].url // download the model card and upload it in the created divs in AI_ModelCardsCreate() function $.ajax({ url: apiUrl, method: 'GET', success: function (data) { $('#'.concat(id.concat(i.toString()))).html(marked(data)) }, error: function (error) { console.error('Error fetching release information:', error); } }); } } init() // triggers let mybutton = document.getElementById('topBtn'); window.onscroll = function() {scrollFunction()}; $('.clickable').click(function(){ window.location = $(this).data('href'); }); </script> </body> </html>