1
0
Fork 0
mirror of https://github.com/Findus23/se-simulator.git synced 2024-09-19 15:53:45 +02:00

add better colors for all sites

This commit is contained in:
Lukas Winkler 2018-04-05 21:01:06 +02:00
parent 5465e1ddab
commit 9b0fda436e
10 changed files with 111 additions and 12 deletions

10
apply_colors.py Normal file
View file

@ -0,0 +1,10 @@
import utils
from models import *
from extra_data import site_colors
for site in Site.select():
if site.url in site_colors:
site.primary_color = "#" + site_colors[site.url]["primary"]
site.foreground_color = "#" + site_colors[site.url]["fg"]
site.background_color = "#" + site_colors[site.url]["bg"]
site.save()

67
extra_data.py Normal file
View file

@ -0,0 +1,67 @@
site_colors = {
"stackoverflow.com": {"fg": "FF9900", "bg": "ffffff", "primary": "FF9900"},
"serverfault.com": {"fg": "F3F1D9", "bg": "444444", "primary": "F3F1D9"},
"superuser.com": {"fg": "ffffff", "bg": "00a1c9", "primary": "00a1c9"},
"webapps.stackexchange.com": {"fg": "d9dde0", "bg": "444444", "primary": "d9dde0"},
"webmasters.stackexchange.com": {"fg": "ffffff", "bg": "6ad4fc", "primary": "6ad4fc"},
"gamedev.stackexchange.com": {"fg": "416d63", "bg": "fffeee", "primary": "edec80"},
"gaming.stackexchange.com": {"fg": "ffffff", "bg": "374a75", "primary": "374a75"},
"cooking.stackexchange.com": {"fg": "bc4133", "bg": "e5f9e7", "primary": "bc4133"},
"photo.stackexchange.com": {"fg": "ffffff", "bg": "4d4b4b", "primary": "4d4b4b"},
"stats.stackexchange.com": {"fg": "155078", "bg": "ffffff", "primary": "e8eceb"},
"math.stackexchange.com": {"fg": "0f3559", "bg": "ffffff", "primary": "cb181f"},
"diy.stackexchange.com": {"fg": "ffffff", "bg": "5588b9", "primary": "5588b9"},
"gis.stackexchange.com": {"fg": "748a95", "bg": "f2e8d0", "primary": "f2e8d0"},
"tex.stackexchange.com": {"fg": "c14748", "bg": "6b8087", "primary": "6b8087"},
"askubuntu.com": {"fg": "ffffff", "bg": "de4508", "primary": "de4508"},
"english.stackexchange.com": {"fg": "382f2a", "bg": "f4e3c8", "primary": "f4e3c8"},
"unix.stackexchange.com": {"fg": "ffffff", "bg": "293a5d", "primary": "293a5d"},
"cstheory.stackexchange.com": {"fg": "103f5f", "bg": "b8e3fe", "primary": "b8e3fe"},
"apple.stackexchange.com": {"fg": "333333", "bg": "dde9f4", "primary": "f1f2f3"},
"bicycles.stackexchange.com": {"fg": "ffffff", "bg": "0ba097", "primary": "0ba097"},
"electronics.stackexchange.com": {"fg": "e74c3c", "bg": "ffffff", "primary": "e74c3c"},
"android.stackexchange.com": {"fg": "ffffff", "bg": "1589e4", "primary": "1589e4"},
"physics.stackexchange.com": {"fg": "3d9d9e", "bg": "daede1", "primary": "3d9d9e"},
"scifi.stackexchange.com": {"fg": "74abb2", "bg": "000000", "primary": "000000"},
"music.stackexchange.com": {"fg": "141045", "bg": "3e9cd8", "primary": "3e9cd8"},
"christianity.stackexchange.com": {"fg": "0093b6", "bg": "fcf5e0", "primary": "0093b6"},
"workplace.stackexchange.com": {"fg": "2e4d64", "bg": "acdadd", "primary": "acdadd"},
"vegetarianism.stackexchange.com": {"fg": "ffffff", "bg": "3e9cd8", "primary": "3e9cd8"},
"quantumcomputing.stackexchange.com": {"fg": "ffffff", "bg": "213341", "primary": "213341"},
"money.stackexchange.com": {"fg": "3f6673", "bg": "e5efe1", "primary": "e5efe1"},
"wordpress.stackexchange.com": {"fg": "ffffff", "bg": "363c42", "primary": "363c42"},
"ux.stackexchange.com": {"fg": "ffffff", "bg": "23629f", "primary": "23629f"},
"rpg.stackexchange.com": {"fg": "ffffff", "bg": "613121", "primary": "613121"},
"softwareengineering.stackexchange.com": {"fg": "1b3e6c", "bg": "f8f8f8", "primary": "1b3e6c"},
"security.stackexchange.com": {"fg": "98dbe7", "bg": "112a3d", "primary": "112a3d"},
"graphicdesign.stackexchange.com": {"fg": "ea4a5a", "bg": "f4f4f4", "primary": "ea4a5a"},
"dba.stackexchange.com": {"fg": "2180a9", "bg": "f8f8f8", "primary": "2180a9"},
"codereview.stackexchange.com": {"fg": "485A62", "bg": "e9eff3", "primary": "485A62"},
"skeptics.stackexchange.com": {"fg": "222222", "bg": "fdfdf9", "primary": "33ace3"},
"sharepoint.stackexchange.com": {"fg": "ffffff", "bg": "1cb8d2", "primary": "3a3552"},
"judaism.stackexchange.com": {"fg": "663a2a", "bg": "fbefdc", "primary": "663a2a"},
"japanese.stackexchange.com": {"fg": "e16558", "bg": "f0f1f4", "primary": "e16558"},
"travel.stackexchange.com": {"fg": "ffffff", "bg": "18748a", "primary": "18748a"},
"crypto.stackexchange.com": {"fg": "ffffff", "bg": "1a2f4d", "primary": "1a2f4d"},
"dsp.stackexchange.com": {"fg": "2db9c5", "bg": "f4f4f4", "primary": "2db9c5"},
"academia.stackexchange.com": {"fg": "5b5b5b", "bg": "fbf8f3", "primary": "5b5b5b"},
"cs.stackexchange.com": {"fg": "ffffff", "bg": "42bbbc", "primary": "42bbbc"},
"chemistry.stackexchange.com": {"fg": "ffffff", "bg": "2c8559", "primary": "2c8559"},
"mathematica.stackexchange.com": {"fg": "3b3b3b", "bg": "fcfcfc", "primary": "d35036"},
"movies.stackexchange.com": {"fg": "000000", "bg": "ed2f0b", "primary": "ed2f0b"},
"biology.stackexchange.com": {"fg": "65a9a5", "bg": "eeeee0", "primary": "65a9a5"},
"raspberrypi.stackexchange.com": {"fg": "ffffff", "bg": "3ab37d", "primary": "e41f3f"},
"salesforge.stackexchange.com": {"fg": "ffffff", "bg": "01344e", "primary": "01344e"},
"patents.stackexchange.com": {"fg": "ffffff", "bg": "4ea6d8", "primary": "4ea6d8"},
"expressionengine.stackexchange.com": {"fg": "ffffff", "bg": "e74c3c", "primary": "e74c3c"},
"magento.stackexchange.com": {"fg": "ffffff", "bg": "fd7620", "primary": "fd7620"},
"ell.stackexchange.com": {"fg": "4b4f51", "bg": "d1e8e7", "primary": "f2f2e0"},
"networkengineering.stackexchange.com": {"fg": "ffffff", "bg": "464343", "primary": "464343"},
"puzzling.stackexchange.com": {"fg": "2d4254", "bg": "e5e5c5", "primary": "15b58a"},
"worldbuilding.stackexchange.com": {"fg": "385a5f", "bg": "f0c09e", "primary": "f0c09e"},
"emacs.stackexchange.com": {"fg": "5a85e6", "bg": "ebebeb", "primary": "5a85e6"},
"blender.stackexchange.com": {"fg": "ffffff", "bg": "0069ac", "primary": "f37929"},
"mathoverflow.net": {"fg": "ffffff", "bg": "777777", "primary": "777777"},
"aviation.stackexchange.com": {"fg": "f74f57", "bg": "daecec", "primary": "f74f57"},
"softwarerecs.stackexchange.com": {"fg": "ffffff", "bg": "134a5d", "primary": "134a5d"},
}

View file

@ -12,6 +12,9 @@ class Site(BaseModel):
tag_background_color = CharField(max_length=7)
tag_foreground_color = CharField(max_length=7)
link_color = CharField(max_length=7)
background_color = CharField(max_length=7, null=True)
foreground_color = CharField(max_length=7, null=True)
primary_color = CharField(max_length=7, null=True)
enabled = BooleanField(default=True)

View file

@ -16,6 +16,7 @@ from app import app
from models import *
app.jinja_env.globals.update(prettydate=utils.prettydate)
app.jinja_env.globals.update(is_light_color=utils.is_light_color)
SESSION_TYPE = 'redis'
SESSION_COOKIE_SECURE = config.production

View file

@ -15,7 +15,7 @@
{% for question in questions %}
{% set vote=voted[("question", question.id)] %}
<div class="content question"
style="border-right-color:{{ question.site.tag_foreground_color }};background-color:{{ question.site.tag_background_color }}">
style="border-right-color:{{ question.site.primary_color }}">
<div class="vote" data-id="{{ question.id }}" data-type="question">
<a class="up {{ "active" if vote == True }}"></a>
<div>{{ question.upvotes - question.downvotes }}</div>
@ -23,7 +23,7 @@
</div>
<div class="contentbox">
<div>
<a class="title" style="color:{{ question.site.link_color }}"
<a class="title" style=""
href="{{ url_for("question",slug=question.title.slug) }}">{{ question.title.text }}</a>
</div>
{{ question.text|truncate(200, False, ' …', 10) }}

View file

@ -44,8 +44,8 @@
{% macro siteheader(site) %}
<header class="siteheader"
style="background-color: {{ site.tag_background_color if site.tag_background_color!="#FFF" }};
color: {{ site.link_color }}">
style="background-color: {{ site.background_color }};
color: {{ site.foreground_color }}">
<img src="{{ site.icon_url }}" width="30" height="30">
<span>{{ site.name }}</span>
<a class="gotolink" href="https://{{ site.url }}" target="_blank" rel="noopener">Go to site</a>

View file

@ -13,7 +13,8 @@
<div id="quizchoices" data-id="{{ question.id }}">
{% for choice in choices %}
<button data-id="{{ choice.id }}" data-url="{{ choice.url }}"
style="color: {{ choice.tag_foreground_color }};background-color: {{ choice.tag_background_color }}"
style="color: {{ choice.foreground_color }};background-color: {{ choice.background_color }};
{{ ("border: solid 1px " + choice.foreground_color) if choice.background_color and is_light_color(choice.background_color) }}"
>{{ choice.name }}</button>
{% endfor %}
</div>

View file

@ -114,5 +114,21 @@ def get_fallback_site():
"name": "Stack Exchange",
"url": "stackexchange.com/",
"icon_url": "https://cdn.sstatic.net/Sites/stackexchange/img/apple-touch-icon.png",
"fallback": True
"fallback": True,
"background_color": False,
"foreground_color": False,
"primary_color": False
}
def hex_to_rgb(hex):
""" https://stackoverflow.com/a/29643643 """
return tuple(int(hex[i:i + 2], 16) for i in (0, 2, 4))
def is_light_color(hex):
""" https://stackoverflow.com/a/596241 """
r, g, b = hex_to_rgb(hex[1:])
brightness = 0.2126 * r + 0.7152 * g + 0.0722 * b
print(brightness)
return brightness > 245

View file

@ -69,8 +69,8 @@ document.addEventListener("DOMContentLoaded", function (event) {
setHeader(resp.site, true);
// headertitle.innerText = resp.site.name;
// headerimg.src = resp.site.icon_url;
header.style.backgroundColor = resp.site.tag_background_color;
header.style.color = resp.site.link_color;
header.style.backgroundColor = resp.site.background_color;
header.style.color = resp.site.foreground_color;
var result = document.getElementById(resp.correct ? "correct" : "incorrect");
result.style.display = "block";
next.focus()
@ -128,10 +128,10 @@ document.addEventListener("DOMContentLoaded", function (event) {
entered = true;
console.log(selectedSite);
check.style.backgroundColor = selectedSite.tag_background_color;
header.style.backgroundColor = selectedSite.tag_background_color;
check.style.color = selectedSite.link_color;
header.style.color = selectedSite.link_color;
check.style.backgroundColor = selectedSite.background_color;
header.style.backgroundColor = selectedSite.background_color;
check.style.color = selectedSite.foreground_color;
header.style.color = selectedSite.foreground_color;
setHeader(selectedSite, false)
}
});

View file

@ -157,6 +157,7 @@ h2 {
display: flex;
flex-direction: row;
justify-content: space-between;
flex-wrap: wrap;
}
button {