diff --git a/charts/lightcurve/Chart.yaml b/charts/lightcurve/Chart.yaml index c58c10b23..a489fabba 100644 --- a/charts/lightcurve/Chart.yaml +++ b/charts/lightcurve/Chart.yaml @@ -1,5 +1,5 @@ -appVersion: 24.9.1-rc123 +appVersion: 24.10.1-rc127 description: Lightcurve API for ALeRCE Clients name: lightcurve type: application -version: 24.9.156 +version: 24.10.160 diff --git a/lightcurve/Dockerfile b/lightcurve/Dockerfile index 8eac978bc..270f89517 100644 --- a/lightcurve/Dockerfile +++ b/lightcurve/Dockerfile @@ -1,3 +1,31 @@ +FROM python:3.11 as python-base +LABEL org.opencontainers.image.authors="ALeRCE" +ENV PYTHONDONTWRITEBYTECODE=1 \ + PYTHONUNBUFFERED=1 \ + PYTHONFAULTHANDLER=1 \ + PIP_NO_CACHE_DIR=off \ + PIP_DISABLE_PIP_VERSION_CHECK=on \ + PIP_DEFAULT_TIMEOUT=100 \ + POETRY_VIRTUALENVS_IN_PROJECT=true \ + POETRY_NO_INTERACTION=1 + + +FROM python-base as builder +RUN pip install poetry +WORKDIR /app +COPY ./lightcurve/poetry.lock ./lightcurve/pyproject.toml /app +COPY ./libs/ralidator-core /libs/ralidator-core +COPY ./libs/ralidator-fastapi /libs/ralidator-fastapi +RUN poetry install --no-root --without=test + +FROM node:22-alpine as tailwindcss_lightcurve +COPY ./lightcurve/ /lightcurve/ +WORKDIR /lightcurve +RUN \ + wget -nc https://github.com/tailwindlabs/tailwindcss/releases/download/v3.4.14/tailwindcss-linux-x64 -O tailwindcss && \ + chmod +x tailwindcss && \ + ./tailwindcss -i /lightcurve/src/lightcurve_api/templates/main.css -o /compiled/main.css + FROM node:22-alpine as tailwindcss_object COPY ./lightcurve/ /lightcurve/ WORKDIR /lightcurve @@ -14,6 +42,15 @@ RUN \ chmod +x tailwindcss && \ ./tailwindcss -i /lightcurve/src/magstats_api/templates/magstats.css -o /compiled/magstats.css +FROM node:22-alpine as tailwindcss_probability +COPY ./lightcurve/ /lightcurve/ +WORKDIR /lightcurve +RUN \ + wget -nc https://github.com/tailwindlabs/tailwindcss/releases/download/v3.4.13/tailwindcss-linux-x64 -O tailwindcss && \ + chmod +x tailwindcss && \ + ./tailwindcss -i /lightcurve/src/probability_api/templates/probability.css -o /compiled/probability.css + + FROM node:22-alpine as tailwindcss_crossmatch COPY ./lightcurve/ /lightcurve/ WORKDIR /lightcurve @@ -34,6 +71,7 @@ COPY ./lightcurve/src /app/src COPY --from=tailwindcss_lightcurve /compiled/main.css /app/src/api/static COPY --from=tailwindcss_magstats /compiled/magstats.css /app/src/magstats_api/static COPY --from=tailwindcss_object /compiled/object.css /app/src/object_api/static +COPY --from=tailwindcss_probability /compiled/probability.css /app/src/probability_api/static COPY --from=tailwindcss_crossmatch /compiled/crossmatch.css /app/src/crossmatch_api/static RUN poetry install --only-root CMD ["bash", "scripts/entrypoint.sh"] \ No newline at end of file diff --git a/lightcurve/docker-compose.yaml b/lightcurve/docker-compose.yaml index 38ae051f7..57a50b87b 100644 --- a/lightcurve/docker-compose.yaml +++ b/lightcurve/docker-compose.yaml @@ -28,6 +28,18 @@ services: environment: SERVICE: lightcurve_api API_URL: http://localhost:8001 + + object: + build: + context: ../ + dockerfile: lightcurve/Dockerfile + ports: + - 8002:8000 + env_file: + - variables.env + environment: + SERVICE: object_api + API_URL: http://localhost:8002 magstats: build: @@ -40,18 +52,18 @@ services: environment: SERVICE: magstats_api API_URL: http://localhost:8003 - - object: + + probability: build: context: ../ dockerfile: lightcurve/Dockerfile ports: - - 8002:8000 + - 8004:8000 env_file: - variables.env environment: - SERVICE: object_api - API_URL: http://localhost:8002 + SERVICE: probability_api + API_URL: http://localhost:8004 crossmatch: build: diff --git a/lightcurve/pyproject.toml b/lightcurve/pyproject.toml index 0ae3e0576..e2242a986 100644 --- a/lightcurve/pyproject.toml +++ b/lightcurve/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "lightcurve" -version = "24.9.1-rc123" +version = "24.10.1-rc127" description = "Get lightcurve of objects from ZTF and ATLAS surveys" authors = ["Diego Rodriguez Mancini"] readme = "README.md" @@ -10,6 +10,7 @@ packages = [ { include = "lightcurve_api", from = "src" }, { include = "magstats_api", from = "src" }, { include = "object_api", from = "src" }, + { include = "probability_api", from = "src" }, { include = "database", from = "src" }, ] @@ -71,4 +72,5 @@ dev = "scripts.run_dev:run" lightcurve = "scripts.run_dev:run_lightcurve" magstats = "scripts.run_dev:run_magstats" object = "scripts.run_dev:run_object" +probability = "scripts.run_dev:run_probability" tunnel = "scripts.sshproxy:run_tunnel" diff --git a/lightcurve/scripts/run_dev.py b/lightcurve/scripts/run_dev.py index bde1e4471..4dd8c7949 100644 --- a/lightcurve/scripts/run_dev.py +++ b/lightcurve/scripts/run_dev.py @@ -33,10 +33,17 @@ def run_object(): port = int(os.getenv("PORT", default=8000)) asyncio.run(run_service("object_api", port)) + def run_crossmatch(): port = int(os.getenv("PORT", default=8000)) asyncio.run(run_service("crossmatch_api", port)) + +def run_probability(): + port = int(os.getenv("PORT", default=8000)) + asyncio.run(run_service("probability_api", port)) + + async def run_services(services, port): tasks = [] for i, service in enumerate(services): diff --git a/lightcurve/scripts/run_probability_dev.py b/lightcurve/scripts/run_probability_dev.py new file mode 100644 index 000000000..00c971873 --- /dev/null +++ b/lightcurve/scripts/run_probability_dev.py @@ -0,0 +1,12 @@ +import os + +import uvicorn + + +def run(): + port = os.getenv("PORT", default=8000) + uvicorn.run("probability_api.api:app", port=int(port), reload=True, reload_dirs=[".", "../libs"]) + + +if __name__ == "__main__": + run() \ No newline at end of file diff --git a/lightcurve/src/lightcurve_api/static/lc-apparent.js b/lightcurve/src/lightcurve_api/static/lc-apparent.js index 4f23076fb..3124fe1b5 100644 --- a/lightcurve/src/lightcurve_api/static/lc-apparent.js +++ b/lightcurve/src/lightcurve_api/static/lc-apparent.js @@ -3,7 +3,7 @@ import { LightCurveOptions } from "./lc-utils.js"; export class ApparentLightCurveOptions extends LightCurveOptions { constructor(detections, forcedPhotometry, fontColor, flux = false) { - super(detections, [], forcedPhotometry, fontColor, "Apparent Magnitude"); + super(fontColor, "Apparent Magnitude"); this.detections = detections; this.forcedPhotometry = forcedPhotometry; this.getSeries(flux); diff --git a/lightcurve/src/lightcurve_api/static/lc-difference.js b/lightcurve/src/lightcurve_api/static/lc-difference.js index d948fd42e..692dda614 100644 --- a/lightcurve/src/lightcurve_api/static/lc-difference.js +++ b/lightcurve/src/lightcurve_api/static/lc-difference.js @@ -10,9 +10,6 @@ export class DifferenceLightCurveOptions extends LightCurveOptions { flux = false, ) { super( - detections, - nonDetections, - forcedPhotometry, fontColor, "Difference Magnitude", ); diff --git a/lightcurve/src/lightcurve_api/static/lc-folded.js b/lightcurve/src/lightcurve_api/static/lc-folded.js index 790252824..c88df50a3 100644 --- a/lightcurve/src/lightcurve_api/static/lc-folded.js +++ b/lightcurve/src/lightcurve_api/static/lc-folded.js @@ -3,7 +3,7 @@ import { jdToDate } from "./astro-dates.js"; export class FoldedLightCurveOptions extends LightCurveOptions { constructor(detections, forcedPhotometry, fontColor, period, flux) { - super(detections, [], forcedPhotometry, fontColor, "Folded Light Curve"); + super(fontColor, "Folded Light Curve"); this.detections = detections; this.forcedPhotometry = forcedPhotometry; this.period = period; diff --git a/lightcurve/src/lightcurve_api/static/lc-utils.js b/lightcurve/src/lightcurve_api/static/lc-utils.js index e36141d71..d5ed01dab 100644 --- a/lightcurve/src/lightcurve_api/static/lc-utils.js +++ b/lightcurve/src/lightcurve_api/static/lc-utils.js @@ -12,6 +12,7 @@ export class LightCurveOptions { 4: { name: "c", color: "#00FFFF" }, 5: { name: "o", color: "#FFA500" }, }; + this.fontColor = fontColor; this.options = { grid: { diff --git a/lightcurve/src/lightcurve_api/static/main.css b/lightcurve/src/lightcurve_api/static/main.css index 6f4ceb356..270cdd86c 100644 --- a/lightcurve/src/lightcurve_api/static/main.css +++ b/lightcurve/src/lightcurve_api/static/main.css @@ -1,3 +1,18 @@ +.indicator { + opacity: 0; +} + +@keyframes tw-pulse { + 50% { + opacity: .5; + } +} + +.htmx-request.indicator { + animation: tw-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; + opacity: 1; +} + .tw-preflight :is(.tw-pointer-events-none) { pointer-events: none; } @@ -22,10 +37,22 @@ right: 0px; } +.tw-preflight :is(.tw-top-1) { + top: 0.25rem; +} + .tw-preflight :is(.tw-top-1\/2) { top: 50%; } +.tw-preflight :is(.tw-z-10) { + z-index: 10; +} + +.tw-preflight :is(.tw-z-\[10\]) { + z-index: 10; +} + .tw-preflight :is(.tw-z-\[9999\]) { z-index: 9999; } @@ -46,6 +73,10 @@ grid-column: span 5 / span 5; } +.tw-preflight :is(.tw-m-0) { + margin: 0px; +} + .tw-preflight :is(.tw-m-auto) { margin: auto; } @@ -60,8 +91,14 @@ margin-right: auto; } -.tw-preflight :is(.tw-mb-\[20px\]) { - margin-bottom: 20px; +.tw-preflight :is(.tw-my-1) { + margin-top: 0.25rem; + margin-bottom: 0.25rem; +} + +.tw-preflight :is(.tw-my-4) { + margin-top: 1rem; + margin-bottom: 1rem; } .tw-preflight :is(.tw-me-2) { @@ -80,8 +117,8 @@ margin-top: 0.75rem; } -.tw-preflight :is(.tw-mt-\[10px\]) { - margin-top: 10px; +.tw-preflight :is(.tw-inline-block) { + display: inline-block; } .tw-preflight :is(.tw-inline) { @@ -112,6 +149,18 @@ height: 1.5rem; } +.tw-preflight :is(.tw-h-8) { + height: 2rem; +} + +.tw-preflight :is(.tw-h-auto) { + height: auto; +} + +.tw-preflight :is(.tw-w-1\/3) { + width: 33.333333%; +} + .tw-preflight :is(.tw-w-12) { width: 3rem; } @@ -120,6 +169,10 @@ width: 8rem; } +.tw-preflight :is(.tw-w-48) { + width: 12rem; +} + .tw-preflight :is(.tw-w-5) { width: 1.25rem; } @@ -128,6 +181,18 @@ width: 1.5rem; } +.tw-preflight :is(.tw-w-80) { + width: 20rem; +} + +.tw-preflight :is(.tw-w-\[400px\]) { + width: 400px; +} + +.tw-preflight :is(.tw-w-\[50\%\]) { + width: 50%; +} + .tw-preflight :is(.tw-w-\[95\%\]) { width: 95%; } @@ -140,17 +205,32 @@ min-width: 100%; } +.tw-preflight :is(.tw-max-w-\[40\%\]) { + max-width: 40%; +} + +.tw-preflight :is(.-tw-translate-y-1) { + --tw-translate-y: -0.25rem; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + .tw-preflight :is(.-tw-translate-y-1\/2) { --tw-translate-y: -50%; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) - rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) - scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); } .tw-preflight :is(.tw-transform) { - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) - rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) - scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +@keyframes tw-pulse { + 50% { + opacity: .5; + } +} + +.tw-preflight :is(.tw-animate-pulse) { + animation: tw-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; } @keyframes tw-spin { @@ -163,10 +243,14 @@ animation: tw-spin 1s linear infinite; } +.tw-preflight :is(.tw-cursor-pointer) { + cursor: pointer; +} + .tw-preflight :is(.tw-appearance-none) { -webkit-appearance: none; - -moz-appearance: none; - appearance: none; + -moz-appearance: none; + appearance: none; } .tw-preflight :is(.tw-grid-cols-10) { @@ -211,6 +295,12 @@ margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); } +.tw-preflight :is(.tw-space-x-4 > :not([hidden]) ~ :not([hidden])) { + --tw-space-x-reverse: 0; + margin-right: calc(1rem * var(--tw-space-x-reverse)); + margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse))); +} + .tw-preflight :is(.tw-space-y-2 > :not([hidden]) ~ :not([hidden])) { --tw-space-y-reverse: 0; margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse))); @@ -236,6 +326,16 @@ overflow: auto; } +.tw-preflight :is(.tw-truncate) { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.tw-preflight :is(.tw-text-wrap) { + text-wrap: wrap; +} + .tw-preflight :is(.tw-rounded) { border-radius: 0.25rem; } @@ -268,10 +368,19 @@ border-bottom-width: 1px; } +.tw-preflight :is(.tw-border-t) { + border-top-width: 1px; +} + .tw-preflight :is(.tw-border-solid) { border-style: solid; } +.tw-preflight :is(.tw-border-\[\#1e1e1e\]) { + --tw-border-opacity: 1; + border-color: rgb(30 30 30 / var(--tw-border-opacity)); +} + .tw-preflight :is(.tw-border-blue-400) { --tw-border-opacity: 1; border-color: rgb(96 165 250 / var(--tw-border-opacity)); @@ -295,11 +404,25 @@ --tw-border-opacity: 0.2; } +.tw-preflight :is(.tw-bg-\[\#757575\]\/60) { + background-color: rgb(117 117 117 / 0.6); +} + .tw-preflight :is(.tw-bg-blue-500) { --tw-bg-opacity: 1; background-color: rgb(59 130 246 / var(--tw-bg-opacity)); } +.tw-preflight :is(.tw-bg-blue-700) { + --tw-bg-opacity: 1; + background-color: rgb(29 78 216 / var(--tw-bg-opacity)); +} + +.tw-preflight :is(.tw-bg-cyan-700) { + --tw-bg-opacity: 1; + background-color: rgb(14 116 144 / var(--tw-bg-opacity)); +} + .tw-preflight :is(.tw-bg-gray-100) { --tw-bg-opacity: 1; background-color: rgb(243 244 246 / var(--tw-bg-opacity)); @@ -328,6 +451,10 @@ padding: 0.5rem; } +.tw-preflight :is(.tw-p-4) { + padding: 1rem; +} + .tw-preflight :is(.tw-px-2) { padding-left: 0.5rem; padding-right: 0.5rem; @@ -348,6 +475,11 @@ padding-bottom: 0.5rem; } +.tw-preflight :is(.tw-py-3) { + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} + .tw-preflight :is(.tw-py-4) { padding-top: 1rem; padding-bottom: 1rem; @@ -357,10 +489,6 @@ padding-left: 10px; } -.tw-preflight :is(.tw-pl-\[5px\]) { - padding-left: 5px; -} - .tw-preflight :is(.tw-pr-2) { padding-right: 0.5rem; } @@ -377,8 +505,8 @@ padding-top: 25px; } -.tw-preflight :is(.tw-pt-\[30px\]) { - padding-top: 30px; +.tw-preflight :is(.tw-text-left) { + text-align: left; } .tw-preflight :is(.tw-text-center) { @@ -408,11 +536,13 @@ font-weight: 700; } +.tw-preflight :is(.tw-font-light) { + font-weight: 300; +} + .tw-preflight :is(.tw-ordinal) { --tw-ordinal: ordinal; - font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) - var(--tw-numeric-figure) var(--tw-numeric-spacing) - var(--tw-numeric-fraction); + font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction); } .tw-preflight :is(.tw-text-\[\#1e1e1e\]) { @@ -420,11 +550,36 @@ color: rgb(30 30 30 / var(--tw-text-opacity)); } +.tw-preflight :is(.tw-text-\[\#BDBDBD\]) { + --tw-text-opacity: 1; + color: rgb(189 189 189 / var(--tw-text-opacity)); +} + +.tw-preflight :is(.tw-text-\[\#FAFAFA\]) { + --tw-text-opacity: 1; + color: rgb(250 250 250 / var(--tw-text-opacity)); +} + .tw-preflight :is(.tw-text-black) { --tw-text-opacity: 1; color: rgb(0 0 0 / var(--tw-text-opacity)); } +.tw-preflight :is(.tw-text-blue-50) { + --tw-text-opacity: 1; + color: rgb(239 246 255 / var(--tw-text-opacity)); +} + +.tw-preflight :is(.tw-text-blue-600) { + --tw-text-opacity: 1; + color: rgb(37 99 235 / var(--tw-text-opacity)); +} + +.tw-preflight :is(.tw-text-cyan-50) { + --tw-text-opacity: 1; + color: rgb(236 254 255 / var(--tw-text-opacity)); +} + .tw-preflight :is(.tw-text-gray-400) { --tw-text-opacity: 1; color: rgb(156 163 175 / var(--tw-text-opacity)); @@ -440,11 +595,24 @@ color: rgb(239 68 68 / var(--tw-text-opacity)); } +.tw-preflight :is(.tw-text-red-900) { + --tw-text-opacity: 1; + color: rgb(127 29 29 / var(--tw-text-opacity)); +} + .tw-preflight :is(.tw-text-white) { --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity)); } +.tw-preflight :is(.tw-underline) { + text-decoration-line: underline; +} + +.tw-preflight :is(.tw-opacity-100) { + opacity: 1; +} + .tw-preflight :is(.tw-opacity-50) { opacity: 0.5; } @@ -452,8 +620,11 @@ .tw-preflight :is(.tw-shadow-2xl) { --tw-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25); --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), - var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +.tw-preflight :is(.tw-duration-200) { + transition-duration: 200ms; } .disabled\:bg-transparent { @@ -885,8 +1056,7 @@ Prevent resizing textareas horizontally by default. /* 2 */ } -.tw-preflight input::-moz-placeholder, -.tw-preflight textarea::-moz-placeholder { +.tw-preflight input::-moz-placeholder, .tw-preflight textarea::-moz-placeholder { opacity: 1; /* 1 */ color: #9ca3af; @@ -1065,6 +1235,11 @@ Constrain images and videos to the parent width and preserve their intrinsic asp background-color: rgb(117 117 117 / var(--tw-bg-opacity)); } +.tw-preflight :is(.hover\:tw-bg-\[\#e5e4e2\]:hover) { + --tw-bg-opacity: 1; + background-color: rgb(229 228 226 / var(--tw-bg-opacity)); +} + .tw-preflight :is(.hover\:tw-bg-blue-700:hover) { --tw-bg-opacity: 1; background-color: rgb(29 78 216 / var(--tw-bg-opacity)); @@ -1090,10 +1265,6 @@ Constrain images and videos to the parent width and preserve their intrinsic asp color: rgb(75 85 99 / var(--tw-text-opacity)); } -.tw-preflight :is(.hover\:tw-opacity-70:hover) { - opacity: 0.7; -} - .tw-preflight :is(.disabled\:tw-bg-transparent:disabled) { background-color: transparent; } @@ -1106,20 +1277,19 @@ Constrain images and videos to the parent width and preserve their intrinsic asp outline-style: solid; } +.tw-preflight :is(.tw-group:hover .group-hover\:tw-block) { + display: block; +} + .tw-preflight :is(.tw-group:hover .group-hover\:tw-flex) { display: flex; } -.tw-preflight :is(.tw-group:hover .group-hover\:tw-opacity-60) { - opacity: 0.6; +.tw-preflight :is(.tw-group:hover .group-hover\:tw-flex-col) { + flex-direction: column; } -.tw-preflight - :is( - :is(.tw-dark .dark\:tw-divide-\[\#404040\]) - > :not([hidden]) - ~ :not([hidden]) - ) { +.tw-preflight :is(:is(.tw-dark .dark\:tw-divide-\[\#404040\]) > :not([hidden]) ~ :not([hidden])) { --tw-divide-opacity: 1; border-color: rgb(64 64 64 / var(--tw-divide-opacity)); } @@ -1129,9 +1299,9 @@ Constrain images and videos to the parent width and preserve their intrinsic asp border-color: rgb(64 64 64 / var(--tw-border-opacity)); } -.tw-preflight :is(.tw-dark .dark\:tw-border-b-white) { +.tw-preflight :is(.tw-dark .dark\:tw-border-white) { --tw-border-opacity: 1; - border-bottom-color: rgb(255 255 255 / var(--tw-border-opacity)); + border-color: rgb(255 255 255 / var(--tw-border-opacity)); } .tw-preflight :is(.tw-dark .dark\:tw-border-opacity-20) { @@ -1148,11 +1318,20 @@ Constrain images and videos to the parent width and preserve their intrinsic asp background-color: rgb(37 37 37 / var(--tw-bg-opacity)); } +.tw-preflight :is(.tw-dark .dark\:tw-bg-\[\#757575\]\/60) { + background-color: rgb(117 117 117 / 0.6); +} + .tw-preflight :is(.tw-dark .dark\:tw-bg-green-700) { --tw-bg-opacity: 1; background-color: rgb(21 128 61 / var(--tw-bg-opacity)); } +.tw-preflight :is(.tw-dark .dark\:tw-text-\[\#FAFAFA\]) { + --tw-text-opacity: 1; + color: rgb(250 250 250 / var(--tw-text-opacity)); +} + .tw-preflight :is(.tw-dark .dark\:tw-text-white) { --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity)); @@ -1162,3 +1341,8 @@ Constrain images and videos to the parent width and preserve their intrinsic asp --tw-bg-opacity: 1; background-color: rgb(53 53 53 / var(--tw-bg-opacity)); } + +.tw-preflight :is(.tw-dark .dark\:hover\:tw-bg-\[\#3b3939\]:hover) { + --tw-bg-opacity: 1; + background-color: rgb(59 57 57 / var(--tw-bg-opacity)); +} diff --git a/lightcurve/src/lightcurve_api/static/periodogram.js b/lightcurve/src/lightcurve_api/static/periodogram.js index b7e4aeb98..9ec5c98bb 100644 --- a/lightcurve/src/lightcurve_api/static/periodogram.js +++ b/lightcurve/src/lightcurve_api/static/periodogram.js @@ -51,8 +51,11 @@ export class Periodogram { legend: { textStyle: { color } }, }; - if (this.isPeriodogramBuilt) this.periodogram_plot.setOption(options); - else this.chartOptions = new PeriodogramOptions(color); + if (this.isPeriodogramBuilt){ + this.periodogram_plot.setOption(options); + } else { + this.chartOptions = new PeriodogramOptions(color); + } } load() { diff --git a/lightcurve/src/lightcurve_api/templates/lightcurve_app.html.jinja b/lightcurve/src/lightcurve_api/templates/lightcurve_app.html.jinja index 85d7aa08e..dc8641edf 100644 --- a/lightcurve/src/lightcurve_api/templates/lightcurve_app.html.jinja +++ b/lightcurve/src/lightcurve_api/templates/lightcurve_app.html.jinja @@ -20,7 +20,7 @@ class="tw-preflight tw-bg-white dark:tw-bg-[#1e1e1e] dark:tw-text-white" style="height: 100%">
-Loading...
+Loading...
Magnitude Statistics
+Magnitude Statistics