diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 7c78d82..e1def6e 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -1,11 +1,6 @@ module.exports = { root: true, extends: ['eslint:recommended', 'plugin:svelte/recommended', 'prettier'], - overrides: [ - { - "files": ["**/*.svelte"] - } - ], parserOptions: { sourceType: 'module', ecmaVersion: 2020, @@ -17,6 +12,6 @@ module.exports = { node: true }, rules: { - indent: ['error', 2, {SwitchCase: 2}], + indent: ['error', 2, { SwitchCase: 2 }] } }; diff --git a/.prettierrc b/.prettierrc index a77fdde..6307b22 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,9 +1,11 @@ { - "useTabs": true, - "singleQuote": true, - "trailingComma": "none", - "printWidth": 100, - "plugins": ["prettier-plugin-svelte"], - "pluginSearchDirs": ["."], - "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] + "useTabs": false, + "tabWidth": 2, + "semi": true, + "singleQuote": true, + "trailingComma": "none", + "printWidth": 80, + "plugins": ["prettier-plugin-svelte"], + "pluginSearchDirs": ["."], + "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] } diff --git a/jsconfig.json b/jsconfig.json index fe45e13..f1da068 100644 --- a/jsconfig.json +++ b/jsconfig.json @@ -1,17 +1,17 @@ { - "extends": "./.svelte-kit/tsconfig.json", - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "sourceMap": true, - "strict": true - } - // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias and https://kit.svelte.dev/docs/configuration#files - // - // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes - // from the referenced tsconfig.json - TypeScript does not merge them in + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true + } + // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias and https://kit.svelte.dev/docs/configuration#files + // + // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes + // from the referenced tsconfig.json - TypeScript does not merge them in } diff --git a/package.json b/package.json index a0a988b..7617842 100644 --- a/package.json +++ b/package.json @@ -1,29 +1,29 @@ { - "name": "owlboard-svelte", - "version": "0.0.1", - "private": true, - "scripts": { - "dev": "vite dev", - "build": "vite build", - "preview": "vite preview", - "check": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json", - "check:watch": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json --watch", - "lint": "prettier --plugin-search-dir . --check . && eslint .", - "format": "prettier --plugin-search-dir . --write ." - }, - "devDependencies": { - "@sveltejs/adapter-auto": "^2.0.0", - "@sveltejs/adapter-static": "^2.0.2", - "@sveltejs/kit": "^1.5.0", - "eslint": "^8.28.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-svelte": "^2.26.0", - "prettier": "^2.8.0", - "prettier-plugin-svelte": "^2.8.1", - "svelte": "^3.54.0", - "svelte-check": "^3.0.1", - "typescript": "^5.0.0", - "vite": "^4.3.0" - }, - "type": "module" + "name": "owlboard-svelte", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview", + "check": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json --watch", + "lint": "prettier --plugin-search-dir . --check . && eslint .", + "format": "prettier --plugin-search-dir . --write ." + }, + "devDependencies": { + "@sveltejs/adapter-auto": "^2.0.0", + "@sveltejs/adapter-static": "^2.0.2", + "@sveltejs/kit": "^1.5.0", + "eslint": "^8.28.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-svelte": "^2.26.0", + "prettier": "^2.8.0", + "prettier-plugin-svelte": "^2.8.1", + "svelte": "^3.54.0", + "svelte-check": "^3.0.1", + "typescript": "^5.0.0", + "vite": "^4.3.0" + }, + "type": "module" } diff --git a/src/app.css b/src/app.css index 9e8445f..e968024 100644 --- a/src/app.css +++ b/src/app.css @@ -1,72 +1,75 @@ /* FONTS */ @font-face { - font-family: 'firamono'; - src: url('/font/firamono/firamono-regular.woff2') format('woff2'), - url('/font/firamono/firamono-regular.woff') format('woff'), - url('/font/firamono/firamono-regular.ttf') format('truetype'); - font-weight: normal; - font-style: normal; - } - @font-face { - font-family: 'firamono'; - src: url('/font/firamono/firamono-500.woff2') format('woff2'), - url('/font/firamono/firamono-500.woff') format('woff'), - url('/font/firamono/firamono-500.ttf') format('truetype'); - font-weight: 500; - font-style: normal; - } - @font-face { - font-family: 'urwgothic'; - src: url('/font/urwgothic/urwgothic.woff2') format('woff2'), - url('/font/urwgothic/urwgothic.woff') format('woff'), - url('/font/urwgothic/urwgothic.ttf') format('truetype'); - font-weight: normal; - font-style: normal; - } - @font-face { - font-family: 'urwgothic'; - src: url('/font/urwgothic/urwgothicDemi.woff2') format('woff2'), - url('/font/urwgothic/urwgothicDemi.woff') format('woff'), - url('/font/urwgothic/urwgothicDemi.ttf') format('truetype'); - font-weight: 900; - font-style: normal; - } + font-family: 'firamono'; + src: url('/font/firamono/firamono-regular.woff2') format('woff2'), + url('/font/firamono/firamono-regular.woff') format('woff'), + url('/font/firamono/firamono-regular.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} +@font-face { + font-family: 'firamono'; + src: url('/font/firamono/firamono-500.woff2') format('woff2'), + url('/font/firamono/firamono-500.woff') format('woff'), + url('/font/firamono/firamono-500.ttf') format('truetype'); + font-weight: 500; + font-style: normal; +} +@font-face { + font-family: 'urwgothic'; + src: url('/font/urwgothic/urwgothic.woff2') format('woff2'), + url('/font/urwgothic/urwgothic.woff') format('woff'), + url('/font/urwgothic/urwgothic.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} +@font-face { + font-family: 'urwgothic'; + src: url('/font/urwgothic/urwgothicDemi.woff2') format('woff2'), + url('/font/urwgothic/urwgothicDemi.woff') format('woff'), + url('/font/urwgothic/urwgothicDemi.ttf') format('truetype'); + font-weight: 900; + font-style: normal; +} /* COLOR VARS */ :root { - --main-bg-color: #404c55; - --second-bg-color: #2b343c; /* Use as first arg in radial gradient */ - --accent-color: #007979; - --overlay-color: #3c6f79de; - --overlay-color-solid: #3c6f79; - --main-text-color: #00b7b7; - --second-text-color: #0afdfd; - --note-text-color: #9de7ff; - --link-color: azure; - --box-border-color: ; - --link-visited-color: azure; - --main-alert-color: #ed6d00; - --second-alert-color: #e77f00; /* Use as second arg in radial gradient */ - --main-warning-color: orange; - --board-name-color: #fcfc09; - } + --main-bg-color: #404c55; + --second-bg-color: #2b343c; /* Use as first arg in radial gradient */ + --accent-color: #007979; + --overlay-color: #3c6f79de; + --overlay-color-solid: #3c6f79; + --main-text-color: #00b7b7; + --second-text-color: #0afdfd; + --note-text-color: #9de7ff; + --link-color: azure; + --box-border-color: ; + --link-visited-color: azure; + --main-alert-color: #ed6d00; + --second-alert-color: #e77f00; /* Use as second arg in radial gradient */ + --main-warning-color: orange; + --board-name-color: #fcfc09; +} - html{ - width: 100%; - height: 100%; - } +html { + width: 100%; + height: 100%; +} - body { - background-color: var(--main-bg-color); - background-image: radial-gradient(var(--second-bg-color), var(--main-bg-color)); - color: var(--second-text-color); - font-family: urwgothic, sans-serif; - text-align: center; - padding-bottom: 60px; /*Footer height*/ - } - a { - color: var(--link-color) - } - button:hover { - cursor: pointer; - } \ No newline at end of file +body { + background-color: var(--main-bg-color); + background-image: radial-gradient( + var(--second-bg-color), + var(--main-bg-color) + ); + color: var(--second-text-color); + font-family: urwgothic, sans-serif; + text-align: center; + padding-bottom: 60px; /*Footer height*/ +} +a { + color: var(--link-color); +} +button:hover { + cursor: pointer; +} diff --git a/src/app.d.ts b/src/app.d.ts index f59b884..899c7e8 100644 --- a/src/app.d.ts +++ b/src/app.d.ts @@ -1,12 +1,12 @@ // See https://kit.svelte.dev/docs/types#app // for information about these interfaces declare global { - namespace App { - // interface Error {} - // interface Locals {} - // interface PageData {} - // interface Platform {} - } + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface Platform {} + } } export {}; diff --git a/src/app.html b/src/app.html index 526d1bb..cf1bfd5 100644 --- a/src/app.html +++ b/src/app.html @@ -1,9 +1,9 @@ -
- %sveltekit.head% - - -Go to settings to add your Quick Links
- {/if} - - + {/if} +Click the + button to add links
- {/if} - - - -Click the + button to add links
+ {/if} + + + +{line}
- {/each} - + {#each resultObject.resultLines as line} +{line}
+ {/each}There is one active alert
- {:else if uniqueAlerts.length > 1} -There are {numberAsWord(uniqueAlerts.length)} active alerts
- {:else} -There are no active alerts
- {/if} -V
+ + {#if uniqueAlerts.length == 1} +There is one active alert
+ {:else if uniqueAlerts.length > 1} ++ There are {numberAsWord(uniqueAlerts.length)} active alerts +
+ {:else} +There are no active alerts
+ {/if} +V
{@html msg}
- {/each} -{@html msg}
+ {/each} +Updated: {dataAge.toLocaleTimeString()}
- {#if services.length} -From | +To | +Plat. | +Sch Arr. | +Exp Arr. | +Sch Dep. | +Exp Dep. | +|||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
From | -To | -Plat. | -Sch Arr. | -Exp Arr. | -Sch Dep. | -Exp Dep. | ++ {#if Array.isArray(service.origin?.location)} + {service.origin.location[0]['locationName'] + + ' & ' + + service.origin.location[1]['locationName']} + {:else} + {service.origin?.location?.locationName || ''} + {/if} + | ++ {#if Array.isArray(service.destination?.location)} + {service.destination.location[0]['locationName'] + + ' & ' + + service.destination.location[0]['locationName']} + {:else} + {service.destination?.location?.locationName || ''} + {/if} + | +{service.platform || '-'} | +{parseTime(service.sta).data} | +{parseTime(service.eta).data} | +{parseTime(service.std).data} | +{parseTime(service.etd).data} |
- {#if Array.isArray(service.origin?.location)} - {service.origin.location[0]['locationName'] + - " & " + - service.origin.location[1]['locationName']} - {:else} - {service.origin?.location?.locationName || ''} - {/if} - | -- {#if Array.isArray(service.destination?.location)} - {service.destination.location[0]['locationName'] + - " & " + - service.destination.location[0]['locationName']} - {:else} - {service.destination?.location?.locationName || ''} - {/if} - | -{service.platform || '-'} | -{parseTime(service.sta).data} | -{parseTime(service.eta).data} | -{parseTime(service.std).data} | -{parseTime(service.etd).data} | -|||||||
+ | |||||||||||||
A {service.operator || 'Unknown'} service {#if service['length']} @@ -205,36 +219,56 @@ {#if service.cancelReason} {service.cancelReason} {/if} - |
No Scheduled Train Services
- {/if} - {#if busServices.length} -No Scheduled Train Services
+ {/if} + {#if busServices.length} +From | +To | +Sch Arr. | +Exp Arr. | +Sch Dep. | +Exp Dep. | +||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From | -To | -Sch Arr. | -Exp Arr. | -Sch Dep. | -Exp Dep. | +{service.origin?.location?.locationName || ''} | +{service.destination?.location?.locationName || ''} | +{parseTime(service.sta).data} | +{parseTime(service.eta).data} | +{parseTime(service.std).data} | +{parseTime(service.etd).data} |
{service.origin?.location?.locationName || ''} | -{service.destination?.location?.locationName || ''} | -{parseTime(service.sta).data} | -{parseTime(service.eta).data} | -{parseTime(service.std).data} | -{parseTime(service.etd).data} | -||||||
+ | |||||||||||
A {service.operator || 'Unknown'} service @@ -244,47 +278,61 @@ {#if service.cancelReason}{service.cancelReason} {/if} - |
From | +To | +Sch Arr. | +Exp Arr. | +Sch Dep. | +Exp Dep. | +||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From | -To | -Sch Arr. | -Exp Arr. | -Sch Dep. | -Exp Dep. | +{service.origin?.location?.locationName || ''} | +{service.destination?.location?.locationName || ''} | +{parseTime(service.sta).data} | +{parseTime(service.eta).data} | +{parseTime(service.std).data} | +{parseTime(service.etd).data} |
{service.origin?.location?.locationName || ''} | -{service.destination?.location?.locationName || ''} | -{parseTime(service.sta).data} | -{parseTime(service.eta).data} | -{parseTime(service.std).data} | -{parseTime(service.etd).data} | -||||||
+ | |||||||||||
{#if service.delayReason}
{service.delayReason} {/if} {#if service.cancelReason}{service.cancelReason} {/if} - |
Unable to find this station
+ + {/each} +Unable to find this station
{/if} {#if serviceDetail} @@ -304,21 +352,47 @@Updated: {dataAge.toLocaleTimeString()} - Staff Boards under development | |||||||
ID | -From | -To | -Plat | -Sch Arr | -Exp Arr | -Sch Dep | -Exp Dep | -
---|---|---|---|---|---|---|---|
- Loading... - | -|||||||
{service.trainid} | -{serviceStats.from} | -{serviceStats.to} | -{serviceStats.platform.number || '-'} | -{serviceStats.schArr} | -{serviceStats.isArrDelayed ? 'LATE' : serviceStats.expArr} | -{serviceStats.schDep} | -{serviceStats.isDepDelayed ? 'LATE' : serviceStats.expDep} | -
- {service.operator} {#if serviceStats.length} | {serviceStats.length} carriages{/if}
- - {#if service.isCancelled} - {#await getReasonCodeData(service.cancelReason)} - This train has been cancelled - {:then reasonCode} - {reasonCode[0].cancReason} - - {/await} - {/if} - {#if service?.delayReason} - {#await getReasonCodeData(service.delayReason)} - This train has been delayed - {:then reasonCode} - {reasonCode[0].lateReason} - - {/await} - {/if} - |
- |||||||
Unable to load service | -
✔
-Done
+✔
+Done
Loading...
+Loading...
PIS: {service.pis}
+PIS: {service.pis}
+ {/if} ++ Planned Type: {parseInt(service.planSpeed) || 68}mph {service.powerType || + 'Bus'} +
++ Days Run: {service.daysRun.join(', ').toUpperCase()} +
++ Valid From: {new Date(service.scheduleStartDate).toLocaleDateString( + 'en-GB', + { + timeZone: 'UTC' + } + )} - {new Date(service.scheduleEndDate).toLocaleDateString('en-GB', { + timeZone: 'UTC' + })} +
+Location | +Sch Arr. | +Sch Dep. | +
---|---|---|
{stop.tiploc} | +{stop.publicArrival || '-'} | +{stop.publicDeparture || '-'} | +
Location | -Sch Arr. | -Sch Dep. | -
---|---|---|
{stop.tiploc} | -{stop.publicArrival || '-'} | -{stop.publicDeparture || '-'} | -
{stop.tiploc} | -{stop.wttArrival || '-'} | -{stop.wttDeparture || '-'} | -
This is not the page you're looking for.
-The page you are looking for doesn't exist, use the tabs below to find another page.
+This is not the page you're looking for.
++ The page you are looking for doesn't exist, use the tabs below to find + another page. +
{:else if $page.status === 500} -Something went wrong loading the app.
- Try going home and try again.
If the problem persists, you can report an issue from the 'More' menu.
+
+ Something went wrong loading the app.
+ Try going home and try again.
+
If the problem persists, you can report an issue from the 'More' menu.
{:else} -Not sure what went wrong, please try again later or report an issue from - the 'More' menu.
++ Not sure what went wrong, please try again later or report an issue from the + 'More' menu. +
{/if} - \ No newline at end of file + diff --git a/src/routes/+layout.js b/src/routes/+layout.js index c8cacf0..189f71e 100644 --- a/src/routes/+layout.js +++ b/src/routes/+layout.js @@ -1 +1 @@ -export const prerender = true; \ No newline at end of file +export const prerender = true; diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 3be7d5b..bb7b38f 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,16 +1,20 @@ +{item.title}
-© 2022-2023 Frederick Boniface
OwlBoard was created by train-crew for train-crew
-I created OwlBoard in 2022 to freely give fast and easy access to the information - that we need every day.
-Data sourced from: National Rail Enquiries, OwlBoard Project and Network Rail.
-OwlBoard components are available under various Open Source licenses, see the - code repository - for more information. +
+ I created OwlBoard in 2022 to freely give fast and easy access to the + information that we need every day. +
++ Data sourced from: National Rail Enquiries, OwlBoard Project and Network Rail. +
++ OwlBoard components are available under various Open Source licenses, see the + code repository + for more information.
\ No newline at end of file + .neg { + margin-top: -40px; + margin-bottom: 40px; + } + diff --git a/src/routes/more/corpus/+page.svelte b/src/routes/more/corpus/+page.svelte index 2bd5631..f2f7652 100644 --- a/src/routes/more/corpus/+page.svelte +++ b/src/routes/more/corpus/+page.svelte @@ -1,133 +1,163 @@ - +Enter one of the codes below and press submit.
OwlBoard doesn't currently support searching by name or UIC.
Some locations only have some applicable location codes.
OwlBoard stores as little data about you as possible to offer the service.
-Your randomly generated UUID is not displayed, this is stored in your browser and on the OwlBoard server.
-The data below is the entirity of the data we hold about you and constitutes a response to a `Subject Access Request` under GDPR legislation.
-+ OwlBoard stores as little data about you as possible to offer the service. +
++ Your randomly generated UUID is not displayed, this is stored in your browser + and on the OwlBoard server. +
++ The data below is the entirity of the data we hold about you and constitutes a + response to a `Subject Access Request` under GDPR legislation. +
+Registration Domain: {data[0]['domain']}
+Access Time: {data[0]['atime']}
{:else} - {#if data[0].domain != "User not Found"} -Registration Domain: {data[0]['domain']}
-Access Time: {data[0]['atime']}
- {:else} -You are not registered, we don't have any data stored.
- {/if} ++ You are not registered, we don't have any data stored. +
{/if} - + \ No newline at end of file + .api_response { + color: white; + } + diff --git a/src/routes/more/privacy/+page.svelte b/src/routes/more/privacy/+page.svelte index da435a5..24cdf50 100644 --- a/src/routes/more/privacy/+page.svelte +++ b/src/routes/more/privacy/+page.svelte @@ -1,41 +1,82 @@ - -OwlBoard stores the minimum amount of data necessary to provide its functions for your use. No personal data is stored unless you report an issue. To review the specific data that we store, please visit My Data.
-OwlBoard does not utilize any cookies. IP addresses and browser fingerprints are not logged.
-If you choose not to sign up, no personal data will be processed or stored unless you report an issue. Any personal settings are stored locally in your browser and do not leave your device.
-If you sign up for the rail staff version of OwlBoard, we do require the storage of some data. However, none of this data can be used to personally identify you. Any personal settings are stored locally in your browser and do not leave your device.
-During the sign-up process, you will be asked to provide a work email address, which will be checked to confirm its origin from a railway company. Once confirmed, an email containing a registration link will be sent to you. At this point, the username portion of your email address is discarded. For example, if your email address is 'a-user@owlboard.info', only 'owlboard.info' will be stored. This host portion of your email address is stored to filter and display relevant results prominently.
-The email server may store the address and message content as part of its regular operation, and your consent to this is implied when you sign up.
-In addition to the host portion of your email address, a randomly generated UUID is stored for the purpose of authorizing access to the rail staff data.
-When you report an issue, certain data is collected, including your browser's User Agent string and the size of the window in which you are viewing the website.
-Any data submitted when reporting an issue will be publicly viewable alongside the OwlBoard/backend git repository.
-+ OwlBoard stores the minimum amount of data necessary to provide its + functions for your use. No personal data is stored unless you report an + issue. To review the specific data that we store, please visit My Data. +
++ OwlBoard does not utilize any cookies. IP addresses and browser fingerprints + are not logged. +
++ If you choose not to sign up, no personal data will be processed or stored + unless you report an issue. Any personal settings are stored locally in your + browser and do not leave your device. +
++ If you sign up for the rail staff version of OwlBoard, we do require the + storage of some data. However, none of this data can be used to personally + identify you. Any personal settings are stored locally in your browser and + do not leave your device. +
++ During the sign-up process, you will be asked to provide a work email + address, which will be checked to confirm its origin from a railway company. + Once confirmed, an email containing a registration link will be sent to you. + At this point, the username portion of your email address is discarded. For + example, if your email address is 'a-user@owlboard.info', only + 'owlboard.info' will be stored. This host portion of your email address is + stored to filter and display relevant results prominently. +
++ The email server may store the address and message content as part of its + regular operation, and your consent to this is implied when you sign up. +
++ In addition to the host portion of your email address, a randomly generated + UUID is stored for the purpose of authorizing access to the rail staff data. +
++ When you report an issue, certain data is collected, including your + browser's User Agent string and the size of the window in which you are + viewing the website. +
++ Any data submitted when reporting an issue will be publicly viewable + alongside the OwlBoard/backend git repository. +
+A reason code is a three digit number that maps to a reason for a delay or cancellation
++ A reason code is a three digit number that maps to a reason for a delay or + cancellation +
@@ -88,34 +93,36 @@ \ No newline at end of file + p { + margin-top: 20px; + } + input { + width: 25%; + min-width: 150px; + height: 32px; + margin-top: 10px; + margin-bottom: 5px; + border-radius: 50px; + border: none; + text-align: center; + font-family: urwgothic, 'Lucida Sans', 'Lucida Sans Regular', + 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif; + text-transform: uppercase; + font-size: 15px; + } + button { + width: 15%; + min-width: 100px; + margin-bottom: 5px; + margin-top: 5px; + border: none; + border-radius: 20px; + padding: 5px; + font-family: urwgothic, 'Lucida Sans', 'Lucida Sans Regular', + 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif; + font-size: 16px; + font-weight: 400; + background-color: var(--overlay-color); + color: var(--link-color); + } + diff --git a/src/routes/more/reg/+page.svelte b/src/routes/more/reg/+page.svelte index 9d08af0..621fd36 100644 --- a/src/routes/more/reg/+page.svelte +++ b/src/routes/more/reg/+page.svelte @@ -1,49 +1,48 @@ {#if isLoading} @@ -51,71 +50,95 @@ {/if}The staff version of OwlBoard offers several extra features:
To register, you will need to enter a work email address to receive a confirmation email
++ To register, you will need to enter a work email address to receive a + confirmation email +
- -{:else if state == "sent"} -An email has been sent, click the link in the email to activate your profile.
-When you click the link, your authorisation key will be automatically be stored in your browser.
-If you use multiple browsers, you will only be logged in using the browser you open the link with.
+{:else if state == 'sent'} ++ An email has been sent, click the link in the email to activate your + profile. +
++ When you click the link, your authorisation key will be automatically be + stored in your browser. +
++ If you use multiple browsers, you will only be logged in using the browser + you open the link with. +
You will be able to register again using the same email address
-{:else if state == "unauth"} -The email address you entered does not belong to an authorised business.
-If you think this is an error, you can report an issue in the 'More' menu.
-{:else if state == "error"} +{:else if state == 'unauth'} ++ The email address you entered does not belong to an authorised business. +
++ If you think this is an error, you can report an issue in the 'More' menu. +
+{:else if state == 'error'}There was an error processing your request.
Check that the email you entered was correct or try again later.
-{:else if state == "reg"} +{:else if state == 'reg'}You are already registered for OwlBoard
{/if} - + \ No newline at end of file + ul { + text-align: left; + color: white; + } + input { + height: 40px; + width: 80%; + max-width: 375px; + font-family: urwgothic, 'Franklin Gothic Medium', 'Arial Narrow', Arial, + sans-serif; + text-align: center; + font-size: 20px; + border-radius: 50px; + border: none; + margin-bottom: 20px; + } + #checkbox { + height: 30px; + width: 30px; + } + button { + border: none; + background-color: var(--overlay-color); + color: white; + width: 35%; + height: 30px; + border-radius: 50px; + font-size: 18px; + } + diff --git a/src/routes/more/reg/submit/+page.svelte b/src/routes/more/reg/submit/+page.svelte index 21a8ae7..82bc491 100644 --- a/src/routes/more/reg/submit/+page.svelte +++ b/src/routes/more/reg/submit/+page.svelte @@ -1,72 +1,73 @@ +Unable to read your access key.
Please click the link in your email again.
-{:else if state == "unauth"} +{:else if state == 'unauth'}Your link is not valid, links expire after 30 minutes.
You can try to register again.
-{:else if state == "error"} +{:else if state == 'error'}There was an error on our end, please try again later
-{:else if state == "done"} +{:else if state == 'done'}You are now logged in
{/if} - \ No newline at end of file + diff --git a/src/routes/more/report/+page.svelte b/src/routes/more/report/+page.svelte index aff139d..23c740a 100644 --- a/src/routes/more/report/+page.svelte +++ b/src/routes/more/report/+page.svelte @@ -1,76 +1,80 @@ +Any data that you enter here will be visible publicly - here +
+ Any data that you enter here will be visible publicly + here +
++ You will be shown all of the collected data before the form is submitted.
-You will be shown all of the collected data before the form is submitted.
{:else} -User Agent: {reportCollected.userAgent}
-Browser: {reportCollected.browser} - {reportCollected.version}
-Platform: {reportCollected.platform}
-Viewport: {reportCollected.viewport}
+User Agent: {reportCollected.userAgent}
++ Browser: {reportCollected.browser} - {reportCollected.version} +
+Platform: {reportCollected.platform}
+Viewport: {reportCollected.viewport}
Report Type: {reportType}
-{reportSubject}
-{reportMsg}
+Report Type: {reportType}
+{reportSubject}
+{reportMsg}
-API Server:
{data?.hostname}
API Server:
{data?.hostname}
Runtime Mode: {data?.runtimeMode}
Stats Reset: {U2L(data?.reset) || 'Unknown'}
Timetable: {data?.dbLengths?.timetable}
Reason Codes: {data?.dbLengths?.reasonCodes}
{/if} - + \ No newline at end of file + diff --git a/src/routes/more/versions/+page.svelte b/src/routes/more/versions/+page.svelte index 978546a..822b6c4 100644 --- a/src/routes/more/versions/+page.svelte +++ b/src/routes/more/versions/+page.svelte @@ -1,43 +1,47 @@ - +Web-app Version
{"2023.7.1-Svelte-Dev"}
API Server Version
{data.backend}
DBManager Version
{data['db-manager']}
+ Web-app Version
{'2023.7.1-Svelte-Dev'}
+
API Server Version
{data.backend}
DBManager Version
{data['db-manager']}
{errMsg}
{:else if data.length} -TOC | -Code | -Stops | -
---|---|---|
{item.operator || "-"} | -{item.code} | -{item.stops.join(" ")} | -
TOC | +Code | +Stops | +
---|---|---|
{item.operator || '-'} | +{item.code} | +{item.stops.join(' ')} | +
To search by headcode use the Train Finder on the homepage
This feature is only supported for GWR West & Sleeper services
Find By Start/End CRS:
Find By PIS Code:
{/if} \ No newline at end of file + .label { + font-weight: 600; + color: var(--main-text-color); + } + input { + border: none; + border-radius: 50px; + font-family: urwgothic, sans-serif; + text-align: center; + text-transform: uppercase; + width: 30%; + max-width: 250px; + height: 30px; + font-size: 16px; + margin-bottom: 15px; + } + button { + border: none; + border-radius: 50px; + font-family: urwgothic, sans-serif; + width: 25%; + max-width: 175px; + margin: 0px; + margin-left: 10px; + margin-right: 10px; + height: 30px; + background-color: var(--overlay-color); + color: white; + font-size: 16px; + } + table { + width: 100%; + margin: auto; + color: white; + } + td { + padding-top: 5px; + padding-bottom: 5px; + } + .toc { + width: 15%; + } + .code { + width: 20%; + } + .toc-data { + text-transform: uppercase; + } + .stops-data { + text-align: left; + font-family: firamono, monospace; + text-transform: uppercase; + } + .error { + color: white; + } + #reset { + margin: 25px; + } + diff --git a/src/routes/train/+page.svelte b/src/routes/train/+page.svelte index cffdccd..db8d551 100644 --- a/src/routes/train/+page.svelte +++ b/src/routes/train/+page.svelte @@ -1,90 +1,89 @@{errMsg}
-{errMsg}
+