From aa6a0f8e5e7c50207e7076cd32550b2e9f0a89bf Mon Sep 17 00:00:00 2001 From: Justine Pelletreau Date: Mon, 4 Apr 2022 15:16:48 +0200 Subject: [PATCH] CSS --- README.md | 10 +++---- data/notes.pickle | Bin 20702 -> 0 bytes docker-compose.yml | 8 ++--- src/app.py | 16 ++-------- src/classes.py | 5 ++-- src/static/styles/0-dracula.css | 49 ++++++++++++++++++++++++++++++ src/static/styles/1-light.css | 51 +++++++++++++++++++++++++++++++- src/templates/homepage.html | 12 +++++--- 8 files changed, 120 insertions(+), 31 deletions(-) delete mode 100644 data/notes.pickle diff --git a/README.md b/README.md index 84cb8c3..4f82195 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,15 @@ -# squip_notes +# squip_tasks -This is a basic notes-taking program. It uses python with flask and pickle, to give a really light and simple web interface for note taking. +This is a basic todo program. It uses python with flask and pickle, to give a really light and simple web interface for task taking. It uses the [dracula](https://github.com/dracula/dracula-theme) colors. ![dark theme screenshot](./ssdark.png) ![light theme screenshot](./sslight.png) -![Screenshot of the application](./squipnotes.png) +![Screenshot of the application](./squiptasks.png) # Features * No accounts : this is made to be used as a single page (you can't have multiple user accounts). This is best suited as a personnal, self-hosted application in your own network (or it could also work for a work team). -* Simplicity: Simply get on the page and start writing. The notes syntax is markdown. +* Simplicity: Simply get on the page and start writing. The tasks syntax is markdown. * Themes : As for now, there is a default dark theme (dracula), and an optionnal light theme (loosely based on solarized light). They can be selected via the interface. # Themes (adding your own) @@ -34,7 +34,7 @@ pygmentize -S dracula -f html -a .codehilite > styles.css ## Run with Docker ### Using traefik -If you use traefik, you only have to change the url in the label "traefik.http.routers.sqnotes.rule". You can also modify the labels to rename the service from "sqnotes" to anything else. +If you use traefik, you only have to change the url in the label "traefik.http.routers.sqtasks.rule". You can also modify the labels to rename the service from "sqtasks" to anything else. Then start the service. It will create the image and start it for you: ```bash diff --git a/data/notes.pickle b/data/notes.pickle deleted file mode 100644 index da9301b3c7c7cacb9d0fb0ab352ac455176166a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20702 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 bkNr5+|7>q(Ptq;VWcMyYEH7TygQ)Z0+Rdnk diff --git a/docker-compose.yml b/docker-compose.yml index a141c7a..322862c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,17 +4,17 @@ networks: external: true services: - sqnotes: + sqtasks: build: . - image: sqnotes + image: sqtasks volumes: - ./data:/app/data restart: always #ports: #- 8080:8080 labels: - - "traefik.http.routers.sqnotes.rule=Host(`notes.squi.fr`)" - - "traefik.http.services.sqnotes.loadbalancer.server.port=8080" + - "traefik.http.routers.sqtasks.rule=Host(`tasks.squi.fr`)" + - "traefik.http.services.sqtasks.loadbalancer.server.port=8080" - "traefik.docker.network=traefik_traefik" networks: traefik_traefik: diff --git a/src/app.py b/src/app.py index 26554ff..c21fd64 100755 --- a/src/app.py +++ b/src/app.py @@ -81,19 +81,6 @@ def rawtasks(): #No theme in export return render_template("export.html", rawtasks = exporttasks()) -#Read mode -@app.route('/readmode', methods=['GET','POST']) -def readmode(): - #theme - csslink = request.cookies.get('csslink') - - - #Render page - if request.method == 'GET': - tasknumber = request.args.get("task") - mytask = findtask(int(tasknumber)) - return render_template("read.html", task=mytask.flaskrender(), csslink = csslink) - #Edition mode @app.route('/edit', methods=['GET', 'POST']) @@ -133,7 +120,8 @@ def edit(): rightnow = int(time.time()) newtask = task(createtime=tasknumber, modtime=rightnow, title=tasktitle, text=tasktext, done=taskdone, priority=taskpriority) addtask(newtask) - return render_template("read.html", task=newtask.flaskrender(), csslink = csslink) + return render_template("homepage.html", ntodo = todotasks(gettasks()), ndone = donetasks(gettasks()), csslink = csslink) + #Basic route, allows task creation diff --git a/src/classes.py b/src/classes.py index ae81543..4cfc624 100644 --- a/src/classes.py +++ b/src/classes.py @@ -41,12 +41,11 @@ class task: rendered = f"""
-
{Markup.escape(self.title)}
-
Priority: {self.priority}
-
{self.donemark}
+
{self.donemark} {Markup.escape(self.title)}
|||Back
+
Priority: {self.priority}
Created : {self.rendertime(self.createtime)}
Modified : {self.rendertime(self.modtime)}

{markdown.markdown(self.text, extensions=['fenced_code', 'codehilite', 'nl2br', 'smarty'])}

diff --git a/src/static/styles/0-dracula.css b/src/static/styles/0-dracula.css index 4f51a4b..1d29972 100644 --- a/src/static/styles/0-dracula.css +++ b/src/static/styles/0-dracula.css @@ -157,6 +157,55 @@ a { white-space: pre-wrap; } +.priorityinput { + background-color: #22242e; + color: #f8f8f2; + border-radius: 5px; + border-style: none; + border-width: 1px; + width: 40px; +} + +label { + background-color: transparent; + border: none; + color: #8be9fd; + padding: 1px 2px; + text-align: left; + text-decoration: none; + display: inline-block; + font-size: 1em; + font-style: normal; + cursor: pointer; +} +/* Hide priority select arrows +Chrome, Safari, Edge, Opera */ +input::-webkit-outer-spin-button, +input::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; +} + +/* Firefox */ +input[type=number] { + -moz-appearance: textfield; +} + +.donemarkselect { + background-color: #22242e; + color: #f8f8f2; + border-radius: 5px; + border-style: inset; + border-color: #ff79c6; + border-width: 1px; + width: 40px; +} + +.separator { + text-align: center; +} + + /* Syntax highlighting */ pre { line-height: 125%; } td.linenos .normal { color: #f1fa8c; background-color: #44475a; padding-left: 5px; padding-right: 5px; } diff --git a/src/static/styles/1-light.css b/src/static/styles/1-light.css index 380618b..2c6ac69 100644 --- a/src/static/styles/1-light.css +++ b/src/static/styles/1-light.css @@ -135,7 +135,7 @@ a { border-style: none; outline: none; border-width: 1px; - height: 80%; + height: 40%; font-size: 15px; -webkit-box-shadow: 0 3px 6px rgba(0,0,0,.16),0 3px 6px rgba(0,0,0,.23); } @@ -158,6 +158,55 @@ a { white-space: pre-wrap; } +.priorityinput { + background-color: #eee8d5; + color: #586e75; + border-radius: 5px; + border-style: none; + border-width: 1px; + width: 40px; +} + +label { + background-color: transparent; + border: none; + color: #2aa198; + padding: 1px 2px; + text-align: left; + text-decoration: none; + display: inline-block; + font-size: 1em; + font-style: normal; + cursor: pointer; +} +/* Hide priority select arrows +Chrome, Safari, Edge, Opera */ +input::-webkit-outer-spin-button, +input::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; +} + +/* Firefox */ +input[type=number] { + -moz-appearance: textfield; +} + +.donemarkselect { + background-color: #eee8d5; + color: #586e75; + border-radius: 5px; + border-style: inset; + border-color: #ff79c6; + border-width: 1px; + width: 40px; +} + +.separator { + text-align: center; +} + + /* Syntax highlighting */ pre { line-height: 125%; } td.linenos .normal { color: #93a1a1; background-color: #eee8d5; padding-left: 5px; padding-right: 5px; } diff --git a/src/templates/homepage.html b/src/templates/homepage.html index a682411..ac6a8f4 100644 --- a/src/templates/homepage.html +++ b/src/templates/homepage.html @@ -13,16 +13,20 @@

- -
+ +
Note : you can drag the textbox to make it bigger. Scroll down to see your previous tasks.

-

Todo

+
+

Todo

+
{{ ntodo }} -

Done

+
+

Done

+
{{ ndone }}