From 824ffc4f4a4fa097e22a91585ca18cd57c3e7af7 Mon Sep 17 00:00:00 2001 From: developingright Date: Fri, 6 May 2022 12:24:38 +0530 Subject: [PATCH] build constants file and removed Jeremy refrence --- .parcelrc | 4 + package-lock.json | 24 ++- package.json | 6 +- public/main.css | 27 ++-- public/static/logo.png | Bin 0 -> 16737 bytes src/Components/RightSidebar.elm | 15 +- src/Pages/Help/About.elm | 271 ++++++++++++++++++++++++++++++-- src/Pages/Help/Changelog.elm | 35 ++++- src/Pages/Help/Developers.elm | 88 ++++++++++- src/Pages/Help/Readme.elm | 142 ++++++++++++++++- src/Pages/Help/Translations.elm | 41 ++++- src/VersionConstants.elm | 18 +++ 12 files changed, 619 insertions(+), 52 deletions(-) create mode 100644 .parcelrc create mode 100644 public/static/logo.png create mode 100644 src/VersionConstants.elm diff --git a/.parcelrc b/.parcelrc new file mode 100644 index 00000000..55a9ca4b --- /dev/null +++ b/.parcelrc @@ -0,0 +1,4 @@ +{ + "extends": ["@parcel/config-default"], + "reporters": ["...", "parcel-reporter-static-files-copy"] +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 2fa171d4..c5448cd5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,8 @@ "elm-test": "0.19.1-revision6", "node-elm-compiler": "^5.0.6", "npm-run-all": "4.1.5", - "parcel": "^2.0.0" + "parcel": "^2.0.0", + "parcel-reporter-static-files-copy": "^1.3.4" } }, "node_modules/@babel/code-frame": { @@ -8356,6 +8357,18 @@ "url": "https://opencollective.com/parcel" } }, + "node_modules/parcel-reporter-static-files-copy": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/parcel-reporter-static-files-copy/-/parcel-reporter-static-files-copy-1.3.4.tgz", + "integrity": "sha512-JRTzz8P7jyaHdj1piBY+YzkWrNFmi+LKYdImxAdoOimdYCpeM1Tuk4vVEhVxeh2lN83MBxc72evWm0lPaZGWZA==", + "dev": true, + "dependencies": { + "@parcel/plugin": "^2.0.0-beta.1" + }, + "engines": { + "parcel": "^2.0.0-beta.1" + } + }, "node_modules/parcel/node_modules/@parcel/fs": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.4.1.tgz", @@ -15951,6 +15964,15 @@ } } }, + "parcel-reporter-static-files-copy": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/parcel-reporter-static-files-copy/-/parcel-reporter-static-files-copy-1.3.4.tgz", + "integrity": "sha512-JRTzz8P7jyaHdj1piBY+YzkWrNFmi+LKYdImxAdoOimdYCpeM1Tuk4vVEhVxeh2lN83MBxc72evWm0lPaZGWZA==", + "dev": true, + "requires": { + "@parcel/plugin": "^2.0.0-beta.1" + } + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", diff --git a/package.json b/package.json index bf9b778c..add6f3c5 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,10 @@ "elm-test": "0.19.1-revision6", "node-elm-compiler": "^5.0.6", "npm-run-all": "4.1.5", - "parcel": "^2.0.0" + "parcel": "^2.0.0", + "parcel-reporter-static-files-copy": "^1.3.4" + } + ,"staticFiles": { + "staticPath": "./public/static/" } } diff --git a/public/main.css b/public/main.css index 8069e179..2f4a7e38 100644 --- a/public/main.css +++ b/public/main.css @@ -3,8 +3,7 @@ src: url("./opensans.woff") format("woff"); } -.input-range-container { -} +.input-range-container {} /* In the case of the double slider, each individual slider has it's width set to 100% of the parent element. Therefore, in order to set a fixed width, it is recommended to set it on the parent element and not override the width of the range slider. This is to ensure the flexibility of the component. */ .input-range-container, @@ -108,14 +107,14 @@ cursor: not-allowed; } -.input-range:disabled ~ .input-range__track, -.input-range:disabled:hover ~ .input-range__track { +.input-range:disabled~.input-range__track, +.input-range:disabled:hover~.input-range__track { cursor: not-allowed; background-color: rgb(42, 43, 44); } -.input-range:disabled ~ .input-range__progress, -.input-range:disabled:hover ~ .input-range__progress { +.input-range:disabled~.input-range__progress, +.input-range:disabled:hover~.input-range__progress { cursor: not-allowed; background-color: #dcdee1; } @@ -173,6 +172,12 @@ .input-range__progress { background-color: rgb(51, 51, 51); + border-right: 7px solid rgba(0, 0, 0, 0); + transition: border-color 0.2s linear; +} + +.input-range__progress:hover { + border-right: 7px solid rgb(99, 97, 97); } .input-range-labels-container { @@ -245,7 +250,7 @@ h2 { color: #2b2f30; } -.markdown p > code { +.markdown p>code { background-color: #f5f5f5; padding: 2px; border: 1px solid #ccc; @@ -253,13 +258,13 @@ h2 { font-size: 0.9em; } -.markdown p > code:hover { +.markdown p>code:hover { border: 1px solid #12b2e7; border-radius: 4px; color: #12b2e7; } -.markdown li > code { +.markdown li>code { background-color: #f5f5f5; padding: 2px; border: 1px solid #ccc; @@ -267,8 +272,8 @@ h2 { font-size: 0.9em; } -.markdown li > code:hover { +.markdown li>code:hover { border: 1px solid #12b2e7; border-radius: 4px; color: #12b2e7; -} +} \ No newline at end of file diff --git a/public/static/logo.png b/public/static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..99749229ccd3b48d5a65618a4dd1c223dd77e402 GIT binary patch literal 16737 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 literal 0 HcmV?d00001 diff --git a/src/Components/RightSidebar.elm b/src/Components/RightSidebar.elm index 57075de7..f8aa395b 100644 --- a/src/Components/RightSidebar.elm +++ b/src/Components/RightSidebar.elm @@ -2,8 +2,9 @@ module Components.RightSidebar exposing (view) import Colors exposing (greyIcon) import Components.LayoutType exposing (ShowRightSidebarMenu) -import Element exposing (Attribute, Element, alignRight, centerX, centerY, column, el, fill, height, htmlAttribute, padding, paddingXY, px, rgb, row, spacing, text, width) +import Element exposing (Attribute, Element, alignRight, centerX, centerY, column, el, fill, height, htmlAttribute, image, padding, paddingXY, px, rgb, row, spacing, text, width) import Element.Background as Background +import Element.Font as Font import Element.Input as Input import Html.Attributes import Material.Icons as Filled @@ -17,7 +18,17 @@ view { showRightSidebarMenu, showRightSidebarMenuMsg, clearPlaylistMsg, refreshP column [ height (px panelHeight), width (px 400), Background.color Colors.playlistHeaderBackground, alignRight, htmlAttribute <| Html.Attributes.style "pointer-events" "all" ] [ row [ width fill ] - [ Input.button [ Background.color Colors.backgroundKodi, height (px 50), width (px 100), padding 8 ] { onPress = Just rightSidebarMsg, label = Element.text "Kodi" } + [ Input.button [ Background.color Colors.backgroundKodi, height (px 50), width (px 100), padding 8 ] + { onPress = Just rightSidebarMsg + , label = + Element.row [] + [ image [ width (px 15), height (px 15), paddingXY 15 0 ] + { description = "" + , src = "logo.png" + } + , el [ Font.color (Element.rgb255 18 178 231) ] (text " Kodi") + ] + } , Input.button [ Background.color Colors.backgroundLocal, height (px 50), width (px 100), padding 8 ] { onPress = Just rightSidebarMsg , label = diff --git a/src/Pages/Help/About.elm b/src/Pages/Help/About.elm index 161ab7f1..b9e843b4 100644 --- a/src/Pages/Help/About.elm +++ b/src/Pages/Help/About.elm @@ -2,24 +2,65 @@ module Pages.Help.About exposing (Model, Msg, Params, page) import Colors import Components.VerticalNavHelp -import Element exposing (column, fill, fillPortion, row, spacingXY) +import Element exposing (..) import Element.Background as Background +import Element.Font as Font +import Html exposing (..) +import Html.Attributes exposing (class) +import Markdown exposing (..) +import Shared import Spa.Document exposing (Document) import Spa.Generated.Route exposing (Route) import Spa.Page as Page exposing (Page) -import Spa.Url as Url exposing (Url) +import Spa.Url exposing (Url) +import VersionConstants exposing (chorusVersion, kodiVersion, localAudio) +import WSDecoder exposing (Connection(..)) page : Page Params Model Msg page = - Page.element + Page.application { init = init , update = update , view = view , subscriptions = subscriptions + , save = save + , load = load } +load : Shared.Model -> Model -> ( Model, Cmd Msg ) +load shared model = + ( { model | connect = shared.connection }, Cmd.none ) + + +save : Model -> Shared.Model -> Shared.Model +save model shared = + { shared + | album_list = shared.album_list + , artist_list = shared.artist_list + , connection = shared.connection + , controlMenu = shared.controlMenu + , currentlyPlaying = shared.currentlyPlaying + , flags = shared.flags + , genre_list = shared.genre_list + , key = shared.key + , movie_list = shared.movie_list + , players = shared.players + , playing = shared.playing + , progressSlider = shared.progressSlider + , rightSidebarExtended = shared.rightSidebarExtended + , searchString = shared.searchString + , song_list = shared.song_list + , source_list = [] + , tvshow_list = shared.tvshow_list + , url = shared.url + , volumeSlider = shared.volumeSlider + , windowHeight = shared.windowHeight + , windowWidth = shared.windowWidth + } + + -- INIT @@ -29,12 +70,18 @@ type alias Params = type alias Model = - { route : Route } + { route : Route + , connect : Connection + } -init : Url Params -> ( Model, Cmd Msg ) -init url = - ( { route = url.route }, Cmd.none ) +init : Shared.Model -> Url Params -> ( Model, Cmd Msg ) +init shared url = + ( { route = url.route + , connect = shared.connection + } + , Cmd.none + ) @@ -53,11 +100,93 @@ update msg model = subscriptions : Model -> Sub Msg -subscriptions model = +subscriptions _ = Sub.none +-- MARKDOWN + + +contentUnderStatus : Html msg +contentUnderStatus = + Markdown.toHtml [ class "markdown" ] """ + +Status Report +------------ +""" + + +content : Html msg +content = + Markdown.toHtml [ class "markdown" ] """ + + + + +What is Chorus? +--------- +Chorus is a web interface for controlling and interacting with [Kodi]. It is hosted by your Kodi installation so + +anything that can run Kodi should have no problems with Chorus. + +With a web interface you could potentially be controlling a Kodi player from the other side of the world. But more + +likely, you will be controlling a local Kodi player in your home or office. + +### Who made it possible? + +* Kodi, and the thousands of awesome people who contribute to it. If you [love it, support it]. + +* These [wonderful people] who gave a helping hand. + +* All the great tools available, which are really too many to list, but if you have anything to do with the contents + + of [this folder] then cheers! + +* The amazing photographers who have submitted their images to [unsplash] and [pexels] with a CC0 license. + +Bugs and Features +--------- +### Is something broken? +It happens, it could also be a "Cool idea"? Chorus is a complex app and Kodi is way more complex. For Chorus + +issues you can [create an issue] on Github. It is important that you provide as much information as possible. + +Great things to include are: + +* Information from "Status report" on this page. +* Any errors that show up in the console of your browser. +* Detailed description including steps to replicate and screen shots if applicable. +* **And if you are an amazing person** a patch in a pull request to fix it :) + +### Cool ideas +Got neat addition or a feature wish list for Chorus? You can add them to the [Github] page or even better, send + +through a pull request. + +Tell me more +--------- +View the [readme] for an overview, the [changelog] lists notable changes between versions or maybe you can help + +with [translations]. + + +[Kodi]: https://kodi.tv/ +[love it, support it]: http://kodi.tv/contribute/ +[wonderful people]: https://github.com/xbmc/elm-chorus/graphs/contributors +[this folder]: https://github.com/xbmc/elm-chorus/tree/main/src +[pexels]: https://www.pexels.com/ +[unsplash]: https://unsplash.com/ +[Github]: https://github.com/xbmc/elm-chorus/issues +[create an issue]: https://github.com/xbmc/elm-chorus/issues +[readme]: http://localhost:1234/help/readme +[changelog]: http://localhost:1234/help/changelog +[translations]: http://localhost:1234/help/changelog +""" + + + -- VIEW @@ -65,9 +194,125 @@ view : Model -> Document Msg view model = { title = "Help.About" , body = - Components.VerticalNavHelp.view - model.route - ++ [ column [ Element.height fill, Element.width (fillPortion 6), spacingXY 5 7, Background.color Colors.background ] - [] - ] + [ row [ Element.height fill, Element.width fill ] + [ column [ Element.height fill, Element.width (fillPortion 3), scrollbarY ] (Components.VerticalNavHelp.view model.route) + , column [ Element.height fill, Element.width (fillPortion 6), spacingXY 5 7, Background.color Colors.white, padding 40 ] + [ el + [ Font.color (rgb255 0 0 0) + , Font.size 40 + , Font.family + [ Font.typeface "Open Sans" + , Font.sansSerif + ] + ] + (Element.text "About Chorus") + , Element.row [ padding 10, spacing 7 ] + [ Element.el [] none + , Element.el [] none + ] + , el + [ Font.color (rgb255 0 0 0) ] + (Element.html contentUnderStatus) + , Element.row [ padding 10, spacing 7 ] + [ Element.el [] none + , viewStatus model.connect + ] + , el + [ Font.color (rgb255 0 0 0) ] + (Element.html content) + ] + , column [ Element.height fill, Element.width (fillPortion 6), spacingXY 5 7, Background.color Colors.greyscaleMercury, padding 40 ] [] + ] + ] } + + +viewStatus : Connection -> Element Msg +viewStatus connection = + column [ Element.height fill, Element.width fill ] + [ row [ Element.height fill, Element.width (fillPortion 6), spacing 87 ] + [ el + [ Font.color (rgb255 0 0 0) + , Font.bold + , Font.size 15 + , Font.family + [ Font.typeface "Open Sans" + , Font.sansSerif + ] + ] + (Element.text "Chorus version") + , el + [ Font.color (rgb255 0 0 0) + ] + (Element.text chorusVersion) + ] + , Element.row [ padding 10, spacing 7 ] + [ Element.el [] none + , Element.el [] none + ] + , row [ Element.height fill, Element.width fill, spacing 106 ] + [ el + [ Font.color (rgb255 0 0 0) + , Font.extraBold + , Font.size 15 + , Font.family + [ Font.typeface "Open Sans" + , Font.sansSerif + ] + ] + (Element.text "Kodi version") + , el + [ Font.color (rgb255 0 0 0) + ] + (Element.text kodiVersion) + ] + , Element.row [ padding 10, spacing 7 ] + [ Element.el [] none + , Element.el [] none + ] + , row [ Element.height fill, Element.width fill, spacing 85 ] + [ el + [ Font.color (rgb255 0 0 0) + , Font.extraBold + , Font.size 15 + , Font.family + [ Font.typeface "Open Sans" + , Font.sansSerif + ] + ] + (Element.text "Remote Control") + , el + [ Font.color (rgb255 0 0 0) + ] + (case connection of + Connected -> + Element.text "Remote control is set up correctly" + + Disconnected -> + Element.text "You need to 'Allow remote control' for Kodi. You can do that" + + NotAsked -> + Element.text "Remote control access not asked" + ) + ] + , Element.row [ padding 10, spacing 7 ] + [ Element.el [] none + , Element.el [] none + ] + , row [ Element.height fill, Element.width fill, spacing 115 ] + [ el + [ Font.color (rgb255 0 0 0) + , Font.extraBold + , Font.size 15 + , Font.family + [ Font.typeface "Open Sans" + , Font.sansSerif + ] + ] + (Element.text "Local Audio") + , el + [ Font.color (rgb255 0 0 0) + ] + (Element.text localAudio) + ] + ] diff --git a/src/Pages/Help/Changelog.elm b/src/Pages/Help/Changelog.elm index e08463bd..0fe53ec9 100644 --- a/src/Pages/Help/Changelog.elm +++ b/src/Pages/Help/Changelog.elm @@ -2,8 +2,12 @@ module Pages.Help.Changelog exposing (Model, Msg, Params, page) import Colors import Components.VerticalNavHelp -import Element exposing (column, fill, fillPortion, row, spacingXY) +import Element exposing (..) import Element.Background as Background +import Element.Font as Font +import Html exposing (Html) +import Html.Attributes exposing (class) +import Markdown exposing (..) import Spa.Document exposing (Document) import Spa.Generated.Route exposing (Route) import Spa.Page as Page exposing (Page) @@ -58,6 +62,22 @@ subscriptions model = +-- Markdown + + +content : Html msg +content = + Markdown.toHtml [ class "markdown" ] """ + +## Version 1.0.0 +- Majority of the build. See: https://github.com/xbmc/elm-chorus/commits/main +- Many features from Chorus 2 have been incorporated. + + +""" + + + -- VIEW @@ -65,9 +85,12 @@ view : Model -> Document Msg view model = { title = "Help.Changelog" , body = - Components.VerticalNavHelp.view - model.route - ++ [ column [ Element.height fill, Element.width (fillPortion 6), spacingXY 5 7, Background.color Colors.background ] - [] - ] + [ row [ Element.height fill, Element.width fill ] + [ column [ Element.height fill, Element.width (fillPortion 3), scrollbarY ] (Components.VerticalNavHelp.view model.route) + , column [ Element.height fill, Element.width (fillPortion 6), spacingXY 5 7, Background.color Colors.white, padding 40 ] + [ el [ Font.color (rgb255 0 0 0) ] (Element.html content) + ] + , column [ Element.height fill, Element.width (fillPortion 6), spacingXY 5 7, Background.color Colors.greyscaleMercury, padding 40 ] [] + ] + ] } diff --git a/src/Pages/Help/Developers.elm b/src/Pages/Help/Developers.elm index 1a6efd0c..9a84a532 100644 --- a/src/Pages/Help/Developers.elm +++ b/src/Pages/Help/Developers.elm @@ -2,8 +2,12 @@ module Pages.Help.Developers exposing (Model, Msg, Params, page) import Colors import Components.VerticalNavHelp -import Element exposing (column, fill, fillPortion, row, spacingXY) +import Element exposing (..) import Element.Background as Background +import Element.Font as Font +import Html exposing (Html) +import Html.Attributes exposing (class) +import Markdown exposing (..) import Spa.Document exposing (Document) import Spa.Generated.Route exposing (Route) import Spa.Page as Page exposing (Page) @@ -58,6 +62,75 @@ subscriptions model = +-- Markdown + + +content : Html msg +content = + Markdown.toHtml [ class "markdown" ] """ + +# Developers information + +Do you want to help with making Chorus even better? Find help below... + +This page contains information about getting your dev environment up and running so you can build and test + +your changes without the hassle of setting up all the required dependencies. + +## Developing elm chorus + +To develop elm-chorus, you must have the following: + +** For MacOS, Windows, Linux ** +- Kodi application +- Chrome/Chromium, Firefox +- Elm +- NPM + +### Installing Kodi Application + +You can refer to this [guide] in order to install the application and run the following commands: + +~~~ +sudo apt install software-properties-common + +sudo add-apt-repository -y ppa:team-xbmc/ppa + +sudo apt install kodi +~~~ + +** For NPM ** : you can checkout the [official website]. + +** For Elm ** : you can refer to this[ guide] in order to install Elm. + +### Building/Running the Project + +Firstly, make sure that you have Kodi application running in the background, then run the following commands: + +~~~ +git clone https://github.com/xbmc/elm-chorus.git + +cd elm-chorus/ + +npm start +~~~ +and point your browser to http://localhost:1234 by default or whatever port Node tells you. + +## Committing your changes + +As a rule of thumb, you should use elm-format in order to format the Elm files in which you have made the changes and Prettier for JS, CSS, etc. + +before pushing it. + +** ** + +[official website]:https://nodejs.org/en/ +[guide]: https://kodi.wiki/view/HOW-TO:Install_Kodi_for_Linux +[ guide]: https://guide.elm-lang.org/install/elm.html +""" + + + -- VIEW @@ -65,9 +138,12 @@ view : Model -> Document Msg view model = { title = "Help.Developers" , body = - Components.VerticalNavHelp.view - model.route - ++ [ column [ Element.height fill, Element.width (fillPortion 6), spacingXY 5 7, Background.color Colors.background ] - [] - ] + [ row [ Element.height fill, Element.width fill ] + [ column [ Element.height fill, Element.width (fillPortion 3), scrollbarY ] (Components.VerticalNavHelp.view model.route) + , column [ Element.height fill, Element.width (fillPortion 6), spacingXY 5 7, Background.color Colors.white, padding 40 ] + [ el [ Font.color (rgb255 0 0 0) ] (Element.html content) + ] + , column [ Element.height fill, Element.width (fillPortion 6), spacingXY 5 7, Background.color Colors.greyscaleMercury, padding 40 ] [] + ] + ] } diff --git a/src/Pages/Help/Readme.elm b/src/Pages/Help/Readme.elm index faaa4d7a..d120476a 100644 --- a/src/Pages/Help/Readme.elm +++ b/src/Pages/Help/Readme.elm @@ -2,8 +2,12 @@ module Pages.Help.Readme exposing (Model, Msg, Params, page) import Colors import Components.VerticalNavHelp -import Element exposing (column, fill, fillPortion, row, spacingXY) +import Element exposing (..) import Element.Background as Background +import Element.Font as Font +import Html exposing (Html) +import Html.Attributes exposing (class) +import Markdown exposing (..) import Spa.Document exposing (Document) import Spa.Generated.Route exposing (Route) import Spa.Page as Page exposing (Page) @@ -58,6 +62,129 @@ subscriptions model = +-- Markdown + + +content : Html msg +content = + Markdown.toHtml [ class "markdown" ] """ + +# Kodi Web Interface - Elm Chorus + +The default Web Interface for Kodi. + +A great modern Web UI for Kodi. Browse your Music, Movies or TV Shows from the comfort of your own web + +browser. You can play media via Kodi or stream it in your browser. Works best with Chrome but plays well with + +most modern browsers. + +Successor to [Chorus2]. A complete rebuild using Elm. + +## Author + +[Alex Ionkov] with help from [these kind people]. + +## Current state +In Elm-Chorus, the basic layout and functionality from Chorus 2 has already been implemented but it still lacks some features, + +styling and layout pages. Still considered in-development project, expect bugs, changes, nuclear war,etc. + +## Feature requests / Bugs + +Add them to the list. For bugs please include Kodi version, Web browser version, Chorus version and any errors + +that display in the console. For feature requests, checkout the API browser to see if your request is currently + +possible. + +## Streaming + +Disclaimer: The success of this depends on the file formats vs what the browser supports. In general most things + +work. + +### Audio streaming + +In the top right there are some tabs, two of them are named Kodi and Local, this is how you toggle what player + +the UI is controlling. In Local mode the logo and accents are pinky-red, In Kodi mode the logo is the Kodi blue. + +When you are in a given mode, actions affect that player, so if you click Play on a track when in Local mode, it will + +play through the browser, likewise, when in Kodi mode all commands are sent to Kodi. You can also add media to + +other playlists by clicking the menu buttons (three dots vertical) on most media items. + +### Video streaming + +Video streaming via HTML5 "sort of" works, it really depends on the codec used. An embedded VLC player is also + +available with better codec support. This looks like the best we can get until Kodi supports transcoding. **Chrome** + +**users: ** Chrome has removed support for vlc/divx plugins so streaming a video requires a [Chrome friendly codec]. + +For best results use Chrome with mp4 video that has 2 channel audio (5.1 audio doesn't seem to work). + +## Kodi settings via the web interface + +You can change most of the settings you would find in Kodi via the settings page in the web interface. Some + +settings have been omitted as they require interaction with the GUI and others are just a basic text field with no + +options. + +## Contributing + +If you would like to make this project better I would appreciate any help. You can do pull requests against the + +main branch. See the [developers] section for information about getting a dev environment up and running the project. + +### Translations + +At the moment, there are a handful of languages available but more can be easily added. More strings are always being + +added so always consider english as the source of truth. So if you see something in english but want it in your language, + +I need you! To contribute, send us a Pull request or if you don't know git, a link to the language file. + +_English is the only real complete translation file so start with that as your base_. + +## Donate + +Are you a fan of Chorus? You can buy Alex a beer to say thanks :) + +## License + +This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License + +as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later + +version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + +implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + +License for more details. + +You should have received a copy of the GNU General Public License [along with this program]; if not, write to the + +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +[Click here for more information] . + +[Click here for more information]: https://github.com/xbmc/chorus2/blob/master/src/lang/en/license.md +[along with this program]: https://github.com/xbmc/chorus2/blob/master/LICENSE +[developers]: http://localhost:1234/help/developers +[Chrome friendly codec]: https://en.wikipedia.org/wiki/HTML5_video#Browser_support +[Alex Ionkov]: https://ionkov.com/ +[these kind people]: https://github.com/xbmc/elm-chorus/graphs/contributors +[Chorus2]: https://github.com/xbmc/chorus2 +""" + + + -- VIEW @@ -65,9 +192,12 @@ view : Model -> Document Msg view model = { title = "Help.Readme" , body = - Components.VerticalNavHelp.view - model.route - ++ [ column [ Element.height fill, Element.width (fillPortion 6), spacingXY 5 7, Background.color Colors.background ] - [] - ] + [ row [ Element.height fill, Element.width fill ] + [ column [ Element.height fill, Element.width (fillPortion 3), scrollbarY ] (Components.VerticalNavHelp.view model.route) + , column [ Element.height fill, Element.width (fillPortion 6), spacingXY 5 7, Background.color Colors.white, padding 40 ] + [ el [ Font.color (rgb255 0 0 0) ] (Element.html content) + ] + , column [ Element.height fill, Element.width (fillPortion 6), spacingXY 5 7, Background.color Colors.greyscaleMercury, padding 40 ] [] + ] + ] } diff --git a/src/Pages/Help/Translations.elm b/src/Pages/Help/Translations.elm index 4eda4a8a..7ed9c0ae 100644 --- a/src/Pages/Help/Translations.elm +++ b/src/Pages/Help/Translations.elm @@ -2,8 +2,12 @@ module Pages.Help.Translations exposing (Model, Msg, Params, page) import Colors import Components.VerticalNavHelp -import Element exposing (column, fill, fillPortion, row, spacingXY) +import Element exposing (..) import Element.Background as Background +import Element.Font as Font +import Html exposing (Html) +import Html.Attributes exposing (class) +import Markdown exposing (..) import Spa.Document exposing (Document) import Spa.Generated.Route exposing (Route) import Spa.Page as Page exposing (Page) @@ -58,6 +62,28 @@ subscriptions model = +-- Markdown + + +content : Html msg +content = + Markdown.toHtml [ class "markdown" ] """ + +# Translations + +To update the language files you just need to know a bit of GIT. This page should help with the structure of + +language files. + +## Submitting an update + +Send a pull request through [GitHub] on a new branch is the best way. Would consider updates via other methods. + +[Github]: https://github.com/xbmc/elm-chorus +""" + + + -- VIEW @@ -65,9 +91,12 @@ view : Model -> Document Msg view model = { title = "Help.Translations" , body = - Components.VerticalNavHelp.view - model.route - ++ [ column [ Element.height fill, Element.width (fillPortion 6), spacingXY 5 7, Background.color Colors.background ] - [] - ] + [ row [ Element.height fill, Element.width fill ] + [ column [ Element.height fill, Element.width (fillPortion 3), scrollbarY ] (Components.VerticalNavHelp.view model.route) + , column [ Element.height fill, Element.width (fillPortion 6), spacingXY 5 7, Background.color Colors.white, padding 40 ] + [ el [ Font.color (rgb255 0 0 0) ] (Element.html content) + ] + , column [ Element.height fill, Element.width (fillPortion 6), spacingXY 5 7, Background.color Colors.greyscaleMercury, padding 40 ] [] + ] + ] } diff --git a/src/VersionConstants.elm b/src/VersionConstants.elm new file mode 100644 index 00000000..a923de77 --- /dev/null +++ b/src/VersionConstants.elm @@ -0,0 +1,18 @@ +module VersionConstants exposing (chorusVersion, kodiVersion, localAudio) + +import WSDecoder exposing (Connection(..)) + + +chorusVersion : String +chorusVersion = + "1.0.0" + + +kodiVersion : String +kodiVersion = + "19.3" + + +localAudio : String +localAudio = + "HTML 5"