Moving snapcast to debug (as beta)
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
67
mopidy_iris/static/app.min.css
vendored
67
mopidy_iris/static/app.min.css
vendored
@ -3183,25 +3183,25 @@ input[type="submit"] {
|
||||
content: '';
|
||||
clear: both;
|
||||
display: block; }
|
||||
.field .name {
|
||||
.field > .name {
|
||||
display: block;
|
||||
padding-top: 10px;
|
||||
width: 20%;
|
||||
float: left; }
|
||||
.field > .input {
|
||||
width: 80%;
|
||||
float: left; }
|
||||
.field > .input input,
|
||||
.field > .input select,
|
||||
.field > .input textarea {
|
||||
width: 100%; }
|
||||
.field > .input .text {
|
||||
display: block;
|
||||
padding: 10px 14px 10px 0; }
|
||||
.field label {
|
||||
display: inline-block; }
|
||||
.field .label .tooltip {
|
||||
left: -4px; }
|
||||
.field .input {
|
||||
width: 80%;
|
||||
float: left; }
|
||||
.field .input input,
|
||||
.field .input select,
|
||||
.field .input textarea {
|
||||
width: 100%; }
|
||||
.field .input .text {
|
||||
display: block;
|
||||
padding: 10px 14px 10px 0; }
|
||||
.field.radio input, .field.checkbox input {
|
||||
display: none; }
|
||||
.field.radio .input, .field.checkbox .input {
|
||||
@ -3447,8 +3447,11 @@ input[type="submit"] {
|
||||
font-weight: 300;
|
||||
color: inherit;
|
||||
border-bottom: 1px solid #454440 !important; }
|
||||
#context-menu .liner > span button .icon,
|
||||
#context-menu .liner > span button .fa,
|
||||
#context-menu .liner > span .button .icon,
|
||||
#context-menu .liner > span .button .fa,
|
||||
#context-menu .liner > span .dropdown-field .icon,
|
||||
#context-menu .liner > span .dropdown-field .fa {
|
||||
display: none; }
|
||||
.notouch #context-menu .liner > span button:hover, .notouch
|
||||
@ -4157,7 +4160,7 @@ input[type="submit"] {
|
||||
.playback-controls section.progress {
|
||||
bottom: 10px;
|
||||
left: 140px;
|
||||
right: 280px;
|
||||
right: 260px;
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
color: #a3a19f; }
|
||||
@ -4181,7 +4184,7 @@ input[type="submit"] {
|
||||
width: 50px; }
|
||||
.playback-controls section.settings {
|
||||
right: 170px;
|
||||
width: 120px;
|
||||
width: 100px;
|
||||
text-align: center; }
|
||||
.playback-controls section.volume {
|
||||
bottom: 10px;
|
||||
@ -4266,8 +4269,42 @@ input[type="submit"] {
|
||||
left: 0;
|
||||
right: 0; } }
|
||||
|
||||
.snapcast .group .clients {
|
||||
padding-left: 20px; }
|
||||
.snapcast .group > .inner {
|
||||
padding-bottom: 5px;
|
||||
border-bottom: 1px solid #383734; }
|
||||
.snapcast .group > .inner > .name {
|
||||
font-weight: bold; }
|
||||
|
||||
.snapcast .group .clients .client.disconnected {
|
||||
opacity: 0.5; }
|
||||
|
||||
.snapcast .group .clients .client > .inner {
|
||||
padding: 5px 0;
|
||||
border-bottom: 1px solid #383734; }
|
||||
|
||||
.snapcast .group .clients .client .name {
|
||||
padding: 6px 0 5px 0;
|
||||
display: block;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
border: 0; }
|
||||
|
||||
.snapcast .group .clients .client .controls .edit {
|
||||
display: inline-block;
|
||||
float: left;
|
||||
cursor: pointer; }
|
||||
|
||||
.snapcast .group .clients .client .controls .volume-control .mute-control {
|
||||
display: inline-block;
|
||||
float: left;
|
||||
padding: 0 10px;
|
||||
border: 0; }
|
||||
|
||||
.snapcast .group .clients .client .controls .volume-control .slider-wrapper {
|
||||
margin-left: 40px; }
|
||||
|
||||
.snapcast .group .clients .client .controls .volume-control.muted .slider .progress {
|
||||
background: #a3a19f; }
|
||||
|
||||
aside {
|
||||
position: fixed;
|
||||
|
||||
48
mopidy_iris/static/app.min.js
vendored
48
mopidy_iris/static/app.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -38,7 +38,7 @@
|
||||
|
||||
// Release details
|
||||
// These are automatically injected to built HTML
|
||||
var build = "1521786595";
|
||||
var build = "1521924986";
|
||||
var version = "3.14.2";
|
||||
|
||||
// Construct the script tag
|
||||
|
||||
3
setup.py
3
setup.py
@ -26,7 +26,8 @@ setup(
|
||||
'Mopidy-Local-Images >= 1.0',
|
||||
'ConfigObj >= 5.0.6',
|
||||
'raven >= 6.1.0',
|
||||
'requests >= 2.0.0'
|
||||
'requests >= 2.0.0',
|
||||
'tornado >= 3.2, < 5.0'
|
||||
],
|
||||
classifiers=[
|
||||
'Environment :: No Input/Output (Daemon)',
|
||||
|
||||
@ -250,7 +250,9 @@ export function reorderTracklist(indexes, insert_before){
|
||||
}
|
||||
|
||||
export function clearTracklist(){
|
||||
return instruct('tracklist.clear')
|
||||
return {
|
||||
type: 'MOPIDY_CLEAR_TRACKLIST'
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -287,9 +287,11 @@ const MopidyMiddleware = (function(){
|
||||
store.dispatch(pusherActions.deliverBroadcast(
|
||||
'notification',
|
||||
{
|
||||
type: 'info',
|
||||
content: store.getState().pusher.username +' paused playback',
|
||||
icon: (store.getState().core.current_track ? helpers.getTrackIcon(store.getState().core.current_track, store.getState().core) : false)
|
||||
notification: {
|
||||
type: 'info',
|
||||
content: store.getState().pusher.username +' paused playback',
|
||||
icon: (store.getState().core.current_track ? helpers.getTrackIcon(store.getState().core.current_track, store.getState().core) : false)
|
||||
}
|
||||
}
|
||||
));
|
||||
break
|
||||
@ -786,6 +788,19 @@ const MopidyMiddleware = (function(){
|
||||
)
|
||||
break;
|
||||
|
||||
case 'MOPIDY_CLEAR_TRACKLIST':
|
||||
instruct(socket, store, 'tracklist.clear');
|
||||
store.dispatch(pusherActions.deliverBroadcast(
|
||||
'notification',
|
||||
{
|
||||
notification: {
|
||||
type: 'info',
|
||||
content: store.getState().pusher.username +' cleared queue'
|
||||
}
|
||||
}
|
||||
));
|
||||
break;
|
||||
|
||||
|
||||
/**
|
||||
* =============================================================== SEARCHING ============
|
||||
|
||||
@ -12,6 +12,7 @@ import URISchemesList from '../components/URISchemesList'
|
||||
import VersionManager from '../components/VersionManager'
|
||||
import Header from '../components/Header'
|
||||
import Thumbnail from '../components/Thumbnail'
|
||||
import Snapcast from '../components/Snapcast'
|
||||
|
||||
import * as uiActions from '../services/ui/actions'
|
||||
import * as pusherActions from '../services/pusher/actions'
|
||||
@ -119,6 +120,11 @@ class Debug extends React.Component{
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<h4 className="underline">Snapcast (beta)</h4>
|
||||
<div className="field">
|
||||
<Snapcast />
|
||||
</div>
|
||||
|
||||
<h4 className="underline">Spotify</h4>
|
||||
<div className="field">
|
||||
<div className="name">Access token</div>
|
||||
|
||||
@ -16,7 +16,6 @@ import Parallax from '../components/Parallax'
|
||||
import Icon from '../components/Icon'
|
||||
import Thumbnail from '../components/Thumbnail'
|
||||
import URILink from '../components/URILink'
|
||||
import Snapcast from '../components/Snapcast'
|
||||
|
||||
import * as coreActions from '../services/core/actions'
|
||||
import * as uiActions from '../services/ui/actions'
|
||||
@ -266,63 +265,6 @@ class Settings extends React.Component {
|
||||
|
||||
<section className="content-wrapper">
|
||||
|
||||
<h4 className="underline">Audio output</h4>
|
||||
<div className="field">
|
||||
<Snapcast />
|
||||
</div>
|
||||
<h4 className="underline">Streaming</h4>
|
||||
|
||||
<div className="field checkbox">
|
||||
<div className="name">Enable</div>
|
||||
<div className="input">
|
||||
<label>
|
||||
<input
|
||||
type="checkbox"
|
||||
name="ssl"
|
||||
checked={this.props.core.http_streaming_enabled}
|
||||
onChange={e => this.props.coreActions.set({http_streaming_enabled: !this.props.core.http_streaming_enabled})} />
|
||||
<span className="label has-tooltip">
|
||||
Stream audio to this browser
|
||||
<span className="tooltip">Requires streaming service like Icecast2</span>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div className="field radio">
|
||||
<div className="name">Encoding</div>
|
||||
<div className="input">
|
||||
<label>
|
||||
<input
|
||||
type="radio"
|
||||
name="http_streaming_encoding"
|
||||
checked={this.props.core.http_streaming_encoding == 'mpeg'}
|
||||
onChange={e => this.props.coreActions.set({http_streaming_encoding: 'mpeg'})} />
|
||||
<span className="label">mpeg (mp3)</span>
|
||||
</label>
|
||||
<label>
|
||||
<input
|
||||
type="radio"
|
||||
name="http_streaming_encoding"
|
||||
checked={this.props.core.http_streaming_encoding == 'ogg'}
|
||||
onChange={e => this.props.coreActions.set({http_streaming_encoding: 'ogg'})} />
|
||||
<span className="label">ogg</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="field">
|
||||
<div className="name">Location</div>
|
||||
<div className="input">
|
||||
<input
|
||||
type="text"
|
||||
onChange={e => this.props.coreActions.set({http_streaming_url: e.target.value})}
|
||||
value={this.props.core.http_streaming_url} />
|
||||
<div className="description">
|
||||
The full URL to your stream endpoint
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h4 className="underline">Server</h4>
|
||||
|
||||
<div className="field">
|
||||
@ -389,7 +331,60 @@ class Settings extends React.Component {
|
||||
</div>
|
||||
</div>
|
||||
{this.renderApplyButton()}
|
||||
</form>
|
||||
</form>
|
||||
|
||||
<h4 className="underline">Streaming</h4>
|
||||
|
||||
<div className="field checkbox">
|
||||
<div className="name">Enable</div>
|
||||
<div className="input">
|
||||
<label>
|
||||
<input
|
||||
type="checkbox"
|
||||
name="ssl"
|
||||
checked={this.props.core.http_streaming_enabled}
|
||||
onChange={e => this.props.coreActions.set({http_streaming_enabled: !this.props.core.http_streaming_enabled})} />
|
||||
<span className="label has-tooltip">
|
||||
Stream audio to this browser
|
||||
<span className="tooltip">Requires streaming service like Icecast2</span>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div className="field radio">
|
||||
<div className="name">Encoding</div>
|
||||
<div className="input">
|
||||
<label>
|
||||
<input
|
||||
type="radio"
|
||||
name="http_streaming_encoding"
|
||||
checked={this.props.core.http_streaming_encoding == 'mpeg'}
|
||||
onChange={e => this.props.coreActions.set({http_streaming_encoding: 'mpeg'})} />
|
||||
<span className="label">mpeg (mp3)</span>
|
||||
</label>
|
||||
<label>
|
||||
<input
|
||||
type="radio"
|
||||
name="http_streaming_encoding"
|
||||
checked={this.props.core.http_streaming_encoding == 'ogg'}
|
||||
onChange={e => this.props.coreActions.set({http_streaming_encoding: 'ogg'})} />
|
||||
<span className="label">ogg</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="field">
|
||||
<div className="name">Location</div>
|
||||
<div className="input">
|
||||
<input
|
||||
type="text"
|
||||
onChange={e => this.props.coreActions.set({http_streaming_url: e.target.value})}
|
||||
value={this.props.core.http_streaming_url} />
|
||||
<div className="description">
|
||||
The full URL to your stream endpoint
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h4 className="underline">Localization</h4>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user