diff --git a/.gitignore b/.gitignore
index 8756776..85e7c1d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,18 +1 @@
-# See http://help.github.com/ignore-files/ for more about ignoring files.
-
-# compiled output
-/dist
-/tmp
-
-# dependencies
-/node_modules
-/bower_components
-
-# misc
-/.sass-cache
-/connect.lock
-/coverage/*
-/libpeerconnection.log
-npm-debug.log
-testem.log
/.idea/
diff --git a/app/pods/components/huegasm-app/template.hbs b/app/pods/components/huegasm-app/template.hbs
deleted file mode 100644
index 426721c..0000000
--- a/app/pods/components/huegasm-app/template.hbs
+++ /dev/null
@@ -1,25 +0,0 @@
-{{#if bridgeUsername}}
- {{hue-controls bridgeIp=bridgeIp bridgeUsername=bridgeUsername trial=trial dimmerOn=dimmerOn storage=storage}}
-{{else}}
-
- {{#if ready}}
- {{bridge-finder bridgeIp=bridgeIp bridgeUsername=bridgeUsername trial=trial storage=storage}}
- {{else}}
-
-
-
Your lights, meet your music. Huegasm.
-
Huegasm is a free web application for managing and synchronizing your Philips Hue lights with the beat of your music.
-
- {{#paper-button raised=true primary=true action="isReady" class="goButton center-block"}}Go!{{/paper-button}}
-
- {{/if}}
-{{/if}}
-
-
\ No newline at end of file
diff --git a/mobile/TODO b/mobile/TODO
new file mode 100644
index 0000000..e63c253
Binary files /dev/null and b/mobile/TODO differ
diff --git a/.bowerrc b/web/.bowerrc
similarity index 100%
rename from .bowerrc
rename to web/.bowerrc
diff --git a/.editorconfig b/web/.editorconfig
similarity index 100%
rename from .editorconfig
rename to web/.editorconfig
diff --git a/.ember-cli b/web/.ember-cli
similarity index 100%
rename from .ember-cli
rename to web/.ember-cli
diff --git a/web/.gitignore b/web/.gitignore
new file mode 100644
index 0000000..8756776
--- /dev/null
+++ b/web/.gitignore
@@ -0,0 +1,18 @@
+# See http://help.github.com/ignore-files/ for more about ignoring files.
+
+# compiled output
+/dist
+/tmp
+
+# dependencies
+/node_modules
+/bower_components
+
+# misc
+/.sass-cache
+/connect.lock
+/coverage/*
+/libpeerconnection.log
+npm-debug.log
+testem.log
+/.idea/
diff --git a/.jshintrc b/web/.jshintrc
similarity index 100%
rename from .jshintrc
rename to web/.jshintrc
diff --git a/.travis.yml b/web/.travis.yml
similarity index 55%
rename from .travis.yml
rename to web/.travis.yml
index 66dd107..ac9eaa1 100644
--- a/.travis.yml
+++ b/web/.travis.yml
@@ -1,7 +1,7 @@
---
language: node_js
node_js:
- - "0.12"
+ - "4"
sudo: false
@@ -10,12 +10,13 @@ cache:
- node_modules
before_install:
- - export PATH=/usr/local/phantomjs-2.0.0/bin:$PATH
- - "npm config set spin false"
- - "npm install -g npm@^2"
+ - npm config set spin false
+ - npm install -g bower
+ - bower --version
+ - npm install phantomjs-prebuilt
+ - node_modules/phantomjs-prebuilt/bin/phantomjs --version
install:
- - npm install -g bower
- npm install
- bower install
diff --git a/.watchmanconfig b/web/.watchmanconfig
similarity index 100%
rename from .watchmanconfig
rename to web/.watchmanconfig
diff --git a/web/README.md b/web/README.md
new file mode 100644
index 0000000..6be258e
--- /dev/null
+++ b/web/README.md
@@ -0,0 +1,53 @@
+# Huegasm
+
+This README outlines the details of collaborating on this Ember application.
+A short introduction of this app could easily go here.
+
+## Prerequisites
+
+You will need the following things properly installed on your computer.
+
+* [Git](http://git-scm.com/)
+* [Node.js](http://nodejs.org/) (with NPM)
+* [Bower](http://bower.io/)
+* [Ember CLI](http://ember-cli.com/)
+* [PhantomJS](http://phantomjs.org/)
+
+## Installation
+
+* `git clone ` this repository
+* `cd huegasm`
+* `npm install`
+* `bower install`
+
+## Running / Development
+
+* `ember serve`
+* Visit your app at [http://localhost:4200](http://localhost:4200).
+
+### Code Generators
+
+Make use of the many generators for code, try `ember help generate` for more details
+
+### Running Tests
+
+* `ember test`
+* `ember test --server`
+
+### Building
+
+* `ember build` (development)
+* `ember build --environment production` (production)
+
+### Deploying
+
+Specify what it takes to deploy your app.
+
+## Further Reading / Useful Links
+
+* [ember.js](http://emberjs.com/)
+* [ember-cli](http://ember-cli.com/)
+* Development Browser Extensions
+ * [ember inspector for chrome](https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi)
+ * [ember inspector for firefox](https://addons.mozilla.org/en-US/firefox/addon/ember-inspector/)
+
diff --git a/app/app.js b/web/app/app.js
similarity index 100%
rename from app/app.js
rename to web/app/app.js
diff --git a/app/index.html b/web/app/index.html
similarity index 100%
rename from app/index.html
rename to web/app/index.html
diff --git a/app/pods/components/add-group-modal/component.js b/web/app/pods/components/add-group-modal/component.js
similarity index 100%
rename from app/pods/components/add-group-modal/component.js
rename to web/app/pods/components/add-group-modal/component.js
diff --git a/app/pods/components/add-group-modal/template.hbs b/web/app/pods/components/add-group-modal/template.hbs
similarity index 100%
rename from app/pods/components/add-group-modal/template.hbs
rename to web/app/pods/components/add-group-modal/template.hbs
diff --git a/app/pods/components/add-soundcloud-sound-modal/component.js b/web/app/pods/components/add-soundcloud-sound-modal/component.js
similarity index 100%
rename from app/pods/components/add-soundcloud-sound-modal/component.js
rename to web/app/pods/components/add-soundcloud-sound-modal/component.js
diff --git a/app/pods/components/add-soundcloud-sound-modal/template.hbs b/web/app/pods/components/add-soundcloud-sound-modal/template.hbs
similarity index 100%
rename from app/pods/components/add-soundcloud-sound-modal/template.hbs
rename to web/app/pods/components/add-soundcloud-sound-modal/template.hbs
diff --git a/app/pods/components/bridge-finder/component.js b/web/app/pods/components/bridge-finder/component.js
similarity index 100%
rename from app/pods/components/bridge-finder/component.js
rename to web/app/pods/components/bridge-finder/component.js
diff --git a/app/pods/components/bridge-finder/template.hbs b/web/app/pods/components/bridge-finder/template.hbs
similarity index 100%
rename from app/pods/components/bridge-finder/template.hbs
rename to web/app/pods/components/bridge-finder/template.hbs
diff --git a/app/pods/components/color-picker/component.js b/web/app/pods/components/color-picker/component.js
similarity index 100%
rename from app/pods/components/color-picker/component.js
rename to web/app/pods/components/color-picker/component.js
diff --git a/app/pods/components/color-picker/template.hbs b/web/app/pods/components/color-picker/template.hbs
similarity index 100%
rename from app/pods/components/color-picker/template.hbs
rename to web/app/pods/components/color-picker/template.hbs
diff --git a/app/pods/components/delete-group-modal/component.js b/web/app/pods/components/delete-group-modal/component.js
similarity index 100%
rename from app/pods/components/delete-group-modal/component.js
rename to web/app/pods/components/delete-group-modal/component.js
diff --git a/app/pods/components/delete-group-modal/template.hbs b/web/app/pods/components/delete-group-modal/template.hbs
similarity index 100%
rename from app/pods/components/delete-group-modal/template.hbs
rename to web/app/pods/components/delete-group-modal/template.hbs
diff --git a/app/pods/components/groups-list/component.js b/web/app/pods/components/groups-list/component.js
similarity index 100%
rename from app/pods/components/groups-list/component.js
rename to web/app/pods/components/groups-list/component.js
diff --git a/app/pods/components/groups-list/template.hbs b/web/app/pods/components/groups-list/template.hbs
similarity index 100%
rename from app/pods/components/groups-list/template.hbs
rename to web/app/pods/components/groups-list/template.hbs
diff --git a/app/pods/components/hue-controls/component.js b/web/app/pods/components/hue-controls/component.js
similarity index 100%
rename from app/pods/components/hue-controls/component.js
rename to web/app/pods/components/hue-controls/component.js
diff --git a/app/pods/components/hue-controls/template.hbs b/web/app/pods/components/hue-controls/template.hbs
similarity index 100%
rename from app/pods/components/hue-controls/template.hbs
rename to web/app/pods/components/hue-controls/template.hbs
diff --git a/app/pods/components/huegasm-app/component.js b/web/app/pods/components/huegasm-app/component.js
similarity index 100%
rename from app/pods/components/huegasm-app/component.js
rename to web/app/pods/components/huegasm-app/component.js
diff --git a/web/app/pods/components/huegasm-app/template.hbs b/web/app/pods/components/huegasm-app/template.hbs
new file mode 100644
index 0000000..c4b6684
--- /dev/null
+++ b/web/app/pods/components/huegasm-app/template.hbs
@@ -0,0 +1,39 @@
+{{#if bridgeUsername}}
+ {{hue-controls bridgeIp=bridgeIp bridgeUsername=bridgeUsername trial=trial dimmerOn=dimmerOn storage=storage}}
+{{else}}
+ {{#if ready}}
+ {{bridge-finder bridgeIp=bridgeIp bridgeUsername=bridgeUsername trial=trial storage=storage}}
+ {{else}}
+
+
+

+
+
+
+ Your lights, meet your music. Huegasm.
+
+
+ Huegasm is a free web application for managing and synchronizing your Philips Hue lights with the beat of your music.
+
+
+
+ {{#paper-button raised=true primary=true action="isReady" class="goButton center-block"}}Go!{{/paper-button}}
+
+ {{/if}}
+{{/if}}
+
+
\ No newline at end of file
diff --git a/app/pods/components/light-group/component.js b/web/app/pods/components/light-group/component.js
similarity index 100%
rename from app/pods/components/light-group/component.js
rename to web/app/pods/components/light-group/component.js
diff --git a/app/pods/components/light-group/template.hbs b/web/app/pods/components/light-group/template.hbs
similarity index 100%
rename from app/pods/components/light-group/template.hbs
rename to web/app/pods/components/light-group/template.hbs
diff --git a/app/pods/components/lights-tab/component.js b/web/app/pods/components/lights-tab/component.js
similarity index 100%
rename from app/pods/components/lights-tab/component.js
rename to web/app/pods/components/lights-tab/component.js
diff --git a/app/pods/components/lights-tab/template.hbs b/web/app/pods/components/lights-tab/template.hbs
similarity index 100%
rename from app/pods/components/lights-tab/template.hbs
rename to web/app/pods/components/lights-tab/template.hbs
diff --git a/app/pods/components/music-tab/component.js b/web/app/pods/components/music-tab/component.js
similarity index 99%
rename from app/pods/components/music-tab/component.js
rename to web/app/pods/components/music-tab/component.js
index 521a677..5d8eedf 100644
--- a/app/pods/components/music-tab/component.js
+++ b/web/app/pods/components/music-tab/component.js
@@ -7,7 +7,8 @@ const {
observer,
isEmpty,
isNone,
- $
+ $,
+ run
} = Ember;
export default Component.extend(helperMixin, visualizerMixin, {
@@ -242,7 +243,7 @@ export default Component.extend(helperMixin, visualizerMixin, {
dragLeave(){
// need to delay the dragLeave notification to avoid flickering ( hovering over some page elements causes this event to be sent )
- this.set('dragLeaveTimeoutHandle', setTimeout(()=>{ self.set('dragging', false); }, 500));
+ this.set('dragLeaveTimeoutHandle', setTimeout(()=>{ this.set('dragging', false); }, 500));
},
simulateKick(/*mag, ratioKickMag*/) {
diff --git a/app/pods/components/music-tab/mixins/helpers.js b/web/app/pods/components/music-tab/mixins/helpers.js
similarity index 100%
rename from app/pods/components/music-tab/mixins/helpers.js
rename to web/app/pods/components/music-tab/mixins/helpers.js
diff --git a/app/pods/components/music-tab/mixins/visualizer.js b/web/app/pods/components/music-tab/mixins/visualizer.js
similarity index 100%
rename from app/pods/components/music-tab/mixins/visualizer.js
rename to web/app/pods/components/music-tab/mixins/visualizer.js
diff --git a/app/pods/components/music-tab/template.hbs b/web/app/pods/components/music-tab/template.hbs
similarity index 100%
rename from app/pods/components/music-tab/template.hbs
rename to web/app/pods/components/music-tab/template.hbs
diff --git a/app/resolver.js b/web/app/resolver.js
similarity index 100%
rename from app/resolver.js
rename to web/app/resolver.js
diff --git a/app/router.js b/web/app/router.js
similarity index 100%
rename from app/router.js
rename to web/app/router.js
diff --git a/app/styles/app.scss b/web/app/styles/app.scss
similarity index 72%
rename from app/styles/app.scss
rename to web/app/styles/app.scss
index 25df08e..7b46b51 100644
--- a/app/styles/app.scss
+++ b/web/app/styles/app.scss
@@ -1,18 +1,16 @@
-@import 'ember-paper';
@import 'bower_components/bootstrap-sass/assets/stylesheets/_bootstrap';
@import 'ember-modal-dialog/ember-modal-structure';
@import 'ember-modal-dialog/ember-modal-appearance';
+
+@import 'bridge-finder';
+@import 'common';
+@import 'dimmer';
@import 'fancy-speaker';
+@import 'index';
+@import 'introjs';
+@import 'paper';
+@import 'variables';
-$playerHeight: 400px;
-$playerDefaultIconColor: #BBBBBB;
-$footerHeight: 40px;
-$playerBottomHeight: 250px;
-$secondaryThemeColor: #F12B24;
-$glowingText: 0 0 2px #fff, 0 0 8px #fff, 0 0 20px #228DFF;
-$dimmerOnButtonColor: #404040;
-
-// BRIDGE FINDER
html {
min-height: 100%;
height: auto;
@@ -24,80 +22,6 @@ body {
position: static;
}
-#intro {
- font-size: 18px;
-}
-
-#introParagraph {
- margin-bottom: 50px;
-}
-
-.embedContainer {
- position:relative;
- padding-bottom:56.25%;
- padding-top:30px;
- height:0;
- overflow:hidden;
-}
-
-.embedContainerWrapper {
- max-width: 600px;
- margin: auto;
-}
-
-.embedContainer iframe, .embedContainer object, .embedContainer embed {
- position:absolute;
- top:0;
- left:0;
- width:100%;
- height:100%;
-}
-
-.goButton {
- margin-top: 20px;
- border-radius: 100% !important;
- width: 100px;
- height: 100px;
- span {
- font-size: 28px;
- width: 100%;
- }
-}
-
-.introjs-overlay {
- background: black;
-}
-
-md-checkbox.md-default-theme .md-icon {
- border-color: inherit !important;
-}
-
-md-checkbox.md-default-theme.md-checked .md-icon {
- background: $secondaryThemeColor;
-}
-
-md-checkbox .md-label {
- width: 125px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-
-.text-left {
- text-align: left !important;
-}
-
-.goButton:hover {
- background: darken(#3f51b5, 10%) !important;
-}
-
-.md-button {
- flex-direction: unset;
- span {
- width: 100%;
- }
-}
-
.ember-notify-default.ember-notify-cn {
top: 20px;
}
@@ -107,10 +31,6 @@ md-checkbox .md-label {
border: none;
}
-.relative {
- position: relative;
-}
-
#settings {
padding-right: 5px;
text-align: right;
@@ -118,41 +38,15 @@ md-checkbox .md-label {
font-size: 16px;
}
-.settingsItem {
- position: relative;
- display: inline-block;
- transition: 0.1s all ease-in-out;
- cursor: pointer;
- span md-icon {
- position: relative;
- bottom: 5px;
- right: 5px;
- }
-}
-
.settingsItem:nth-of-type(2){
margin-left: 10px;
}
-md-switch[disabled=disabled], md-switch[disabled=disabled] .md-container, md-slider[disabled=disabled] {
- cursor: not-allowed;
-}
-
.settingsItem .settings::before, .settingsItem .group::before {
font-size: 28px;
transition: 0.1s all ease-in-out;
}
-.settingsItem span:hover {
- text-decoration: underline;
- md-icon.group {
- color: black !important;
- }
- md-icon.settings {
- color: black !important;
- }
-}
-
.ember-app {
padding-bottom: 50px;
}
@@ -176,17 +70,6 @@ md-switch[disabled=disabled], md-switch[disabled=disabled] .md-container, md-sli
cursor: pointer;
}
-.bridgeFinder, .readyBlock {
- text-align: center;
- padding-top: 10px;
-}
-
-// preloading image
-.readyBlock:after {
- display: none;
- content: url(images/pressButtonBridge.png);
-}
-
.title {
margin-bottom: 30px;
img {
@@ -194,31 +77,12 @@ md-switch[disabled=disabled], md-switch[disabled=disabled] .md-container, md-sli
}
}
-#bridgeInput {
- md-input-container {
- max-width: 200px;
- margin: 0 auto;
- }
-}
-
-md-progress-circular {
- margin: 0 auto 20px auto !important;
-}
-
-md-progress-linear {
- margin-bottom: 50px;
-}
-
#pressButtonBridgeImg {
width: 200px;
margin: 0 auto 30px auto;
display: inherit;
}
-.noTextDecoration {
- text-decoration: none;
-}
-
#bridgeButtonGroup {
width: 150px;
margin: 30px auto;
@@ -237,19 +101,6 @@ md-progress-linear {
color: black;
}
-.bootstrapTooltip md-icon {
- font-size: 22px;
- cursor: pointer;
- -webkit-transform: translate3d(0, 0, 0); // hack for chrome to force hardware acceleration and stop flickering
-}
-
-md-list {
- padding: 0;
-}
-
-md-list-item .md-no-style {
- padding: 0;
-}
#lightsTab {
min-height: 400px;
@@ -330,19 +181,6 @@ md-list-item .md-no-style {
}
// LIGHT GROUP
-md-slider {
- cursor: pointer;
-}
-
-md-slider.md-default-theme .md-thumb:after {
- border-color: $secondaryThemeColor;
- background-color: $secondaryThemeColor;
-}
-
-.paper-sidenav {
- overflow: visible;
-}
-
#groupList {
box-shadow: 5px 10px 15px 5px rgba(0, 0, 0, 0.3);
border-radius: 0 0 5px 5px;
@@ -414,10 +252,6 @@ md-slider.md-default-theme .md-thumb:after {
background-color: rgba(0, 0, 0, 0.50);
}
-md-icon {
- color: rgba(0, 0, 0, 0.54) !important;
-}
-
.addButton {
width: 100%;
cursor: pointer;
@@ -434,16 +268,11 @@ md-icon {
text-align: left;
}
-md-toolbar {
- background-color: inherit !important;
-}
-
// GROUP CONTROL
.groupRow {
transition: 0.1s all ease-in-out;
}
-
.groupRow.selectedRow {
background-color: #7F7F7F !important;
color: white;
@@ -552,14 +381,6 @@ md-toolbar {
color: lighten($playerDefaultIconColor, 30%) !important;;
}
-md-switch.md-default-theme.md-checked .md-bar {
- background-color: rgba(241, 43, 36, 0.5);
-}
-
-md-switch.md-default-theme.md-checked .md-thumb {
- background-color: $secondaryThemeColor;
-}
-
#playerControls {
transition: all 0.2s ease-in-out;
position: absolute;
@@ -905,98 +726,6 @@ md-switch.md-default-theme.md-checked .md-thumb {
margin-top: 10px;
}
-div.dimmerOn {
- color: white !important;
- background: #171717 !important;
-}
-
-html.dimmerOn {
- color: white;
- background: #242424;
-}
-
-body.dimmerOn {
- color: white;
- background: #242424;
- .md-track {
- background: white;
- }
- .color {
- border: 1px solid white;
- }
- .playlistItem {
- color: #cdcdcd;
- background: $dimmerOnButtonColor;
- }
- .playlistItem.active {
- background: darken($dimmerOnButtonColor, 15%) !important;
- }
- .playlistItem:hover {
- background: darken($dimmerOnButtonColor, 10%);
- }
- .playlistItem .close {
- color: #cdcdcd !important;
- }
- .playlistItem .close:hover {
- color: white !important;
- }
- svg {
- -webkit-filter: drop-shadow(0 0 5px #228DFF);
- }
- md-input-container {
- label {
- color: white;
- }
- input {
- border-bottom-color: white !important;
- }
- input {
- color: white !important;
- }
- }
- .addNewMusic {
- background: $dimmerOnButtonColor
- }
- .addNewMusic:hover {
- background: darken($dimmerOnButtonColor, 5%);
- }
- #extraOptionsMenu {
- opacity: 0.8;
- }
- #extraOptionsMenu:hover {
- background: rgba(0, 0, 0, 0.9);
- }
- .popover-content {
- color: black !important;
- }
-}
-
-.power-settings-new.dimmerOn,
-.brightness-4.dimmerOn,
-.color-lens.dimmerOn,
-.flare.dimmerOn,
-.loop.dimmerOn,
-.group.dimmerOn,
-.settings.dimmerOn,
-.mic.dimmerOn,
-.star.dimmerOn,
-.library-music.dimmerOn {
- color: inherit !important;
- text-shadow: $glowingText;
- opacity: 0.9 !important;
-}
-
-#dimmer {
- position: absolute;
- left: -50px;
- bottom: -10px;
- cursor: pointer;
- width: 40px;
- height: 40px;
- background: url(/favicon-96x96.png) center center no-repeat;
- background-size: 40px 40px;
-}
-
.noUi-value-vertical {
margin-top: -10px;
}
@@ -1119,29 +848,3 @@ div.ember-modal-dialog {
opacity: 1;
background: rgba(0, 0, 0, 0.8);
}
-
-.introjs-helperNumberLayer {
- line-height: 17px;
- padding: 0;
- width: 23px;
- height: 23px;
-}
-
-#settings.introjs-fixParent{
- position: inherit !important;
-}
-
-.introjs-tooltip {
- color: black;
-}
-
-.introjs-skipbutton{
- color: $secondaryThemeColor;
-}
-
-.introjs-bullets ul li a.active {
- position: relative;
- height: 10px;
- width: 10px;
- top: -2px;
-}
diff --git a/tests/unit/.gitkeep b/web/app/styles/bridge-finder.scss
similarity index 100%
rename from tests/unit/.gitkeep
rename to web/app/styles/bridge-finder.scss
diff --git a/web/app/styles/common.scss b/web/app/styles/common.scss
new file mode 100644
index 0000000..8315af1
--- /dev/null
+++ b/web/app/styles/common.scss
@@ -0,0 +1,11 @@
+.text-left {
+ text-align: left !important;
+}
+
+.relative {
+ position: relative !important;
+}
+
+.noTextDecoration {
+ text-decoration: none !important;
+}
\ No newline at end of file
diff --git a/web/app/styles/dimmer.scss b/web/app/styles/dimmer.scss
new file mode 100644
index 0000000..3e5f0a7
--- /dev/null
+++ b/web/app/styles/dimmer.scss
@@ -0,0 +1,93 @@
+@import 'variables';
+
+div.dimmerOn {
+ color: white !important;
+ background: #171717 !important;
+}
+
+html.dimmerOn {
+ color: white;
+ background: #242424;
+}
+
+body.dimmerOn {
+ color: white;
+ background: #242424;
+ .md-track {
+ background: white;
+ }
+ .color {
+ border: 1px solid white;
+ }
+ .playlistItem {
+ color: #cdcdcd;
+ background: $dimmerOnButtonColor;
+ }
+ .playlistItem.active {
+ background: darken($dimmerOnButtonColor, 15%) !important;
+ }
+ .playlistItem:hover {
+ background: darken($dimmerOnButtonColor, 10%);
+ }
+ .playlistItem .close {
+ color: #cdcdcd !important;
+ }
+ .playlistItem .close:hover {
+ color: white !important;
+ }
+ svg {
+ -webkit-filter: drop-shadow(0 0 5px #228DFF);
+ }
+ md-input-container {
+ label {
+ color: white;
+ }
+ input {
+ border-bottom-color: white !important;
+ }
+ input {
+ color: white !important;
+ }
+ }
+ .addNewMusic {
+ background: $dimmerOnButtonColor
+ }
+ .addNewMusic:hover {
+ background: darken($dimmerOnButtonColor, 5%);
+ }
+ #extraOptionsMenu {
+ opacity: 0.8;
+ }
+ #extraOptionsMenu:hover {
+ background: rgba(0, 0, 0, 0.9);
+ }
+ .popover-content {
+ color: black !important;
+ }
+}
+
+.power-settings-new.dimmerOn,
+.brightness-4.dimmerOn,
+.color-lens.dimmerOn,
+.flare.dimmerOn,
+.loop.dimmerOn,
+.group.dimmerOn,
+.settings.dimmerOn,
+.mic.dimmerOn,
+.star.dimmerOn,
+.library-music.dimmerOn {
+ color: inherit !important;
+ text-shadow: $glowingText;
+ opacity: 0.9 !important;
+}
+
+#dimmer {
+ position: absolute;
+ left: -50px;
+ bottom: -10px;
+ cursor: pointer;
+ width: 40px;
+ height: 40px;
+ background: url(/favicon-96x96.png) center center no-repeat;
+ background-size: 40px 40px;
+}
\ No newline at end of file
diff --git a/app/styles/fancy-speaker.scss b/web/app/styles/fancy-speaker.scss
similarity index 100%
rename from app/styles/fancy-speaker.scss
rename to web/app/styles/fancy-speaker.scss
diff --git a/web/app/styles/index.scss b/web/app/styles/index.scss
new file mode 100644
index 0000000..eba6164
--- /dev/null
+++ b/web/app/styles/index.scss
@@ -0,0 +1,53 @@
+#intro {
+ font-size: 18px;
+}
+
+#introParagraph {
+ margin-bottom: 50px;
+}
+
+.bridgeFinder, .readyBlock {
+ text-align: center;
+ padding-top: 10px;
+}
+
+// preloading image
+.readyBlock:after {
+ display: none;
+ content: url(images/pressButtonBridge.png);
+}
+
+.embedContainer {
+ position:relative;
+ padding-bottom:56.25%;
+ padding-top:30px;
+ height:0;
+ overflow:hidden;
+}
+
+.embedContainerWrapper {
+ max-width: 600px;
+ margin: auto;
+}
+
+.embedContainer iframe, .embedContainer object, .embedContainer embed {
+ position:absolute;
+ top:0;
+ left:0;
+ width:100%;
+ height:100%;
+}
+
+.goButton {
+ margin-top: 20px;
+ border-radius: 100% !important;
+ width: 100px;
+ height: 100px;
+ span {
+ font-size: 28px;
+ width: 100%;
+ }
+ &:hover {
+ background: darken(#3f51b5, 10%) !important;
+ }
+}
\ No newline at end of file
diff --git a/web/app/styles/introjs.scss b/web/app/styles/introjs.scss
new file mode 100644
index 0000000..02367b7
--- /dev/null
+++ b/web/app/styles/introjs.scss
@@ -0,0 +1,30 @@
+@import 'variables';
+
+.introjs-overlay {
+ background: black;
+}
+
+.introjs-helperNumberLayer {
+ padding: 0;
+ width: 23px;
+ height: 23px;
+}
+
+#settings.introjs-fixParent{
+ position: inherit !important;
+}
+
+.introjs-tooltip {
+ color: black;
+}
+
+.introjs-skipbutton{
+ color: $secondaryThemeColor;
+}
+
+.introjs-bullets ul li a.active {
+ position: relative;
+ height: 10px;
+ width: 10px;
+ top: -2px;
+}
\ No newline at end of file
diff --git a/web/app/styles/paper.scss b/web/app/styles/paper.scss
new file mode 100644
index 0000000..af1d677
--- /dev/null
+++ b/web/app/styles/paper.scss
@@ -0,0 +1,109 @@
+@import 'ember-paper';
+@import 'variables';
+
+md-checkbox.md-default-theme .md-icon {
+ border-color: inherit !important;
+}
+
+md-checkbox.md-default-theme.md-checked .md-icon {
+ background: $secondaryThemeColor;
+}
+
+md-checkbox .md-label {
+ width: 125px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.md-button {
+ flex-direction: unset;
+ span {
+ width: 100%;
+ }
+}
+
+md-switch[disabled=disabled], md-switch[disabled=disabled] .md-container, md-slider[disabled=disabled] {
+ cursor: not-allowed;
+}
+
+#bridgeInput {
+ md-input-container {
+ max-width: 200px;
+ margin: 0 auto;
+ }
+}
+
+md-progress-circular {
+ margin: 0 auto 20px auto !important;
+}
+
+md-progress-linear {
+ margin-bottom: 50px;
+}
+
+.settingsItem span:hover {
+ text-decoration: underline;
+ md-icon.group {
+ color: black !important;
+ }
+ md-icon.settings {
+ color: black !important;
+ }
+}
+
+
+.settingsItem {
+ position: relative;
+ display: inline-block;
+ transition: 0.1s all ease-in-out;
+ cursor: pointer;
+ span md-icon {
+ position: relative;
+ bottom: 5px;
+ right: 5px;
+ }
+}
+
+.bootstrapTooltip md-icon {
+ font-size: 22px;
+ cursor: pointer;
+ -webkit-transform: translate3d(0, 0, 0); // hack for chrome to force hardware acceleration and stop flickering
+}
+
+md-list {
+ padding: 0;
+}
+
+md-list-item .md-no-style {
+ padding: 0;
+}
+
+md-slider {
+ cursor: pointer;
+}
+
+md-slider.md-default-theme .md-thumb:after {
+ border-color: $secondaryThemeColor;
+ background-color: $secondaryThemeColor;
+}
+
+.paper-sidenav {
+ overflow: visible;
+}
+
+md-icon {
+ color: rgba(0, 0, 0, 0.54) !important;
+}
+
+md-toolbar {
+ background-color: inherit !important;
+}
+
+md-switch.md-default-theme.md-checked .md-bar {
+ background-color: rgba(241, 43, 36, 0.5);
+}
+
+md-switch.md-default-theme.md-checked .md-thumb {
+ background-color: $secondaryThemeColor;
+}
\ No newline at end of file
diff --git a/web/app/styles/variables.scss b/web/app/styles/variables.scss
new file mode 100644
index 0000000..3e7099c
--- /dev/null
+++ b/web/app/styles/variables.scss
@@ -0,0 +1,7 @@
+$playerHeight: 400px;
+$playerDefaultIconColor: #BBBBBB;
+$footerHeight: 40px;
+$playerBottomHeight: 250px;
+$secondaryThemeColor: #F12B24;
+$glowingText: 0 0 2px #fff, 0 0 8px #fff, 0 0 20px #228DFF;
+$dimmerOnButtonColor: #404040;
\ No newline at end of file
diff --git a/app/templates/application.hbs b/web/app/templates/application.hbs
similarity index 100%
rename from app/templates/application.hbs
rename to web/app/templates/application.hbs
diff --git a/bower.json b/web/bower.json
similarity index 100%
rename from bower.json
rename to web/bower.json
diff --git a/config/environment.js b/web/config/environment.js
similarity index 100%
rename from config/environment.js
rename to web/config/environment.js
diff --git a/ember-cli-build.js b/web/ember-cli-build.js
similarity index 100%
rename from ember-cli-build.js
rename to web/ember-cli-build.js
diff --git a/package.json b/web/package.json
similarity index 97%
rename from package.json
rename to web/package.json
index 4650195..b4d6333 100644
--- a/package.json
+++ b/web/package.json
@@ -36,7 +36,7 @@
"ember-cli-uglify": "^1.2.0",
"ember-export-application-global": "^1.0.4",
"ember-load-initializers": "^0.5.0",
- "ember-modal-dialog": "^0.8.3",
+ "ember-modal-dialog": "^0.9.0",
"ember-notify": "^5.0.4",
"ember-paper": "^0.2.14",
"ember-resolver": "^2.0.3",
diff --git a/public/android-chrome-144x144.png b/web/public/android-chrome-144x144.png
similarity index 100%
rename from public/android-chrome-144x144.png
rename to web/public/android-chrome-144x144.png
diff --git a/public/android-chrome-192x192.png b/web/public/android-chrome-192x192.png
similarity index 100%
rename from public/android-chrome-192x192.png
rename to web/public/android-chrome-192x192.png
diff --git a/public/android-chrome-36x36.png b/web/public/android-chrome-36x36.png
similarity index 100%
rename from public/android-chrome-36x36.png
rename to web/public/android-chrome-36x36.png
diff --git a/public/android-chrome-48x48.png b/web/public/android-chrome-48x48.png
similarity index 100%
rename from public/android-chrome-48x48.png
rename to web/public/android-chrome-48x48.png
diff --git a/public/android-chrome-72x72.png b/web/public/android-chrome-72x72.png
similarity index 100%
rename from public/android-chrome-72x72.png
rename to web/public/android-chrome-72x72.png
diff --git a/public/android-chrome-96x96.png b/web/public/android-chrome-96x96.png
similarity index 100%
rename from public/android-chrome-96x96.png
rename to web/public/android-chrome-96x96.png
diff --git a/public/apple-touch-icon-114x114.png b/web/public/apple-touch-icon-114x114.png
similarity index 100%
rename from public/apple-touch-icon-114x114.png
rename to web/public/apple-touch-icon-114x114.png
diff --git a/public/apple-touch-icon-120x120.png b/web/public/apple-touch-icon-120x120.png
similarity index 100%
rename from public/apple-touch-icon-120x120.png
rename to web/public/apple-touch-icon-120x120.png
diff --git a/public/apple-touch-icon-144x144.png b/web/public/apple-touch-icon-144x144.png
similarity index 100%
rename from public/apple-touch-icon-144x144.png
rename to web/public/apple-touch-icon-144x144.png
diff --git a/public/apple-touch-icon-152x152.png b/web/public/apple-touch-icon-152x152.png
similarity index 100%
rename from public/apple-touch-icon-152x152.png
rename to web/public/apple-touch-icon-152x152.png
diff --git a/public/apple-touch-icon-180x180.png b/web/public/apple-touch-icon-180x180.png
similarity index 100%
rename from public/apple-touch-icon-180x180.png
rename to web/public/apple-touch-icon-180x180.png
diff --git a/public/apple-touch-icon-57x57.png b/web/public/apple-touch-icon-57x57.png
similarity index 100%
rename from public/apple-touch-icon-57x57.png
rename to web/public/apple-touch-icon-57x57.png
diff --git a/public/apple-touch-icon-60x60.png b/web/public/apple-touch-icon-60x60.png
similarity index 100%
rename from public/apple-touch-icon-60x60.png
rename to web/public/apple-touch-icon-60x60.png
diff --git a/public/apple-touch-icon-72x72.png b/web/public/apple-touch-icon-72x72.png
similarity index 100%
rename from public/apple-touch-icon-72x72.png
rename to web/public/apple-touch-icon-72x72.png
diff --git a/public/apple-touch-icon-76x76.png b/web/public/apple-touch-icon-76x76.png
similarity index 100%
rename from public/apple-touch-icon-76x76.png
rename to web/public/apple-touch-icon-76x76.png
diff --git a/public/apple-touch-icon-precomposed.png b/web/public/apple-touch-icon-precomposed.png
similarity index 100%
rename from public/apple-touch-icon-precomposed.png
rename to web/public/apple-touch-icon-precomposed.png
diff --git a/public/apple-touch-icon.png b/web/public/apple-touch-icon.png
similarity index 100%
rename from public/apple-touch-icon.png
rename to web/public/apple-touch-icon.png
diff --git a/public/assets/images/colormap.png b/web/public/assets/images/colormap.png
similarity index 100%
rename from public/assets/images/colormap.png
rename to web/public/assets/images/colormap.png
diff --git a/public/assets/images/lights/a19.svg b/web/public/assets/images/lights/a19.svg
similarity index 100%
rename from public/assets/images/lights/a19.svg
rename to web/public/assets/images/lights/a19.svg
diff --git a/public/assets/images/lights/a19w.svg b/web/public/assets/images/lights/a19w.svg
similarity index 100%
rename from public/assets/images/lights/a19w.svg
rename to web/public/assets/images/lights/a19w.svg
diff --git a/public/assets/images/lights/br30.svg b/web/public/assets/images/lights/br30.svg
similarity index 100%
rename from public/assets/images/lights/br30.svg
rename to web/public/assets/images/lights/br30.svg
diff --git a/public/assets/images/lights/br30w.svg b/web/public/assets/images/lights/br30w.svg
similarity index 100%
rename from public/assets/images/lights/br30w.svg
rename to web/public/assets/images/lights/br30w.svg
diff --git a/public/assets/images/lights/gu10.svg b/web/public/assets/images/lights/gu10.svg
similarity index 100%
rename from public/assets/images/lights/gu10.svg
rename to web/public/assets/images/lights/gu10.svg
diff --git a/public/assets/images/lights/gu10w.svg b/web/public/assets/images/lights/gu10w.svg
similarity index 100%
rename from public/assets/images/lights/gu10w.svg
rename to web/public/assets/images/lights/gu10w.svg
diff --git a/public/assets/images/lights/huego.svg b/web/public/assets/images/lights/huego.svg
similarity index 100%
rename from public/assets/images/lights/huego.svg
rename to web/public/assets/images/lights/huego.svg
diff --git a/public/assets/images/lights/huegow.svg b/web/public/assets/images/lights/huegow.svg
similarity index 100%
rename from public/assets/images/lights/huegow.svg
rename to web/public/assets/images/lights/huegow.svg
diff --git a/public/assets/images/lights/lc_aura.svg b/web/public/assets/images/lights/lc_aura.svg
similarity index 100%
rename from public/assets/images/lights/lc_aura.svg
rename to web/public/assets/images/lights/lc_aura.svg
diff --git a/public/assets/images/lights/lc_auraw.svg b/web/public/assets/images/lights/lc_auraw.svg
similarity index 100%
rename from public/assets/images/lights/lc_auraw.svg
rename to web/public/assets/images/lights/lc_auraw.svg
diff --git a/public/assets/images/lights/lc_bloom.svg b/web/public/assets/images/lights/lc_bloom.svg
similarity index 100%
rename from public/assets/images/lights/lc_bloom.svg
rename to web/public/assets/images/lights/lc_bloom.svg
diff --git a/public/assets/images/lights/lc_bloomw.svg b/web/public/assets/images/lights/lc_bloomw.svg
similarity index 100%
rename from public/assets/images/lights/lc_bloomw.svg
rename to web/public/assets/images/lights/lc_bloomw.svg
diff --git a/public/assets/images/lights/lc_iris.svg b/web/public/assets/images/lights/lc_iris.svg
similarity index 100%
rename from public/assets/images/lights/lc_iris.svg
rename to web/public/assets/images/lights/lc_iris.svg
diff --git a/public/assets/images/lights/lc_irisw.svg b/web/public/assets/images/lights/lc_irisw.svg
similarity index 100%
rename from public/assets/images/lights/lc_irisw.svg
rename to web/public/assets/images/lights/lc_irisw.svg
diff --git a/public/assets/images/lights/lightstrip.svg b/web/public/assets/images/lights/lightstrip.svg
similarity index 100%
rename from public/assets/images/lights/lightstrip.svg
rename to web/public/assets/images/lights/lightstrip.svg
diff --git a/public/assets/images/lights/lightstripw.svg b/web/public/assets/images/lights/lightstripw.svg
similarity index 100%
rename from public/assets/images/lights/lightstripw.svg
rename to web/public/assets/images/lights/lightstripw.svg
diff --git a/public/assets/images/lights/storylight.svg b/web/public/assets/images/lights/storylight.svg
similarity index 100%
rename from public/assets/images/lights/storylight.svg
rename to web/public/assets/images/lights/storylight.svg
diff --git a/public/assets/images/lights/storylightw.svg b/web/public/assets/images/lights/storylightw.svg
similarity index 100%
rename from public/assets/images/lights/storylightw.svg
rename to web/public/assets/images/lights/storylightw.svg
diff --git a/public/assets/images/logo.png b/web/public/assets/images/logo.png
similarity index 100%
rename from public/assets/images/logo.png
rename to web/public/assets/images/logo.png
diff --git a/public/assets/images/missingArtwork.png b/web/public/assets/images/missingArtwork.png
similarity index 100%
rename from public/assets/images/missingArtwork.png
rename to web/public/assets/images/missingArtwork.png
diff --git a/public/assets/images/pressButtonBridge.png b/web/public/assets/images/pressButtonBridge.png
similarity index 100%
rename from public/assets/images/pressButtonBridge.png
rename to web/public/assets/images/pressButtonBridge.png
diff --git a/public/assets/images/sc-white-sm.png b/web/public/assets/images/sc-white-sm.png
similarity index 100%
rename from public/assets/images/sc-white-sm.png
rename to web/public/assets/images/sc-white-sm.png
diff --git a/public/assets/images/sc-white.png b/web/public/assets/images/sc-white.png
similarity index 100%
rename from public/assets/images/sc-white.png
rename to web/public/assets/images/sc-white.png
diff --git a/public/browserconfig.xml b/web/public/browserconfig.xml
similarity index 100%
rename from public/browserconfig.xml
rename to web/public/browserconfig.xml
diff --git a/public/crossdomain.xml b/web/public/crossdomain.xml
similarity index 100%
rename from public/crossdomain.xml
rename to web/public/crossdomain.xml
diff --git a/public/favicon-16x16.png b/web/public/favicon-16x16.png
similarity index 100%
rename from public/favicon-16x16.png
rename to web/public/favicon-16x16.png
diff --git a/public/favicon-194x194.png b/web/public/favicon-194x194.png
similarity index 100%
rename from public/favicon-194x194.png
rename to web/public/favicon-194x194.png
diff --git a/public/favicon-32x32.png b/web/public/favicon-32x32.png
similarity index 100%
rename from public/favicon-32x32.png
rename to web/public/favicon-32x32.png
diff --git a/public/favicon-96x96.png b/web/public/favicon-96x96.png
similarity index 100%
rename from public/favicon-96x96.png
rename to web/public/favicon-96x96.png
diff --git a/public/favicon.ico b/web/public/favicon.ico
similarity index 100%
rename from public/favicon.ico
rename to web/public/favicon.ico
diff --git a/public/humans.txt b/web/public/humans.txt
similarity index 100%
rename from public/humans.txt
rename to web/public/humans.txt
diff --git a/public/manifest.json b/web/public/manifest.json
similarity index 100%
rename from public/manifest.json
rename to web/public/manifest.json
diff --git a/public/mstile-144x144.png b/web/public/mstile-144x144.png
similarity index 100%
rename from public/mstile-144x144.png
rename to web/public/mstile-144x144.png
diff --git a/public/mstile-150x150.png b/web/public/mstile-150x150.png
similarity index 100%
rename from public/mstile-150x150.png
rename to web/public/mstile-150x150.png
diff --git a/public/mstile-310x150.png b/web/public/mstile-310x150.png
similarity index 100%
rename from public/mstile-310x150.png
rename to web/public/mstile-310x150.png
diff --git a/public/mstile-310x310.png b/web/public/mstile-310x310.png
similarity index 100%
rename from public/mstile-310x310.png
rename to web/public/mstile-310x310.png
diff --git a/public/mstile-70x70.png b/web/public/mstile-70x70.png
similarity index 100%
rename from public/mstile-70x70.png
rename to web/public/mstile-70x70.png
diff --git a/public/robots.txt b/web/public/robots.txt
similarity index 100%
rename from public/robots.txt
rename to web/public/robots.txt
diff --git a/public/safari-pinned-tab.svg b/web/public/safari-pinned-tab.svg
similarity index 100%
rename from public/safari-pinned-tab.svg
rename to web/public/safari-pinned-tab.svg
diff --git a/testem.js b/web/testem.js
similarity index 100%
rename from testem.js
rename to web/testem.js
diff --git a/tests/.jshintrc b/web/tests/.jshintrc
similarity index 100%
rename from tests/.jshintrc
rename to web/tests/.jshintrc
diff --git a/tests/helpers/destroy-app.js b/web/tests/helpers/destroy-app.js
similarity index 100%
rename from tests/helpers/destroy-app.js
rename to web/tests/helpers/destroy-app.js
diff --git a/tests/helpers/module-for-acceptance.js b/web/tests/helpers/module-for-acceptance.js
similarity index 100%
rename from tests/helpers/module-for-acceptance.js
rename to web/tests/helpers/module-for-acceptance.js
diff --git a/tests/helpers/resolver.js b/web/tests/helpers/resolver.js
similarity index 100%
rename from tests/helpers/resolver.js
rename to web/tests/helpers/resolver.js
diff --git a/tests/helpers/start-app.js b/web/tests/helpers/start-app.js
similarity index 100%
rename from tests/helpers/start-app.js
rename to web/tests/helpers/start-app.js
diff --git a/tests/index.html b/web/tests/index.html
similarity index 100%
rename from tests/index.html
rename to web/tests/index.html
diff --git a/tests/integration/pods/components/add-group-modal/component-test.js b/web/tests/integration/pods/components/add-group-modal/component-test.js
similarity index 100%
rename from tests/integration/pods/components/add-group-modal/component-test.js
rename to web/tests/integration/pods/components/add-group-modal/component-test.js
diff --git a/tests/integration/pods/components/add-soundcloud-sound-modal/component-test.js b/web/tests/integration/pods/components/add-soundcloud-sound-modal/component-test.js
similarity index 100%
rename from tests/integration/pods/components/add-soundcloud-sound-modal/component-test.js
rename to web/tests/integration/pods/components/add-soundcloud-sound-modal/component-test.js
diff --git a/tests/integration/pods/components/bridge-finder/component-test.js b/web/tests/integration/pods/components/bridge-finder/component-test.js
similarity index 100%
rename from tests/integration/pods/components/bridge-finder/component-test.js
rename to web/tests/integration/pods/components/bridge-finder/component-test.js
diff --git a/tests/integration/pods/components/color-picker/component-test.js b/web/tests/integration/pods/components/color-picker/component-test.js
similarity index 100%
rename from tests/integration/pods/components/color-picker/component-test.js
rename to web/tests/integration/pods/components/color-picker/component-test.js
diff --git a/tests/integration/pods/components/delete-group-modal/component-test.js b/web/tests/integration/pods/components/delete-group-modal/component-test.js
similarity index 100%
rename from tests/integration/pods/components/delete-group-modal/component-test.js
rename to web/tests/integration/pods/components/delete-group-modal/component-test.js
diff --git a/tests/integration/pods/components/groups-list/component-test.js b/web/tests/integration/pods/components/groups-list/component-test.js
similarity index 100%
rename from tests/integration/pods/components/groups-list/component-test.js
rename to web/tests/integration/pods/components/groups-list/component-test.js
diff --git a/tests/integration/pods/components/hue-controls/component-test.js b/web/tests/integration/pods/components/hue-controls/component-test.js
similarity index 100%
rename from tests/integration/pods/components/hue-controls/component-test.js
rename to web/tests/integration/pods/components/hue-controls/component-test.js
diff --git a/tests/integration/pods/components/huegasm-app/component-test.js b/web/tests/integration/pods/components/huegasm-app/component-test.js
similarity index 100%
rename from tests/integration/pods/components/huegasm-app/component-test.js
rename to web/tests/integration/pods/components/huegasm-app/component-test.js
diff --git a/tests/integration/pods/components/light-group/component-test.js b/web/tests/integration/pods/components/light-group/component-test.js
similarity index 100%
rename from tests/integration/pods/components/light-group/component-test.js
rename to web/tests/integration/pods/components/light-group/component-test.js
diff --git a/tests/integration/pods/components/lights-tab/component-test.js b/web/tests/integration/pods/components/lights-tab/component-test.js
similarity index 100%
rename from tests/integration/pods/components/lights-tab/component-test.js
rename to web/tests/integration/pods/components/lights-tab/component-test.js
diff --git a/tests/integration/pods/components/music-tab/component-test.js b/web/tests/integration/pods/components/music-tab/component-test.js
similarity index 100%
rename from tests/integration/pods/components/music-tab/component-test.js
rename to web/tests/integration/pods/components/music-tab/component-test.js
diff --git a/tests/test-helper.js b/web/tests/test-helper.js
similarity index 100%
rename from tests/test-helper.js
rename to web/tests/test-helper.js
diff --git a/web/tests/unit/.gitkeep b/web/tests/unit/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/vendor/dancer.js b/web/vendor/dancer.js
similarity index 100%
rename from vendor/dancer.js
rename to web/vendor/dancer.js