diff --git a/.watchmanconfig b/.watchmanconfig index 5e9462c..e7834e3 100644 --- a/.watchmanconfig +++ b/.watchmanconfig @@ -1,3 +1,3 @@ { - "ignore_dirs": ["tmp"] + "ignore_dirs": ["tmp", "dist"] } diff --git a/app/app.js b/app/app.js index 8d66b95..8b234d6 100644 --- a/app/app.js +++ b/app/app.js @@ -3,14 +3,14 @@ import Resolver from 'ember/resolver'; import loadInitializers from 'ember/load-initializers'; import config from './config/environment'; -var App; +let App; Ember.MODEL_FACTORY_INJECTIONS = true; App = Ember.Application.extend({ modulePrefix: config.modulePrefix, podModulePrefix: config.podModulePrefix, - Resolver: Resolver + Resolver }); loadInitializers(App, config.modulePrefix); diff --git a/app/index.html b/app/index.html index 25bc95e..6757df4 100644 --- a/app/index.html +++ b/app/index.html @@ -4,7 +4,7 @@ Huegasm - + @@ -36,7 +36,7 @@ - + {{content-for 'head-footer'}} diff --git a/app/pods/components/hue-controls/component.js b/app/pods/components/hue-controls/component.js index 8e82714..26824cf 100644 --- a/app/pods/components/hue-controls/component.js +++ b/app/pods/components/hue-controls/component.js @@ -103,7 +103,7 @@ export default Em.Component.extend({ position: 'left' }, { - element: '#dimmerWrapper', + element: '#dimmer', intro: 'And that\'s it...Feel free to reach out to me through the link at the bottom of the page.
' + 'Hope you enjoy the application. ;)

' + 'TIP: click on the icon to switch to a darker theme.', @@ -138,7 +138,7 @@ export default Em.Component.extend({ if(beatDetectionAreaArrowIcon.hasClass('keyboard-arrow-down')){ beatDetectionAreaArrowIcon.removeClass('keyboard-arrow-down').addClass('keyboard-arrow-up'); } - } else if(element.id === 'dimmerWrapper'){ + } else if(element.id === 'dimmer'){ Em.$(document).click(); } }); @@ -155,6 +155,19 @@ export default Em.Component.extend({ } else { playerBottom.hide(); } + }, onExit = ()=>{ + var dimmer = Em.$('#dimmer'); + + onFinish(); + dimmer.popover({ + trigger: 'manual', + placement: 'top', + content: 'Click on this icon to toggle the dark theme.' + }).popover('show'); + + setTimeout(()=>{ + dimmer.popover('hide'); + }, 5000); }; // skip hidden/missing elements @@ -163,7 +176,7 @@ export default Em.Component.extend({ if(elem.html() === ''){ Em.$('.introjs-nextbutton').click(); } - }).onexit(onFinish).oncomplete(onFinish).start(); + }).onexit(onExit).oncomplete(onFinish).start(); } }, diff --git a/app/pods/components/huegasm-app/component.js b/app/pods/components/huegasm-app/component.js index 92e65b8..758b67f 100644 --- a/app/pods/components/huegasm-app/component.js +++ b/app/pods/components/huegasm-app/component.js @@ -21,12 +21,12 @@ export default Em.Component.extend({ ready: false, - dimmerOnClass: function(){ + dimmerOnClass: function () { var dimmerOn = this.get('dimmerOn'), storage = this.get('storage'), dimmerOnClass = null; - if(dimmerOn){ + if (dimmerOn) { Em.$('body').addClass('dimmerOn'); Em.$('html').addClass('dimmerOn'); dimmerOnClass = 'active'; @@ -43,18 +43,22 @@ export default Em.Component.extend({ init(){ this._super(); - var storage = new window.Locally.Store({ compress: true }); + var storage = new window.Locally.Store({compress: true}); this.set('storage', storage); - if(!Em.isNone(storage.get('huegasm.dimmerOn'))) { + if (!Em.isNone(storage.get('huegasm.dimmerOn'))) { this.set('dimmerOn', storage.get('huegasm.dimmerOn')); } - if(!Em.isEmpty(storage.get('huegasm.bridgeIp')) && !Em.isEmpty(storage.get('huegasm.bridgeUsername'))) { + if (!Em.isEmpty(storage.get('huegasm.bridgeIp')) && !Em.isEmpty(storage.get('huegasm.bridgeUsername'))) { this.setProperties({ bridgeIp: storage.get('huegasm.bridgeIp'), bridgeUsername: storage.get('huegasm.bridgeUsername') }); } - } + }, + + year: function () { + return new Date().getFullYear(); + }.property() }); diff --git a/app/pods/components/huegasm-app/template.hbs b/app/pods/components/huegasm-app/template.hbs index 713e1b1..160f674 100644 --- a/app/pods/components/huegasm-app/template.hbs +++ b/app/pods/components/huegasm-app/template.hbs @@ -6,11 +6,7 @@ {{else}}
Huegasm
-

Huegasm is a free web application for controlling your Philips Hue lights...oh and it's kind of awesome at syncing music with your lights.

- - - - +

Huegasm is a free web application for controlling your Philips Hue lights...oh and it's pretty awesome at synchronizing your music with your lights.

{{#paper-button raised=true primary=true action="isReady" class="goButton"}}Go!{{/paper-button}}
@@ -18,6 +14,6 @@ {{/if}} \ No newline at end of file diff --git a/app/pods/components/music-tab/component.js b/app/pods/components/music-tab/component.js index 91df417..6bef279 100644 --- a/app/pods/components/music-tab/component.js +++ b/app/pods/components/music-tab/component.js @@ -191,7 +191,7 @@ export default Em.Component.extend(helperMixin, visualizerMixin, { if(!Em.isNone(track) && !Em.isNone(track.offset())) { playListArea.animate({ - scrollTop: track.offset().top - playListArea.offset().top + playListArea.scrollTop() + scrollTop: track.offset().top - playListArea.offset().top + playListArea.scrollTop() - 30 }); } }, 1000); @@ -762,6 +762,7 @@ export default Em.Component.extend(helperMixin, visualizerMixin, { if(this.get('firstVisit')){ this.send('handleNewSoundCloudURL', 'https://soundcloud.com/mrsuicidesheep/tracks'); this.get('storage').set('huegasm.firstVisit', false); + this.sendAction(); } diff --git a/app/router.js b/app/router.js index ee31390..3bba78e 100644 --- a/app/router.js +++ b/app/router.js @@ -1,12 +1,11 @@ import Ember from 'ember'; import config from './config/environment'; -var Router = Ember.Router.extend({ +const Router = Ember.Router.extend({ location: config.locationType }); Router.map(function() { - this.route('404', {path:'/*path'}); }); export default Router; diff --git a/app/styles/app.scss b/app/styles/app.scss index 6ab3b52..393042d 100644 --- a/app/styles/app.scss +++ b/app/styles/app.scss @@ -24,13 +24,6 @@ body { position: static; } -#introPic { - display: block; - margin: 0 auto; - width: 100%; - max-width: 600px; -} - .introParagraph { margin-bottom: 30px; } @@ -289,13 +282,13 @@ md-list-item .md-no-style { } .colorpicker { - padding: 10px; + padding: 5px; background: rgba(0, 0, 0, 0.7); box-shadow: 5px 10px 15px 5px rgba(0, 0, 0, 0.3); color: #FFFFFF; position: absolute; - width: 275px; - height: 275px; + width: 266px; + height: 266px; right: 6px; top: -9px; z-index: 3; @@ -954,6 +947,9 @@ body.dimmerOn { #extraOptionsMenu:hover { background: rgba(0, 0, 0, 0.9); } + .popover-content { + color: black !important; + } } .power-settings-new.dimmerOn, @@ -971,7 +967,7 @@ body.dimmerOn { opacity: 0.9 !important; } -#dimmerWrapper { +#dimmer { position: absolute; left: -50px; bottom: -10px; diff --git a/app/transitions.js b/app/transitions.js deleted file mode 100644 index e70383f..0000000 --- a/app/transitions.js +++ /dev/null @@ -1,5 +0,0 @@ -export default function(){ - this.transition( - this.use('crossFade') - ); -} diff --git a/bower.json b/bower.json index 6ebc520..f65dfd1 100644 --- a/bower.json +++ b/bower.json @@ -3,26 +3,26 @@ "dependencies": { "bootstrap-sass": "~3.3.5", "ember": "~2.1.0", - "ember-cli-shims": "ember-cli/ember-cli-shims#0.0.3", - "ember-cli-test-loader": "ember-cli-test-loader#0.1.3", + "ember-cli-shims": "0.0.6", + "ember-cli-test-loader": "0.2.1", "ember-data": "~2.1.0", - "ember-load-initializers": "ember-cli/ember-load-initializers#0.1.5", - "ember-qunit": "0.4.9", - "ember-qunit-notifications": "0.0.7", - "ember-resolver": "~0.1.18", + "ember-load-initializers": "0.1.7", + "ember-qunit": "0.4.16", + "ember-qunit-notifications": "0.1.0", + "ember-resolver": "~0.1.20", "hammerjs": "~2.0.4", "intro.js": "~1.1.1", "JavaScript-ID3-Reader": "https://github.com/aadsm/JavaScript-ID3-Reader.git", "jquery": "~2.1.4", "jquery-mousewheel": "~3.1.13", - "loader.js": "ember-cli/loader.js#3.2.0", + "loader.js": "ember-cli/loader.js#3.2.1", "locallyjs": "~0.3.2", "matchMedia": "~0.2.0", "nouislider": "^8.0.1", - "qunit": "~1.18.0" + "qunit": "~1.20.0", + "HackTimer": "https://github.com/turuslan/HackTimer.git#~1.0.0" }, "resolutions": { - "ember": "~2.1.0", - "jquery": "~2.1.4" + "ember": "~2.1.0" } } diff --git a/config/environment.js b/config/environment.js index 450800f..57ee2b0 100644 --- a/config/environment.js +++ b/config/environment.js @@ -20,6 +20,7 @@ module.exports = function(environment) { }, contentSecurityPolicy: { + 'child-src': "blob:", 'default-src': "'none'", 'script-src': "'self' 'unsafe-inline' connect.soundcloud.com www.google-analytics.com", 'font-src': "'self' fonts.gstatic.com", diff --git a/ember-cli-build.js b/ember-cli-build.js index 303947e..8cb6cde 100644 --- a/ember-cli-build.js +++ b/ember-cli-build.js @@ -7,9 +7,11 @@ module.exports = function(defaults) { app.import('vendor/dancer.js'); app.import('bower_components/bootstrap-sass/assets/javascripts/bootstrap/tooltip.js'); app.import('bower_components/bootstrap-sass/assets/javascripts/bootstrap/dropdown.js'); + app.import('bower_components/bootstrap-sass/assets/javascripts/bootstrap/popover.js'); app.import('bower_components/JavaScript-ID3-Reader/dist/id3-minimized.js'); app.import('bower_components/jquery-mousewheel/jquery.mousewheel.js'); app.import('bower_components/locallyjs/dist/locally.min.js'); + app.import('bower_components/HackTimer/HackTimer.js'); app.import('bower_components/intro.js/intro.js'); app.import('bower_components/intro.js/introjs.css'); diff --git a/package.json b/package.json index a867d7c..ff261dc 100644 --- a/package.json +++ b/package.json @@ -19,26 +19,26 @@ "author": "", "license": "MIT", "devDependencies": { - "broccoli-asset-rev": "^2.0.2", - "ember-cli": "1.13.8", - "ember-cli-app-version": "1.0.0", - "ember-cli-babel": "^5.0.0", + "broccoli-asset-rev": "^2.2.0", + "ember-cli": "^1.13.12", + "ember-cli-app-version": "^1.0.0", + "ember-cli-babel": "^5.1.5", "ember-cli-content-security-policy": "0.4.0", - "ember-cli-dependency-checker": "^1.0.0", - "ember-cli-htmlbars": "1.0.1", - "ember-cli-htmlbars-inline-precompile": "^0.3.0", - "ember-cli-ic-ajax": "0.2.1", - "ember-cli-inject-live-reload": "^1.3.0", + "ember-cli-dependency-checker": "^1.1.0", + "ember-cli-htmlbars": "^1.0.1", + "ember-cli-htmlbars-inline-precompile": "^0.3.1", + "ember-cli-ic-ajax": "0.2.4", + "ember-cli-inject-live-reload": "^1.3.1", "ember-cli-nouislider": "0.7.0", - "ember-cli-qunit": "1.0.3", + "ember-cli-qunit": "^1.0.4", "ember-cli-release": "0.2.8", - "ember-cli-sass": "5.0.1", - "ember-cli-sri": "^1.0.1", - "ember-cli-uglify": "^1.0.1", + "ember-cli-sass": "5.1.0", + "ember-cli-sri": "^1.1.0", + "ember-cli-uglify": "^1.2.0", "ember-cli-windows-addon": "^1.2.2", "ember-data": "2.1.0", - "ember-disable-proxy-controllers": "^1.0.0", - "ember-export-application-global": "^1.0.3", + "ember-disable-proxy-controllers": "^1.0.1", + "ember-export-application-global": "^1.0.4", "ember-modal-dialog": "0.8.2", "ember-notify": "^4.0.1", "ember-paper": "https://github.com/miguelcobain/ember-paper.git", diff --git a/public/assets/images/intro.jpg b/public/assets/images/intro.jpg deleted file mode 100644 index 1cce1d7..0000000 Binary files a/public/assets/images/intro.jpg and /dev/null differ diff --git a/tests/helpers/destroy-app.js b/tests/helpers/destroy-app.js new file mode 100644 index 0000000..c3d4d1a --- /dev/null +++ b/tests/helpers/destroy-app.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; + +export default function destroyApp(application) { + Ember.run(application, 'destroy'); +} diff --git a/tests/helpers/module-for-acceptance.js b/tests/helpers/module-for-acceptance.js new file mode 100644 index 0000000..ed23003 --- /dev/null +++ b/tests/helpers/module-for-acceptance.js @@ -0,0 +1,23 @@ +import { module } from 'qunit'; +import startApp from '../helpers/start-app'; +import destroyApp from '../helpers/destroy-app'; + +export default function(name, options = {}) { + module(name, { + beforeEach() { + this.application = startApp(); + + if (options.beforeEach) { + options.beforeEach.apply(this, arguments); + } + }, + + afterEach() { + destroyApp(this.application); + + if (options.afterEach) { + options.afterEach.apply(this, arguments); + } + } + }); +} diff --git a/tests/helpers/resolver.js b/tests/helpers/resolver.js index 28f4ece..ebfb4e4 100644 --- a/tests/helpers/resolver.js +++ b/tests/helpers/resolver.js @@ -1,7 +1,7 @@ import Resolver from 'ember/resolver'; import config from '../../config/environment'; -var resolver = Resolver.create(); +const resolver = Resolver.create(); resolver.namespace = { modulePrefix: config.modulePrefix, diff --git a/tests/helpers/start-app.js b/tests/helpers/start-app.js index 0f7aab1..e098f1d 100644 --- a/tests/helpers/start-app.js +++ b/tests/helpers/start-app.js @@ -3,12 +3,12 @@ import Application from '../../app'; import config from '../../config/environment'; export default function startApp(attrs) { - var application; + let application; - var attributes = Ember.merge({}, config.APP); + let attributes = Ember.merge({}, config.APP); attributes = Ember.merge(attributes, attrs); // use defaults, but you can override; - Ember.run(function() { + Ember.run(() => { application = Application.create(attributes); application.setupForTesting(); application.injectTestHelpers(); diff --git a/tests/index.html b/tests/index.html index 32ad896..7a4e8a7 100644 --- a/tests/index.html +++ b/tests/index.html @@ -18,13 +18,14 @@ {{content-for 'test-head-footer'}} - {{content-for 'body'}} {{content-for 'test-body'}} + - + + {{content-for 'body-footer'}}