First commit, already played around a bit

This commit is contained in:
Jan 2024-03-13 15:56:34 +01:00
commit 4fc6765b1d
10 changed files with 346 additions and 0 deletions

14
.gitignore vendored Normal file
View File

@ -0,0 +1,14 @@
.venv/
*.pyc
__pycache__/
instance/
.pytest_cache/
.coverage
htmlcov/
dist/
build/
*.egg-info/

46
slaeforms/app.py Normal file
View File

@ -0,0 +1,46 @@
import sys
from flask import Flask, redirect, url_for, request
from flask import render_template
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.orm import DeclarativeBase
from sqlalchemy import Integer, String
from sqlalchemy.orm import Mapped, mapped_column
app = Flask(__name__)
# configure the SQLite database, relative to the app instance folder
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///database.db"
# initialize the app with the extension
db.init_app(app)
data = {}
class Base(DeclarativeBase):
pass
class User(db.Model):
id: Mapped[int] = mapped_column(primary_key=True)
username: Mapped[str] = mapped_column(unique=True)
email: Mapped[str]
with app.app_context():
db.create_all()
db = SQLAlchemy(model_class=Base)
@app.route("/", methods=["GET", "POST"])
def testpage():
global data
if request.method == "POST":
data = request.form
print(data)
return redirect(url_for("datapage"))
return render_template(
"layout1.html"
)
@app.route("/data")
def datapage():
return render_template(
"data.html",
value = str(data)
)

BIN
slaeforms/database.db Normal file

Binary file not shown.

9
slaeforms/db.py Normal file
View File

@ -0,0 +1,9 @@
import click
from flask import current_app, g
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.orm import DeclarativeBase
class Base(DeclarativeBase):
pass
db = SQLAlchemy(model_class=Base)

17
slaeforms/schema.sql Normal file
View File

@ -0,0 +1,17 @@
DROP TABLE IF EXISTS user;
DROP TABLE IF EXISTS post;
CREATE TABLE user (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
password TEXT NOT NULL
);
CREATE TABLE post (
id INTEGER PRIMARY KEY AUTOINCREMENT,
author_id INTEGER NOT NULL,
created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
title TEXT NOT NULL,
body TEXT NOT NULL,
FOREIGN KEY (author_id) REFERENCES user (id)
);

View File

@ -0,0 +1,3 @@
https://jamesalvarez.co.uk/blog/how-to-make-responsive-likert-scales-in-css-(like-qualtrics)/

View File

@ -0,0 +1,94 @@
body {
width: 100%;
height: 100vh;
margin: 0;
background-color: #a4b5ff;
color: #000000;
font-family: Tahoma;
font-size: 16px;
}
.columncontainer {
display: flex;
}
.columnleft {
width: 100%;
border: 3px solid black;
}
.columnright {
width: 100%;
border: 3px solid black;
}
iframe {
display:block;
margin: auto;
}
.centertext {
text-align: center;
}
h2,h3 {
text-align: center;
}
.likert {
--likert-rows: 5;
margin: auto;
text-align: center;
display: inline-grid;
max-width: 900px;
grid-auto-rows: 1fr;
gap: 1em;
grid-template-columns: repeat(var(--likert-rows), minmax(0, 1fr));
}
@media only screen and (max-width: 680px) {
.likert {
grid-template-columns: minmax(0, 400px);
justify-content: center;
}
}
.likert input {
max-width: 250px;
position: fixed;
opacity: 0;
pointer-events: none;
}
.likercontainer{
margin: 30px auto;
text-align: center;
}
.likert span {
border-radius: 5px;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
box-sizing: border-box;
width: 100%;
height: 100%;
padding: 20px;
background: #dcdcdc;
transition: background .2s ease-in-out;
}
.likert input:checked + span {
outline: black auto 1px;
background: transparent;
}
.likert input:focus + span {
outline: -webkit-focus-ring-color auto 1px;
}
.likert span:hover {
background: #f1f1f1;
outline: lightgrey auto 0.5px;
}

View File

@ -0,0 +1,15 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" type="text/css" href="styles.css" />
<title>Testform</title>
</head>
<body>
<h2>Task number 1</h2>
<p>The Likertscale value is: {{ value }}</p>
</body>
</html>

View File

@ -0,0 +1,54 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='styles.css')}}"" />
<title>Testform</title>
</head>
<body>
<h2>Task number 1</h2>
<div class="columncontainer">
<div class="columnleft center">
<h3>Video 1</h3>
<iframe width="560" height="315" class="center"
src="https://www.youtube-nocookie.com/embed/VtnwHmabyzo?si=H3rrG-GHtlSymR70"
title="YouTube video player" frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen></iframe>
</div>
<div class="columnright">
<h3>Video 2</h3>
<iframe width="560" height="315"
src="https://www.youtube-nocookie.com/embed/PdvSPBdX2T0?si=8R2ZAMnPuoe50X-7"
title="YouTube video player" frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen></iframe>
</div>
</div>
<form action = "http://localhost:5000/" method = "post">
<div class="likercontainer">
<div class="likert">
<label><input name="likertscale" type="radio" value="1" /><span>I dont like it at all</span></label>
<label><input name="likertscale" type="radio" value="2" /><span>I dont like it</span></label>
<label><input name="likertscale" type="radio" value="3" /><span>I am indifferent</span></label>
<label><input name="likertscale" type="radio" value="4" /><span>I like it</span></label>
<label><input name="likertscale" type="radio" value="5" /><span>I like it a lot</span></label>
</div>
</div>
<div class="likercontainer">
<div class="likert">
<label><input name="likertscale2" type="radio" value="1" /><span>I dont like it at all</span></label>
<label><input name="likertscale2" type="radio" value="2" /><span>I dont like it</span></label>
<label><input name="likertscale2" type="radio" value="3" /><span>I am indifferent</span></label>
<label><input name="likertscale2" type="radio" value="4" /><span>I like it</span></label>
<label><input name="likertscale2" type="radio" value="5" /><span>I like it a lot</span></label>
</div>
</div>
<p><input type = "submit" value = "submit";"/></p>
</form>
</body>
</html>

View File

@ -0,0 +1,94 @@
body {
width: 100%;
height: 100vh;
margin: 0;
background-color: #a4b5ff;
color: #000000;
font-family: Tahoma;
font-size: 16px;
}
.columncontainer {
display: flex;
}
.columnleft {
width: 100%;
border: 3px solid black;
}
.columnright {
width: 100%;
border: 3px solid black;
}
iframe {
display:block;
margin: auto;
}
.centertext {
text-align: center;
}
h2,h3 {
text-align: center;
}
.likert {
--likert-rows: 5;
margin: auto;
text-align: center;
display: inline-grid;
max-width: 900px;
grid-auto-rows: 1fr;
gap: 1em;
grid-template-columns: repeat(var(--likert-rows), minmax(0, 1fr));
}
@media only screen and (max-width: 680px) {
.likert {
grid-template-columns: minmax(0, 400px);
justify-content: center;
}
}
.likert input {
max-width: 250px;
position: fixed;
opacity: 0;
pointer-events: none;
}
.likercontainer{
margin: 30px auto;
text-align: center;
}
.likert span {
border-radius: 5px;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
box-sizing: border-box;
width: 100%;
height: 100%;
padding: 20px;
background: #dcdcdc;
transition: background .2s ease-in-out;
}
.likert input:checked + span {
outline: black auto 1px;
background: transparent;
}
.likert input:focus + span {
outline: -webkit-focus-ring-color auto 1px;
}
.likert span:hover {
background: #f1f1f1;
outline: lightgrey auto 0.5px;
}