From ff30c1b22b68e8c9c6d4124a870b83e2cec785f0 Mon Sep 17 00:00:00 2001 From: Furior Date: Sat, 1 Feb 2025 22:32:03 +0700 Subject: [PATCH] add: nanoui --- app/main.py | 2 + app/public/nanoui/css/icons.css | 352 +++++++++++ app/public/nanoui/css/layout_basic.css | 21 + app/public/nanoui/css/layout_default.css | 128 ++++ app/public/nanoui/css/shared.css | 721 +++++++++++++++++++++++ app/public/nanoui/index.html | 20 + 6 files changed, 1244 insertions(+) create mode 100644 app/public/nanoui/css/icons.css create mode 100644 app/public/nanoui/css/layout_basic.css create mode 100644 app/public/nanoui/css/layout_default.css create mode 100644 app/public/nanoui/css/shared.css create mode 100644 app/public/nanoui/index.html diff --git a/app/main.py b/app/main.py index 9f4e479..3464162 100644 --- a/app/main.py +++ b/app/main.py @@ -1,6 +1,7 @@ from fastapi import FastAPI, status from fastapi.concurrency import asynccontextmanager from fastapi.responses import FileResponse +from fastapi.staticfiles import StaticFiles from app.core.config import CONFIG from app.init import init @@ -17,6 +18,7 @@ async def lifespan(_: FastAPI): description=CONFIG.general.project_desc, lifespan=lifespan ) +app.mount("/nanoui", StaticFiles(directory="app/public/nanoui"), name="nanoui") app.include_router(v1_router) diff --git a/app/public/nanoui/css/icons.css b/app/public/nanoui/css/icons.css new file mode 100644 index 0000000..4943124 --- /dev/null +++ b/app/public/nanoui/css/icons.css @@ -0,0 +1,352 @@ +/* Icons +----------------------------------*/ + +.icon24 +{ + width: 24px; + height: 24px; +} + +.icon24.uiStatusGood +{ + background: url(https://github.com/ss220club/WyccerraBay220/blob/master/nano/images/uiIcons24.png?raw=true) 0 0 no-repeat; +} + +.icon24.uiStatusAverage +{ + background: url(https://github.com/ss220club/WyccerraBay220/blob/master/nano/images/uiIcons24.png?raw=true) 0 -24px no-repeat; +} + +.icon24.uiStatusBad +{ + background: url(https://github.com/ss220club/WyccerraBay220/blob/master/nano/images/uiIcons24.png?raw=true) 0 -48px no-repeat; +} + +/* states and images */ +.uiIcon16 { + float: left; + width: 16px; + height: 16px; + margin: 2px 2px 0 2px; + background-image: url(https://github.com/ss220club/WyccerraBay220/blob/master/nano/images/uiIcons16.png?raw=true); +} + +.uiLinkPendingIcon { + display: none; + float: left; + width: 16px; + height: 16px; + margin: 2px 2px 0 2px; + background-image: url(https://github.com/ss220club/WyccerraBay220/blob/master/nano/images/uiLinkPendingIcon.gif?raw=true); +} + +.linkPending .uiIcon16 { + display: none; +} + +.linkPending .uiLinkPendingIcon { + display: block; +} + +/* positioning */ +.uiIcon16.icon-blank { background-position: 16px 16px; } +.uiIcon16.icon-carat-1-n { background-position: 0 0; } +.uiIcon16.icon-carat-1-ne { background-position: -16px 0; } +.uiIcon16.icon-carat-1-e { background-position: -32px 0; } +.uiIcon16.icon-carat-1-se { background-position: -48px 0; } +.uiIcon16.icon-carat-1-s { background-position: -64px 0; } +.uiIcon16.icon-carat-1-sw { background-position: -80px 0; } +.uiIcon16.icon-carat-1-w { background-position: -96px 0; } +.uiIcon16.icon-carat-1-nw { background-position: -112px 0; } +.uiIcon16.icon-carat-2-n-s { background-position: -128px 0; } +.uiIcon16.icon-carat-2-e-w { background-position: -144px 0; } +.uiIcon16.icon-triangle-1-n { background-position: 0 -16px; } +.uiIcon16.icon-triangle-1-ne { background-position: -16px -16px; } +.uiIcon16.icon-triangle-1-e { background-position: -32px -16px; } +.uiIcon16.icon-triangle-1-se { background-position: -48px -16px; } +.uiIcon16.icon-triangle-1-s { background-position: -64px -16px; } +.uiIcon16.icon-triangle-1-sw { background-position: -80px -16px; } +.uiIcon16.icon-triangle-1-w { background-position: -96px -16px; } +.uiIcon16.icon-triangle-1-nw { background-position: -112px -16px; } +.uiIcon16.icon-triangle-2-n-s { background-position: -128px -16px; } +.uiIcon16.icon-triangle-2-e-w { background-position: -144px -16px; } +.uiIcon16.icon-arrow-1-n { background-position: 0 -32px; } +.uiIcon16.icon-arrow-1-ne { background-position: -16px -32px; } +.uiIcon16.icon-arrow-1-e { background-position: -32px -32px; } +.uiIcon16.icon-arrow-1-se { background-position: -48px -32px; } +.uiIcon16.icon-arrow-1-s { background-position: -64px -32px; } +.uiIcon16.icon-arrow-1-sw { background-position: -80px -32px; } +.uiIcon16.icon-arrow-1-w { background-position: -96px -32px; } +.uiIcon16.icon-arrow-1-nw { background-position: -112px -32px; } +.uiIcon16.icon-arrow-2-n-s { background-position: -128px -32px; } +.uiIcon16.icon-arrow-2-ne-sw { background-position: -144px -32px; } +.uiIcon16.icon-arrow-2-e-w { background-position: -160px -32px; } +.uiIcon16.icon-arrow-2-se-nw { background-position: -176px -32px; } +.uiIcon16.icon-arrowstop-1-n { background-position: -192px -32px; } +.uiIcon16.icon-arrowstop-1-e { background-position: -208px -32px; } +.uiIcon16.icon-arrowstop-1-s { background-position: -224px -32px; } +.uiIcon16.icon-arrowstop-1-w { background-position: -240px -32px; } +.uiIcon16.icon-arrowthick-1-n { background-position: 0 -48px; } +.uiIcon16.icon-arrowthick-1-ne { background-position: -16px -48px; } +.uiIcon16.icon-arrowthick-1-e { background-position: -32px -48px; } +.uiIcon16.icon-arrowthick-1-se { background-position: -48px -48px; } +.uiIcon16.icon-arrowthick-1-s { background-position: -64px -48px; } +.uiIcon16.icon-arrowthick-1-sw { background-position: -80px -48px; } +.uiIcon16.icon-arrowthick-1-w { background-position: -96px -48px; } +.uiIcon16.icon-arrowthick-1-nw { background-position: -112px -48px; } +.uiIcon16.icon-arrowthick-2-n-s { background-position: -128px -48px; } +.uiIcon16.icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.uiIcon16.icon-arrowthick-2-e-w { background-position: -160px -48px; } +.uiIcon16.icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.uiIcon16.icon-arrowthickstop-1-n { background-position: -192px -48px; } +.uiIcon16.icon-arrowthickstop-1-e { background-position: -208px -48px; } +.uiIcon16.icon-arrowthickstop-1-s { background-position: -224px -48px; } +.uiIcon16.icon-arrowthickstop-1-w { background-position: -240px -48px; } +.uiIcon16.icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.uiIcon16.icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.uiIcon16.icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.uiIcon16.icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.uiIcon16.icon-arrowreturn-1-w { background-position: -64px -64px; } +.uiIcon16.icon-arrowreturn-1-n { background-position: -80px -64px; } +.uiIcon16.icon-arrowreturn-1-e { background-position: -96px -64px; } +.uiIcon16.icon-arrowreturn-1-s { background-position: -112px -64px; } +.uiIcon16.icon-arrowrefresh-1-w { background-position: -128px -64px; } +.uiIcon16.icon-arrowrefresh-1-n { background-position: -144px -64px; } +.uiIcon16.icon-arrowrefresh-1-e { background-position: -160px -64px; } +.uiIcon16.icon-arrowrefresh-1-s { background-position: -176px -64px; } +.uiIcon16.icon-arrow-4 { background-position: 0 -80px; } +.uiIcon16.icon-arrow-4-diag { background-position: -16px -80px; } +.uiIcon16.icon-extlink { background-position: -32px -80px; } +.uiIcon16.icon-newwin { background-position: -48px -80px; } +.uiIcon16.icon-refresh { background-position: -64px -80px; } +.uiIcon16.icon-shuffle { background-position: -80px -80px; } +.uiIcon16.icon-transfer-e-w { background-position: -96px -80px; } +.uiIcon16.icon-transferthick-e-w { background-position: -112px -80px; } +.uiIcon16.icon-radiation { background-position: -128px -80px; } +.uiIcon16.icon-biohazard { background-position: -144px -80px;} +.uiIcon16.icon-first-aid { background-position: -160px -80px;} +.uiIcon16.icon-square { background-position: -176px -80px;} +.uiIcon16.icon-check-square { background-position: -192px -80px;} +.uiIcon16.icon-folder-collapsed { background-position: 0 -96px; } +.uiIcon16.icon-folder-open { background-position: -16px -96px; } +.uiIcon16.icon-document { background-position: -32px -96px; } +.uiIcon16.icon-document-b { background-position: -48px -96px; } +.uiIcon16.icon-note { background-position: -64px -96px; } +.uiIcon16.icon-mail-closed { background-position: -80px -96px; } +.uiIcon16.icon-mail-open { background-position: -96px -96px; } +.uiIcon16.icon-suitcase { background-position: -112px -96px; } +.uiIcon16.icon-comment { background-position: -128px -96px; } +.uiIcon16.icon-person { background-position: -144px -96px; } +.uiIcon16.icon-print { background-position: -160px -96px; } +.uiIcon16.icon-trash { background-position: -176px -96px; } +.uiIcon16.icon-locked { background-position: -192px -96px; } +.uiIcon16.icon-unlocked { background-position: -208px -96px; } +.uiIcon16.icon-bookmark { background-position: -224px -96px; } +.uiIcon16.icon-tag { background-position: -240px -96px; } +.uiIcon16.icon-home { background-position: 0 -112px; } +.uiIcon16.icon-flag { background-position: -16px -112px; } +.uiIcon16.icon-calendar { background-position: -32px -112px; } +.uiIcon16.icon-cart { background-position: -48px -112px; } +.uiIcon16.icon-pencil { background-position: -64px -112px; } +.uiIcon16.icon-clock { background-position: -80px -112px; } +.uiIcon16.icon-disk { background-position: -96px -112px; } +.uiIcon16.icon-calculator { background-position: -112px -112px; } +.uiIcon16.icon-zoomin { background-position: -128px -112px; } +.uiIcon16.icon-zoomout { background-position: -144px -112px; } +.uiIcon16.icon-search { background-position: -160px -112px; } +.uiIcon16.icon-wrench { background-position: -176px -112px; } +.uiIcon16.icon-gear { background-position: -192px -112px; } +.uiIcon16.icon-heart { background-position: -208px -112px; } +.uiIcon16.icon-star { background-position: -224px -112px; } +.uiIcon16.icon-link { background-position: -240px -112px; } +.uiIcon16.icon-cancel { background-position: 0 -128px; } +.uiIcon16.icon-plus { background-position: -16px -128px; } +.uiIcon16.icon-plusthick { background-position: -32px -128px; } +.uiIcon16.icon-minus { background-position: -48px -128px; } +.uiIcon16.icon-minusthick { background-position: -64px -128px; } +.uiIcon16.icon-close { background-position: -80px -128px; } +.uiIcon16.icon-closethick { background-position: -96px -128px; } +.uiIcon16.icon-key { background-position: -112px -128px; } +.uiIcon16.icon-lightbulb { background-position: -128px -128px; } +.uiIcon16.icon-scissors { background-position: -144px -128px; } +.uiIcon16.icon-clipboard { background-position: -160px -128px; } +.uiIcon16.icon-copy { background-position: -176px -128px; } +.uiIcon16.icon-contact { background-position: -192px -128px; } +.uiIcon16.icon-image { background-position: -208px -128px; } +.uiIcon16.icon-video { background-position: -224px -128px; } +.uiIcon16.icon-script { background-position: -240px -128px; } +.uiIcon16.icon-alert { background-position: 0 -144px; } +.uiIcon16.icon-info { background-position: -16px -144px; } +.uiIcon16.icon-notice { background-position: -32px -144px; } +.uiIcon16.icon-help { background-position: -48px -144px; } +.uiIcon16.icon-check { background-position: -64px -144px; } +.uiIcon16.icon-bullet { background-position: -80px -144px; } +.uiIcon16.icon-radio-on { background-position: -96px -144px; } +.uiIcon16.icon-radio-off { background-position: -112px -144px; } +.uiIcon16.icon-pin-w { background-position: -128px -144px; } +.uiIcon16.icon-pin-s { background-position: -144px -144px; } +.uiIcon16.icon-syringe { background-position: -192px -144px; } +.uiIcon16.icon-play { background-position: 0 -160px; } +.uiIcon16.icon-pause { background-position: -16px -160px; } +.uiIcon16.icon-seek-next { background-position: -32px -160px; } +.uiIcon16.icon-seek-prev { background-position: -48px -160px; } +.uiIcon16.icon-seek-end { background-position: -64px -160px; } +.uiIcon16.icon-seek-start { background-position: -80px -160px; } +/* uiIcon-seek-first is deprecated, use uiIcon-seek-start instead */ +.uiIcon16.icon-seek-first { background-position: -80px -160px; } +.uiIcon16.icon-stop { background-position: -96px -160px; } +.uiIcon16.icon-eject { background-position: -112px -160px; } +.uiIcon16.icon-volume-off { background-position: -128px -160px; } +.uiIcon16.icon-volume-on { background-position: -144px -160px; } +.uiIcon16.icon-power { background-position: 0 -176px; } +.uiIcon16.icon-signal-diag { background-position: -16px -176px; } +.uiIcon16.icon-signal { background-position: -32px -176px; } +.uiIcon16.icon-battery-0 { background-position: -48px -176px; } +.uiIcon16.icon-battery-1 { background-position: -64px -176px; } +.uiIcon16.icon-battery-2 { background-position: -80px -176px; } +.uiIcon16.icon-battery-3 { background-position: -96px -176px; } +.uiIcon16.icon-circle-plus { background-position: 0 -192px; } +.uiIcon16.icon-circle-minus { background-position: -16px -192px; } +.uiIcon16.icon-circle-close { background-position: -32px -192px; } +.uiIcon16.icon-circle-triangle-e { background-position: -48px -192px; } +.uiIcon16.icon-circle-triangle-s { background-position: -64px -192px; } +.uiIcon16.icon-circle-triangle-w { background-position: -80px -192px; } +.uiIcon16.icon-circle-triangle-n { background-position: -96px -192px; } +.uiIcon16.icon-circle-arrow-e { background-position: -112px -192px; } +.uiIcon16.icon-circle-arrow-s { background-position: -128px -192px; } +.uiIcon16.icon-circle-arrow-w { background-position: -144px -192px; } +.uiIcon16.icon-circle-arrow-n { background-position: -160px -192px; } +.uiIcon16.icon-circle-zoomin { background-position: -176px -192px; } +.uiIcon16.icon-circle-zoomout { background-position: -192px -192px; } +.uiIcon16.icon-circle-check { background-position: -208px -192px; } +.uiIcon16.icon-circlesmall-plus { background-position: 0 -208px; } +.uiIcon16.icon-circlesmall-minus { background-position: -16px -208px; } +.uiIcon16.icon-circlesmall-close { background-position: -32px -208px; } +.uiIcon16.icon-squaresmall-plus { background-position: -48px -208px; } +.uiIcon16.icon-squaresmall-minus { background-position: -64px -208px; } +.uiIcon16.icon-squaresmall-close { background-position: -80px -208px; } +.uiIcon16.icon-grip-dotted-vertical { background-position: 0 -224px; } +.uiIcon16.icon-grip-dotted-horizontal { background-position: -16px -224px; } +.uiIcon16.icon-grip-solid-vertical { background-position: -32px -224px; } +.uiIcon16.icon-grip-solid-horizontal { background-position: -48px -224px; } +.uiIcon16.icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.uiIcon16.icon-grip-diagonal-se { background-position: -80px -224px; } +.uiIcon16.icon-batt_full { background-image: url(../images/c_max.gif); background-position: 0px 0px } +.uiIcon16.icon-batt_disc { background-image: url(../images/c_discharging.gif); background-position: 0px 0px } +.uiIcon16.icon-batt_chrg { background-image: url(../images/c_charging.gif); background-position: 0px 0px } +.uiIcon16.icon-close64 { background-image: url(https://github.com/ss220club/WyccerraBay220/blob/master/nano/images/uiIcons64.png?raw=true); background-position: -128px -64px; width: 64px; height: 64px; } + +.mapIcon16 { + position: absolute; + width: 16px; + height: 16px; + background-image: url(https://github.com/ss220club/WyccerraBay220/blob/master/nano/images/uiIcons16Green.png?raw=true); + background-position: -48px -112px; /* Question Mark */ + background-repeat: no-repeat; + zoom: 0.125; + margin-left: -1px; + /*margin-bottom: -1px;*/ +} +.mapIcon16.dead { + background-image: url(https://github.com/ss220club/WyccerraBay220/blob/master/nano/images/uiIcons16Red.png?raw=true); +} + +/* Command Positions - Star */ +.mapIcon16.rank-captain, +.mapIcon16.rank-commandingofficer, +.mapIcon16.rank-executiveofficer +{ + background-position: -224px -112px; +} + +/* Command Support Positions - Chainlink */ +.mapIcon16.rank-headofpersonnel, +.mapIcon16.rank-bridgeofficer, +.mapIcon16.rank-internalaffairsagent, +.mapIcon16.rank-solgovrepresentative, +.mapIcon16.rank-seniorenlistedadvisor, +.mapIcon16.rank-workplaceliaison +{ + background-position: -240 -112px; +} + +/* Engineering Positions - Wrench */ +.mapIcon16.rank-chiefengineer, +.mapIcon16.rank-engineer, +.mapIcon16.rank-atmospherictechnician, +.mapIcon16.rank-seniorengineer, +.mapIcon16.rank-engineertrainee, +.mapIcon16.rank-roboticist +{ + background-position: -176px -112px; +} + +/* Medical Positions - Plus */ +.mapIcon16.rank-chiefmedicalofficer, +.mapIcon16.rank-medicaldoctor, +.mapIcon16.rank-geneticist, +.mapIcon16.rank-psychiatrist, +.mapIcon16.rank-pharmacist, +.mapIcon16.rank-paramedic, +.mapIcon16.rank-physician, +.mapIcon16.rank-medicalresident, +.mapIcon16.rank-medicaltechnician, +.mapIcon16.rank-traineemedicaltechnician, +.mapIcon16.rank-counselor +{ + background-position: -32px -128px; +} + +/* Science Positions - Lightbulb */ +.mapIcon16.rank-chiefscienceofficer, +.mapIcon16.rank-researchdirector, +.mapIcon16.rank-scientist, +.mapIcon16.rank-geneticist, +.mapIcon16.rank-xenobiologist, +.mapIcon16.rank-seniorresearcher, +.mapIcon16.rank-researchassistant +{ + background-position: -128px -128px; +} + +/* Security Positions - Key */ +.mapIcon16.rank-headofsecurity, +.mapIcon16.rank-chiefofsecurity, +.mapIcon16.rank-warden, +.mapIcon16.rank-detective, +.mapIcon16.rank-securityofficer, +.mapIcon16.rank-brigchief, +.mapIcon16.rank-forensictechnician, +.mapIcon16.rank-masteratarms +{ + background-position: -112px -128px; +} + +/* Exploration Positions - Flag */ +.mapIcon16.rank-pathfinder, +.mapIcon16.rank-shuttle-pilot, +.mapIcon16.rank-explorer +{ + background-position: -16px -112px +} + +/* Other Crew - Person */ +.mapIcon16.rank-assistant, +.mapIcon16.rank-cargotechnician, +.mapIcon16.rank-janitor, +.mapIcon16.rank-shaftminer +.mapIcon16.rank-bartender, +.mapIcon16.rank-cook, +.mapIcon16.rank-passenger, +.mapIcon16.rank-chiefsteward, +.mapIcon16.rank-chaplain, +.mapIcon16.rank-sanitation, +.mapIcon16.rank-technician, +.mapIcon16.rank-steward, +.mapIcon16.rank-crewman, +.mapIcon16.rank-deckchief, +.mapIcon16.rank-decktechnician, +.mapIcon16.rank-prospector +{ + background-position: -144px -96px; +} diff --git a/app/public/nanoui/css/layout_basic.css b/app/public/nanoui/css/layout_basic.css new file mode 100644 index 0000000..a771181 --- /dev/null +++ b/app/public/nanoui/css/layout_basic.css @@ -0,0 +1,21 @@ +body { + background: #272727 url(https://github.com/ss220club/WyccerraBay220/blob/master/nano/images/uiBasicBackground.png?raw=true) 50% 0 repeat-x; +} + +#uiContent { + clear: both; + padding: 8px; +} + +#uiLoadingNotice { + position: relative; + background: url(https://github.com/ss220club/WyccerraBay220/blob/master/nano/images/uiNoticeBackground.jpg?raw=true) 50% 50%; + color: #000000; + font-size: 14px; + font-style: italic; + font-weight: bold; + padding: 3px 4px 3px 4px; + margin: 4px 0 4px 0; +} + + diff --git a/app/public/nanoui/css/layout_default.css b/app/public/nanoui/css/layout_default.css new file mode 100644 index 0000000..423a499 --- /dev/null +++ b/app/public/nanoui/css/layout_default.css @@ -0,0 +1,128 @@ +body { + background: #272727 url(https://github.com/ss220club/WyccerraBay220/blob/master/nano/images/uiBackground.png?raw=true) 50% 0 repeat-x; +} + +#uiWrapper { + width: 100%; + height: 100%; + -ms-user-select: none; + user-select: none; +} + +#uiTitleWrapper { + position: relative; + height: 30px; +} + +#uiTitleText { + position: absolute; + top: 6px; + left: 44px; + width: 66%; + overflow: hidden; + color: #E9C183; + font-size: 16px; +} + +#uiTitle.icon { + padding: 6px 8px 6px 42px; + background-position: 2px 50%; + background-repeat: no-repeat; +} + +#uiTitleFluff { + position: absolute; + top: 4px; + right: 12px; + width: 42px; + height: 24px; + background: url(https://github.com/ss220club/WyccerraBay220/blob/master/nano/images/uiTitleFluff.png?raw=true) 50% 50% no-repeat; +} + +#uiStatusIcon { + position: absolute; + top: 4px; + left: 12px; + width: 24px; + height: 24px; +} + +#uiMapWrapper { + clear: both; + padding: 8px; +} + +#uiMapHeader { + position: relative; + clear: both; +} + +#uiMapContainer { + position: relative; + width: 100%; + height: 600px; + overflow: hidden; + border: 1px solid #40628a; + background: url(https://github.com/ss220club/WyccerraBay220/blob/master/nano/images/nanomapBackground.png?raw=true); +} + +#uiMap { + position: absolute; + top: 50%; + left: 50%; + margin: -512px 0 0 -512px; + width: 256px; + height: 256px; + overflow: hidden; + zoom: 4; +} + +#uiMapImage { + position: absolute; + bottom: 1px; + left: 1px; + width: 256px; + height: 256px; +} + +#uiMapContent { + position: absolute; + bottom: 0px; + left: 0px; + width: 256px; + height: 256px; +} + +#uiMapFooter { + position: relative; + clear: both; +} + +#uiContent { + clear: both; + padding: 8px; +} + +#uiMapTooltip { + position: absolute; + right: 10px; + top: 10px; + border: 1px solid #40628a; + background-color: #272727; + padding: 8px; + display: none; + z-index: 9999; +} + +#uiLoadingNotice { + position: relative; + background: url(https://github.com/ss220club/WyccerraBay220/blob/master/nano/images/uiNoticeBackground.jpg?raw=true) 50% 50%; + color: #000000; + font-size: 14px; + font-style: italic; + font-weight: bold; + padding: 3px 4px 3px 4px; + margin: 4px 0 4px 0; +} + + diff --git a/app/public/nanoui/css/shared.css b/app/public/nanoui/css/shared.css new file mode 100644 index 0000000..5fd76f8 --- /dev/null +++ b/app/public/nanoui/css/shared.css @@ -0,0 +1,721 @@ +body { + padding: 0; + margin: 0; + font-size: 12px; + color: #ffffff; + line-height: 170%; + font-family: Verdana, Geneva, sans-serif; + background: #272727; +} + +#uiNoScript { + position: fixed; + top: 50%; + left: 50%; + margin: -60px 0 0 -150px; + width: 280px; + height: 120px; + background: #ffffff; + border: 2px solid #ff0000; + color: #000000; + font-size: 10px; + font-weight: bold; + z-index: 9999; + padding: 0px 10px; + text-align: center; +} + +hr { + background-color: #40628a; + height: 1px; +} + +.link, .linkOn, .linkOff, .selected, .disabled, .yellowButton, .redButton { + float: left; + min-width: 15px; + height: 16px; + text-align: center; + color: #ffffff; + text-decoration: none; + background: #40628a; + border: 1px solid #161616; + padding: 0px 4px 4px 4px; + margin: 0 2px 2px 0; + cursor: default; + white-space: nowrap; +} + +.hasIcon { + padding: 0px 4px 4px 0px; +} + +a:hover, .zoomLink:hover, .linkActive:hover { + background: #507aac; +} + +.linkPending, .linkPending:hover { + color: #ffffff; + background: #507aac; +} + +a.white, a.white:link, a.white:visited, a.white:active { + color: #40628a; + text-decoration: none; + background: #ffffff; + border: 1px solid #161616; + padding: 1px 4px 1px 4px; + margin: 0 2px 0 0; + cursor: default; +} + +a.white:hover { + color: #ffffff; + background: #40628a; +} + +.hidden { + display: none; +} + +.linkOn, a.linkOn:link, a.linkOn:visited, a.linkOn:active, a.linkOn:hover, .selected, a.selected:link, a.selected:visited, a.selected:active, a.selected:hover { + color: #ffffff; + background: #2f943c; +} + +.linkOff, a.linkOff:link, a.linkOff:visited, a.linkOff:active, a.linkOff:hover, .disabled, a.disabled:link, a.disabled:visited, a.disabled:active, a.disabled:hover { + color: #ffffff; + background: #999999; + border-color: #666666; +} + +a.icon, .linkOn.icon, .linkOff.icon, .selected.icon, .disabled.icon { + position: relative; + padding: 1px 4px 2px 20px; +} + +a.icon img, .linkOn.icon img, .linkOff.icon img, .selected.icon img, .disabled.icon img { + position: absolute; + top: 0; + left: 0; + width: 18px; + height: 18px; +} + +.linkDanger, a.linkDanger:link, a.linkDanger:visited, a.linkDanger:active { + color: #ffffff; + background-color: #ff0000; + border-color: #aa0000; +} + +.linkDanger:hover { + background-color: #ff6666; +} + +ul { + padding: 4px 0 0 10px; + margin: 0; + list-style-type: none; +} + +dl dt { + font-weight: bold; +} + +li { + padding: 0 0 2px 0; +} + +img, a img { + border-style: none; +} + +h1, h2, h3, h4, h5, h6 { + margin: 0; + padding: 12px 0 6px 0; + color: #FFFFFF; + clear: both; +} + +h1 { + font-size: 18px; +} + +h2 { + font-size: 16px; +} + +h3 { + font-size: 14px; +} + +h4 { + font-size: 12px; +} + +abbr { + border-bottom: .1em dotted; +} + +.white { + color: white; + font-weight: bold; +} + +.good { + color: #4f7529; + font-weight: bold; +} + +.mild { + color: #cda500; + font-weight: bold; +} + +.average { + color: #cd6500; + font-weight: bold; +} + +.bad { + color: #ee0000; + font-weight: bold; +} + +.idle { + color: #272727; + font-weight: bold; +} + +.redButton { + background: #ea0000; +} + +.yellowButton { + background: #cacc00; +} + +.highlight { + color: #8BA5C4; +} + +.dark { + color: #272727; +} + +.caption { + font-size: 10px; + font-weight: bold; + padding: 5px; +} + +.footer { + font-size: 10px; +} + +.noticePlaceholder { + position: relative; + font-size: 12px; + font-style: italic; + font-weight: bold; + padding: 3px 4px 3px 4px; + margin: 4px 0 4px 0; +} + +.notice { + position: relative; + background: url(https://github.com/ss220club/WyccerraBay220/blob/master/nano/images/uiNoticeBackground.jpg?raw=true) 50% 50%; + color: #000000; + font-size: 12px; + font-style: italic; + font-weight: bold; + padding: 3px 4px 3px 4px; + margin: 4px 0 4px 0; +} + +.notice.icon { + padding: 2px 4px 0 20px; +} + +.notice img { + position: absolute; + top: 0; + left: 0; + width: 16px; + height: 16px; +} + +div.notice { + clear: both; +} + +.notice.info { + background: url(https://github.com/ss220club/WyccerraBay220/blob/master/nano/images/uiInfoBackground.jpg?raw=true) 50% 50%; +} + +.itemGroup { + border: 1px solid #e9c183; + background: #2c2c2c; + padding: 4px; + clear: both; +} + +.item { + width: 100%; + margin: 4px 0 0 0; + clear: both; + overflow: auto; +} + +.itemContentNarrow, .itemContent { + float: left; +} + +.itemContentNarrow { + width: 30%; +} + +.itemContent { + width: 69%; +} + +.itemLabelNarrow, .itemLabel, .itemLabelWide, .itemLabelWider, .itemLabelWidest { + float: left; + color: #e9c183; +} + +.itemLabelNarrow { + width: 20%; +} + +.itemLabel { + width: 30%; +} + +.itemLabelWide { + width: 45%; +} + +.itemLabelWider { + width: 69%; +} + +.itemLabelWidest { + width: 100%; +} + +.itemContentWide { + float: left; + width: 79%; +} + +.itemContentSmall { + float: left; + width: 33%; +} + +.itemContentMedium { + float: left; + width: 55%; +} + +.statusDisplay { + background: #000000; + color: #ffffff; + border: 1px solid #40628a; + padding: 4px; + margin: 3px 0; + overflow: hidden; +} + +.statusDisplayRecords { + background: #000000; + color: #ffffff; + border: 1px solid #40628a; + padding: 4px; + margin: 3px 0; + overflow-x: hidden; + overflow-y: auto; +} + +.statusDisplayComm { + width: 100%; + background: rgba(0, 0, 0, 0.5); + color: #ffffff; + padding-bottom: 4px; + border-top: 0 none; + border-left: 0 none; + border-right: 0 none; + border-bottom: 2px inset #40628a; + margin: 3px 0; + overflow: hidden; +} + +.statusLabel { + width: 138px; + float: left; + overflow: hidden; + color: #98B0C3; +} + +.statusValue { + float: left; +} + +.block { + padding: 8px; + margin: 10px 4px 4px 4px; + border: 1px solid #40628a; + background-color: #202020; +} + +.block h3 { + padding: 0; +} + +.displayBar { + position: relative; + width: 236px; + height: 16px; + border: 1px solid #666666; + float: left; + margin: 0 5px 0 0; + overflow: hidden; + background: #000000; +} + +.displayBarText, .displayBarVerticalText, .displayBarBeakerText{ + position: absolute; + top: -2px; + left: 5px; + width: 100%; + height: 100%; + color: #ffffff; + font-weight: normal; +} + +.displayBarFill { + width: 0%; + height: 100%; + background: #40628a; + overflow: hidden; + float: left; +} + +.displayBarVertical { + position: relative; + width: 16px; + height: 200px; + border: 1px solid #666666; + float: left; + margin: 0 5px 0 0; + overflow: hidden; + background: #40628a; +} + +.displayBarVerticalFill { + width: 100%; + height: 0%; + overflow: hidden; + float: left; + background: #000000; +} + +/*used in xenobio2 computer*/ + +.displayBarBeaker { + position: relative; + width: 100px; + height: 110px; + border-right: 2px solid rgb(102, 179, 255); + border-left: 2px solid rgb(102, 179, 255); + border-bottom: 2px solid rgb(102, 179, 255); + float: left; + margin: 0 5px 0 0; + overflow: hidden; + background: #40628a; +} + +.displayBarBeakerFill { + width: 100%; + height: 0%; + overflow: hidden; + float: left; + background: rgba(153, 204, 255, 0.3); +} + +.displayBarFill.alignRight { + float: right; +} + +.displayBarFill.good { + color: #ffffff; + background: #4f7529; +} + +.displayBarFill.average { + color: #ffffff; + background: #cd6500; +} + +.displayBarFill.bad { + color: #ffffff; + background: #ee0000; +} + +.displayBarFill.highlight { + color: #ffffff; + background: #8BA5C4; +} + +.clearBoth { + clear: both; +} + +.clearLeft { + clear: left; +} + +.clearRight { + clear: right; +} + +.line { + width: 100%; + clear: both; +} + +.inactive, a.inactive:link, a.inactive:visited, a.inactive:active, a.inactive:hover { + color: #ffffff; + background: #999999; + border-color: #666666; +} + +.fixedLeft { + width: 110px; + float: left; +} + +.fixedLeftWide { + width: 165px; + float: left; +} + +.fixedLeftWider { + width: 220px; + float: left; +} + +.fixedLeftWidest { + width: 250px; + float: left; +} + +.fixedLeftWiderRed { + width: 220px; + float: left; + background: #ee0000; +} + +.floatRight { + float: right; +} + +.floatLeft { + float: left; +} + +/* Used in PDA */ + +.wholeScreen { + position: absolute; + color: #517087; + font-size: 16px; + font-weight: bold; + text-align: center; +} + +.pdalink { + float: left; + white-space: nowrap; +} + +/* DNA Modifier UI (dna_modifier.tmpl) */ + +.dnaBlock { + float: left; + width: 90px; + padding: 0 0 5px 0; +} + +.dnaBlockNumber { + font-family: Fixed, monospace; + float: left; + color: #ffffff; + background: #363636; + min-width: 20px; + height: 20px; + padding: 0; + text-align: center; +} + +.dnaSubBlock { + font-family: Fixed, monospace; + float: left; + padding: 0; + min-width: 16px; + height: 20px; + text-align: center; +} + +.mask { + position: fixed; + left: 0; + top: 0; + width: 100%; + height: 100%; + background: url(https://github.com/ss220club/WyccerraBay220/blob/master/nano/images/uiMaskBackground.png?raw=true); +} + +.maskContent { + width: 100%; + height: 200px; + margin: 200px 0; + text-align: center; +} + +table.fixed { + table-layout:fixed; +} + +table.fixed td { + overflow: hidden; +} + +/* Table stuffs for power monitor */ +table.pmon { + border: 2px solid RoyalBlue; +} + +table.pmon td, table.pmon th { + border-bottom: 1px dotted black; + padding: 0px 5px 0px 5px; +} + +/* Table Stuffs for manifest*/ + +th.command { + background: #3333FF; + font-weight: bold; + color: #ffffff; +} + +th.spt { + background: #4f4ff2; + font-weight: bold; + color: #ffffff; +} + +th.sec { + background: #8e0000; + font-weight: bold; + color: #ffffff; +} + +th.med { + background: #006600; + font-weight: bold; + color: #ffffff; +} + +th.eng { + background: #b27300; + font-weight: bold; + color: #ffffff; +} + +th.sci { + background: #a65ba6; + font-weight: bold; + color: #ffffff; +} + +th.car { + background: #bb9040; + font-weight: bold; + color: #ffffff; +} + +th.sup { + background: #bb9040; + font-weight: bold; + color: #ffffff; +} + +th.civ { + background: #a32800; + font-weight: bold; + color: #ffffff; +} + +th.srv { + background: #88b764; + font-weight: bold; + color: #ffffff; +} + +th.exp { + background: #68099e; + font-weight: bold; + color: #ffffff; +} + +th.misc { + background: #666666; + font-weight: bold; + color: #ffffff; +} + +th.bot { + background: #414249; + font-weight: bold; + color: #ffffff; +} + +/* Damage colors for crew monitoring computer */ + +.burn { + color: orange; +} + +.brute { + color: red; +} + +.toxin { + color: green; +} + +.oxyloss { + color: cyan; +} + +/* 75px width used in power monitoring console buttons */ +.width75btn { + width: 75px; +} +.wideTable tr:nth-child(odd) { + background-color: #272727; +} + +/* Candystriped rows for tables */ +.candystripe { + background-color: rgba(148, 148, 148, 0.25); +} +.candystripe:nth-child(odd) { + background-color: rgba(0, 0, 0, 0.16); +} + +.redacted { + background-color: black; + color: black; +} diff --git a/app/public/nanoui/index.html b/app/public/nanoui/index.html new file mode 100644 index 0000000..14a815b --- /dev/null +++ b/app/public/nanoui/index.html @@ -0,0 +1,20 @@ + + + TGUI at home + + + + + +
+
+
TGUI at home
+
+
+
+
+
Loading...
+
+
+ + \ No newline at end of file