diff --git a/README.md b/README.md index 8fd1213..f90fc18 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,12 @@ # Huegasm + Music awesomeness for hue lights. It lives at http://www.huegasm.com - +# Current priorities +- modernize the app +- create a hybrid app with Cardova ## POSSIBLE FUTURE FEATURES - better visualizations diff --git a/web/README.md b/web/README.md index 6be258e..c8af9d5 100644 --- a/web/README.md +++ b/web/README.md @@ -1,7 +1,7 @@ # Huegasm This README outlines the details of collaborating on this Ember application. -A short introduction of this app could easily go here. +Music awesomeness for hue lights. ## Prerequisites @@ -29,20 +29,11 @@ You will need the following things properly installed on your computer. 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/) diff --git a/web/app/pods/components/bridge-finder/template.hbs b/web/app/pods/components/bridge-finder/template.hbs index 1b8cb08..088f0a7 100644 --- a/web/app/pods/components/bridge-finder/template.hbs +++ b/web/app/pods/components/bridge-finder/template.hbs @@ -6,14 +6,14 @@ This likely happened because you're using an outdated browser and/or because your browser does not support CORS. Feel free to contact me through the link at the bottom of the page if you feel like this is not the case.
For the best browsing experience on this site ( and every other one known to man ) please switch to Google Chrome or Firefox

. {{else}} - + {{paper-progress-linear warn=true value=bridgeUserNamePingIntervalProgress}} {{#if isAuthenticating}}

Your bridge IP is {{bridgeIp}}
Press the button on your bridge to authenticate this application.

{{else}} -

You failed to press the button. RETRY

+

You failed to press the button. RETRY

{{/if}} {{/if}} {{else}} @@ -26,7 +26,7 @@

Found multiple hue bridges.
Please select the one you want to use for this application.

-
+
{{#each multipleBridgeIps as |bridge|}} {{#paper-radio value=bridge selected=bridgeIp}}{{bridge}}{{/paper-radio}} {{/each}} @@ -38,7 +38,7 @@ ( or type offline to look around )

- + {{paper-input label="Hue bridge IP address" value=manualBridgeIp}} {{#paper-button action="findBridgeByIp" raised=true primary=true}}Find{{/paper-button}} diff --git a/web/app/pods/components/color-picker/component.js b/web/app/pods/components/color-picker/component.js index dd95379..698841f 100644 --- a/web/app/pods/components/color-picker/component.js +++ b/web/app/pods/components/color-picker/component.js @@ -6,7 +6,7 @@ const { } = Ember; export default Component.extend({ - classNames: ['colorpicker'], + classNames: ['color-picker'], rgb: null, canvas: null, canvasContext: null, diff --git a/web/app/pods/components/groups-list/component.js b/web/app/pods/components/groups-list/component.js index b5f2f08..5a65303 100644 --- a/web/app/pods/components/groups-list/component.js +++ b/web/app/pods/components/groups-list/component.js @@ -10,7 +10,7 @@ const { export default Component.extend({ classNames: ['dropdown-menu'], - elementId: 'groupList', + elementId: 'group-list', tagName: null, groupIdSelection: null, @@ -22,14 +22,14 @@ export default Component.extend({ ids.push(key); } } - groupsArrData.push({name: 'All', data: {lights: ids, key: '0' }, rowClass: groupIdSelection === '0' ? 'groupRow selectedRow' : 'groupRow', deletable: false}); + groupsArrData.push({name: 'All', data: {lights: ids, key: '0' }, rowClass: groupIdSelection === '0' ? 'group-row selected-row' : 'group-row', deletable: false}); for (let key in groupsData) { if (groupsData.hasOwnProperty(key)) { - let rowClass = 'groupRow'; + let rowClass = 'group-row'; if(key === groupIdSelection){ - rowClass += ' selectedRow'; + rowClass += ' selected-row'; } groupsArrData.push({name: groupsData[key].name, data: {lights: groupsData[key].lights, key: key}, rowClass: rowClass, deletable: true}); diff --git a/web/app/pods/components/groups-list/template.hbs b/web/app/pods/components/groups-list/template.hbs index a772591..2181ab4 100644 --- a/web/app/pods/components/groups-list/template.hbs +++ b/web/app/pods/components/groups-list/template.hbs @@ -1,11 +1,11 @@ {{#paper-list}} - {{#paper-item class="newGroupRow"}} -
{{paper-icon icon="group-add"}} Add a new group
+ {{#paper-item class="new-group-row"}} +
{{paper-icon icon="group-add"}} Add a new group
{{/paper-item}} {{#each groupsArrData as |group|}} {{#paper-item class=group.rowClass}} -
{{group.name}}
{{#if group.deletable}}{{paper-icon icon="close"}}{{/if}} +
{{group.name}}
{{#if group.deletable}}{{paper-icon icon="close"}}{{/if}} {{/paper-item}} {{/each}} {{/paper-list}} diff --git a/web/app/pods/components/hue-controls/component.js b/web/app/pods/components/hue-controls/component.js index 6db718c..678d60e 100644 --- a/web/app/pods/components/hue-controls/component.js +++ b/web/app/pods/components/hue-controls/component.js @@ -12,7 +12,7 @@ const { export default Component.extend({ classNames: ['container-fluid'], - elementId: 'hueControls', + elementId: 'hue-controls', bridgeIp: null, manualBridgeIp: null, bridgeUsername: null, @@ -64,12 +64,12 @@ export default Component.extend({ if(haveTooltip) { run.once(this, function(){ - $('.bootstrapTooltip').tooltip(); + $('.bootstrap-tooltip').tooltip(); }); } }); - observer.observe($('#hueControls')[0], {childList: true, subtree: true}); + observer.observe($('#hue-controls')[0], {childList: true, subtree: true}); }, init() { @@ -142,8 +142,8 @@ export default Component.extend({ startIntro(){ let INTRO = introJs, intro = INTRO(), - playerBottom = $('#playerBottom'), - beatDetectionAreaArrowIcon = $('#beatDetectionAreaArrowIcon'); + playerBottom = $('#player-bottom'), + beatDetectionAreaArrowIcon = $('#beat-detection-area-arrow-icon'); this.set('dimmerOn', false); @@ -153,7 +153,7 @@ export default Component.extend({ intro: 'Welcome! This short tutorial will introduce you to Huegasm.' }, { - element: '#musicTab', + element: '#music-tab', intro: 'This is the music player. You\'ll use this to play music and synchronize it with your active lights.

' + 'TIP: Control which lights are active through the Lights tab or through the Groups menu dropdown.' }, @@ -163,11 +163,11 @@ export default Component.extend({ 'TIP: Songs added through Soundcloud will be saved for when you visit this page again.' }, { - element: '#playerArea', + element: '#player-area', intro: 'The audio playback may be controlled with the controls here. Basic music visualization effects may be shown here by selecting them from the menu ( eyeball icon in the bottom right ).' }, { - element: '#beatOptionRow', + element: '#beat-option-row', intro: 'These are the settings for the music tab:
' + 'Sensitivity - The sensitivity of the beat detector ( more sensitivity results in more registered beats )
' + 'Hue Range - The hue range that the lights may change to on beat.
' + @@ -177,13 +177,13 @@ export default Component.extend({ position: 'top' }, { - element: '#beatContainer', + element: '#beat-container', intro: 'An interactive speaker that will bump when a beat is registered.

' + 'TIP: Click on the center of the speaker to simulate a beat.', position: 'top' }, { - element: '#lightsTab', + element: '#lights-tab', intro: 'This is the lights tab. Here you\'ll be able to change various light properties:
' + 'Power - Turn the selected lights on/off
' + 'Brightness - The brightness level of the selected lights
' + @@ -192,17 +192,17 @@ export default Component.extend({ 'Colorloop - Selected lights will slowly cycle through all the colors
' }, { - element: '#activeLights', + element: '#active-lights', intro: 'These icons represent the hue lights in your system. Active lights will be controlled by the application while the inactive lights will have a red X over them and will not be controlled.
' + 'You may toggle a light\'s state by clicking on it.' }, { - element: $('.settingsItem')[0], + element: $('.settings-item')[0], intro: 'The Groups menu allows for saving and quickly selecting groups of lights.', position: 'left' }, { - element: $('.settingsItem')[1], + element: $('.settings-item')[1], intro: 'A few miscellaneous settings can be found here.

' + 'WARNING: clearing application settings will restore the application to its original state. This will even delete your playlist and any saved song beat preferences.', position: 'left' @@ -216,27 +216,27 @@ export default Component.extend({ ] }); - // it's VERY ugly but it works + // it's VERY ugly but it works... the jQuery massacre :'( intro.onchange((element) => { - if(element.id === 'musicTab' || element.id === 'playlist' || element.id === 'playerArea' || element.id === 'beatOptionRow' || element.id === 'beatOptionButtonGroup' || element.id === 'beatContainer' || element.id === 'usingMicAudioTooltip'){ - $('#musicTab').removeClass('hidden'); - $('#lightsTab').addClass('hidden'); - $('.navigationItem').eq(0).removeClass('active'); - $('.navigationItem').eq(1).addClass('active'); + if(element.id === 'music-tab' || element.id === 'playlist' || element.id === 'player-area' || element.id === 'beat-option-row' || element.id === 'beat-option-button-group' || element.id === 'beat-container' || element.id === 'using-mic-audio-tooltip'){ + $('#music-tab').removeClass('hidden'); + $('#lights-tab').addClass('hidden'); + $('.navigation-item').eq(0).removeClass('active'); + $('.navigation-item').eq(1).addClass('active'); } else { - $('#lightsTab').removeClass('hidden'); - $('#musicTab').addClass('hidden'); - $('.navigationItem').eq(1).removeClass('active'); - $('.navigationItem').eq(0).addClass('active'); + $('#lights-tab').removeClass('hidden'); + $('#music-tab').addClass('hidden'); + $('.navigation-item').eq(1).removeClass('active'); + $('.navigation-item').eq(0).addClass('active'); } - if(element.id === 'musicTab' || element.id === 'playlist' || element.id === 'playerArea'){ + if(element.id === 'music-tab' || element.id === 'playlist' || element.id === 'player-area'){ playerBottom.hide(); if(beatDetectionAreaArrowIcon.hasClass('keyboard-arrow-up')){ beatDetectionAreaArrowIcon.removeClass('keyboard-arrow-up').addClass('keyboard-arrow-down'); } - } else if(element.id === 'beatOptionRow' || element.id === 'beatOptionButtonGroup' || element.id === 'beatContainer'){ + } else if(element.id === 'beat-option-row' || element.id === 'beat-option-button-group' || element.id === 'beat-container'){ playerBottom.show(); if(beatDetectionAreaArrowIcon.hasClass('keyboard-arrow-down')){ @@ -249,10 +249,10 @@ export default Component.extend({ let onFinish = ()=>{ this.set('activeTab', 1); - $('#musicTab').removeClass('hidden'); - $('#lightsTab').addClass('hidden'); - $('.navigationItem').eq(0).removeClass('active'); - $('.navigationItem').eq(1).addClass('active'); + $('#music-tab').removeClass('hidden'); + $('#lights-tab').addClass('hidden'); + $('.navigation-item').eq(0).removeClass('active'); + $('.navigation-item').eq(1).addClass('active'); if(beatDetectionAreaArrowIcon.hasClass('keyboard-arrow-up')){ playerBottom.show(); diff --git a/web/app/pods/components/hue-controls/template.hbs b/web/app/pods/components/hue-controls/template.hbs index 845c526..df7711b 100644 --- a/web/app/pods/components/hue-controls/template.hbs +++ b/web/app/pods/components/hue-controls/template.hbs @@ -2,24 +2,24 @@