Interfície de comunicació, encàrrec simplificat.
Aquesta tasca va sobre crear codi JavaScript per a enviar una activitat sobre una pàgina web a un servidor
(Aquests apartats els vaig fer inicialment en el visual studio code, són els codis utilitzats per fer tot el procediment encara que anteriorment he creat les carpetes)
<!DOCTYPE html>
<html lang="ca">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Web amb Menú i Iframe</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
display: flex;
flex-direction: column;
height: 100vh;
}
header {
background-color: #333;
color: white;
padding: 1rem;
text-align: center;
}
nav {
display: flex;
flex-direction: column;
background-color: #444;
color: white;
}
.menu-nivell-1 {
display: flex;
flex-wrap: wrap;
justify-content: center;
background-color: #444;
}
.menu-nivell-1 > div {
position: relative;
margin: 0.5rem;
cursor: pointer;
}
.menu-nivell-2 {
display: none;
position: absolute;
top: 100%;
left: 0;
background-color: #555;
min-width: 150px;
z-index: 1;
}
.menu-nivell-2 div {
padding: 0.5rem;
cursor: pointer;
}
.menu-nivell-2 div:hover {
background-color: #666;
}
.menu-nivell-1 > div:hover .menu-nivell-2 {
display: block;
}
iframe {
flex: 1;
width: 100%;
border: none;
}
@media (max-width: 768px) {
.menu-nivell-1 {
flex-direction: column;
align-items: stretch;
}
.menu-nivell-1 > div {
text-align: center;
}
}
</style>
<script src="../util/comunicador.js"></script>
</head>
<body>
<header>
<h1 id="tit">Pàgina amb Menú i Iframe</h1>
</header>
<nav>
<div class="menu-nivell-1">
<div>
Secció 1
<div class="menu-nivell-2">
<div onclick="canviaIframe('https://jcanet.inscastellbisbal.net/')">Pàgina 1.1</div>
<div onclick="canviaIframe('https://www.wikipedia.org')">Pàgina 1.2</div>
</div>
</div>
<div>
Secció 2
<div class="menu-nivell-2">
<div onclick="canviaIframe('https://agora.xtec.cat/iescastellbisbal/')">Pàgina 2.1</div>
<div onclick="canviaIframe('https://www.openai.com')">Pàgina 2.2</div>
</div>
</div>
</div>
</nav>
<iframe id='contingut' src='about:blank' srcMenu=""></iframe>
<script>
function canviaIframe(url) {
//document.getElementById('contingut').src = url;
//document.getElementById('divcontingut').innerHTML = "<iframe id='contingut' src='" + url +"' ></iframe>";
document.getElementById('contingut').setAttribute('src', url);
document.getElementById('contingut').setAttribute('srcMenu', url);
}
let n = 0;
function addN(){
n+=1;
}
</script>
</body>
</html>
from flask import Flask, request, jsonify
from flask_cors import CORS
import mysql.connector
from datetime import datetime
app = Flask(__name__)
CORS(app)
# Connexió a la base de dades
conn = mysql.connector.connect(
host="localhost",
user="root",
password="1234", # Canvia-ho segons la teva configuració
database="activitat_db"
)
cursor = conn.cursor()
@app.route("/registre", methods=["POST"])
def registre():
dades = request.get_json()
accio = dades.get("accio")
url = dades.get("url")
timestamp = datetime.now()
sql = "INSERT INTO Activitat (marca_de_temps, accio, url) VALUES (%s, %s, %s)"
valors = (timestamp, accio, url)
cursor.execute(sql, valors)
conn.commit()
return jsonify({"status": "ok", "accio": accio, "url": url}), 200
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)
window.addEventListener("DOMContentLoaded", () => {
const iframe = document.getElementById("contingut");
if (!iframe) return;
iframe.addEventListener("load", () => {
const accio = "carregat";
const url = iframe.getAttribute("src");
fetch("http://172.24.199.59:5000/registre", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({ accio, url })
})
.then(res => res.json())
.then(data => console.log("Resposta:", data))
.catch(err => console.error("Error:", err));
});
});

Primer de tot canviem de directori i encenem la maquina virtual
Accedim a la maquina virtual per ssh


Accedim al directori on tenim compartit les carpetes amb el Vagrantfile ja instalat passat pel nostre professor
Fem la instalació del python3-venv


El possem com a nom test i l’activem.
Continuem també amb la instalació del flask-cors
Instal·lem el connector del mysql amb python


I a l’acabar amb les instalacions fem una copia del servidor cap el server.py
Entrem en el mysql


Veiem els “databases”
I creem el activitat_db
Fem un “use” del activitat_db
I continuem amb aquesta llista de comandes:
CREATE TABLE Activitat ( … );
Crea una taula que es diu “Activitat”
id INT AUTO_INCREMENT PRIMARY KEY
:
Una columnaid
que guarda un número enter que s’incrementa automàticament per a cada registre i que serveix per identificar cada fila.marca_de_temps DATETIME
:
Per veure la data i hora en què s’ha fet qualsevol cosa.accio VARCHAR(255)
:
Per fer un text curt fins a 255 caràctersurl TEXT
:
Per guardar una URL relacionada amb el que es farà.

Després d’aixó continuem fent l’entorn per que és pugui executar
“sudo apt-get install python3-venv
python3 -m venv test
source test/bin/activate
pip install flask-cors
pip install mysql-connector-python”
—————————————————————————-
Després per executar-lo fem aquesta comanda
Continuem obrint el html i ha la terminal sortiria aixó, d’aquesta manera ja sabem que funciona i així també comprovem que arriban els missatges