From 2ef9a62a383f49b50c0d356468220bccbefcc9a5 Mon Sep 17 00:00:00 2001 From: Egor Philippov Date: Fri, 4 Sep 2015 13:57:43 -0700 Subject: [PATCH] WIP - trial mode + better music tag library --- .jshintrc | 2 +- app/components/bridge-controls.js | 8 ++-- app/components/bridge-finder.js | 26 ++++++++--- app/components/controls/music-control.js | 9 ++-- app/components/huegasm-app.js | 2 + app/styles/app.scss | 23 +++++++++- app/templates/components/bridge-finder.hbs | 52 ++++++++++++---------- app/templates/components/huegasm-app.hbs | 4 +- bower.json | 2 +- ember-cli-build.js | 2 +- 10 files changed, 87 insertions(+), 43 deletions(-) diff --git a/.jshintrc b/.jshintrc index b81fa5c..68607c9 100644 --- a/.jshintrc +++ b/.jshintrc @@ -4,7 +4,7 @@ "window", "-Promise", "Dancer", - "id3" + "ID3" ], "browser": true, "boss": true, diff --git a/app/components/bridge-controls.js b/app/components/bridge-controls.js index 0f60789..508fa94 100644 --- a/app/components/bridge-controls.js +++ b/app/components/bridge-controls.js @@ -2,7 +2,7 @@ import Em from 'ember'; export default Em.Component.extend({ bridgeIp: null, - + manualBridgeIp: null, bridgeUsername: null, updateGroupsData: true, @@ -17,9 +17,11 @@ export default Em.Component.extend({ init: function() { this._super(); - this.doUpdateGroupsData(); - this.set('lightsDataIntervalHandle', setInterval(this.updateLightData.bind(this), 1000)); + if(!this.get('trial')) { + this.doUpdateGroupsData(); + this.set('lightsDataIntervalHandle', setInterval(this.updateLightData.bind(this), 1000)); + } }, onUpdateGroupsDataChange: function(){ diff --git a/app/components/bridge-finder.js b/app/components/bridge-finder.js index ed64abc..abd2b34 100644 --- a/app/components/bridge-finder.js +++ b/app/components/bridge-finder.js @@ -1,9 +1,11 @@ import Em from 'ember'; export default Em.Component.extend({ - classNames: ['container'], - bridgeIp: null, + classNames: ['container', 'center-block'], + elementId: 'finderContainer', + bridgeIp: null, + trial: false, bridgeUsername: null, bridgeFindStatus: null, @@ -22,6 +24,16 @@ export default Em.Component.extend({ actions: { retry: function(){ this.onBridgeIpChange(); + }, + + findBridgeByIp: function() { + if (this.get('manualBridgeIp').toLowerCase() === 'trial') { + this.setProperties({ + trial: true, + bridgeIp: 'trial', + bridgeUsername: 'trial' + }); + } } }, @@ -52,10 +64,12 @@ export default Em.Component.extend({ // try to authenticate against the bridge here onBridgeIpChange: function () { - this.setProperties({ - bridgePingIntervalHandle: setInterval(this.pingBridgeUser.bind(this), this.get('bridgeUsernamePingIntervalTime')), - bridgeUserNamePingIntervalProgress: 0 - }); + if(!this.get('trial')) { + this.setProperties({ + bridgePingIntervalHandle: setInterval(this.pingBridgeUser.bind(this), this.get('bridgeUsernamePingIntervalTime')), + bridgeUserNamePingIntervalProgress: 0 + }); + } }.observes('bridgeIp'), pingBridgeUser: function () { diff --git a/app/components/controls/music-control.js b/app/components/controls/music-control.js index 4832a4f..da55e7f 100644 --- a/app/components/controls/music-control.js +++ b/app/components/controls/music-control.js @@ -248,7 +248,8 @@ export default Em.Component.extend({ Em.$('#fileInput').on('change', function () { var files = this.files, - updatePlayQueue = function(err, tags){ + updatePlayQueue = function(){ + var tags = ID3.getAllTags("local"); playQueue.push({filaneme: this.name, url: URL.createObjectURL(this), artist: tags.artist, title: tags.title }); self.notifyPropertyChange('playQueue'); @@ -258,11 +259,11 @@ export default Em.Component.extend({ if (files.hasOwnProperty(key)) { var file = files[key]; - id3(file, updatePlayQueue.bind(file) ); + ID3.loadTags("local", updatePlayQueue.bind(file),{ + dataReader: FileAPIReader(file) + }); } } - - }); Em.$('[data-toggle="tooltip"]').tooltip(); diff --git a/app/components/huegasm-app.js b/app/components/huegasm-app.js index ce86901..e20701b 100644 --- a/app/components/huegasm-app.js +++ b/app/components/huegasm-app.js @@ -5,6 +5,8 @@ export default Em.Component.extend({ bridgeUsername: null, + trial: false, + init: function(){ this._super(); diff --git a/app/styles/app.scss b/app/styles/app.scss index a1a0c87..971b330 100644 --- a/app/styles/app.scss +++ b/app/styles/app.scss @@ -8,9 +8,30 @@ $playerHeight: 400px; $playListBackgroundColor: #1E1E1E; $playerDefaultIconColor: #BBBBBB; - // BRIDGE FINDER +// BRIDGE FINDER #finderContainer { + text-align: center; + margin-top: 40px; +} +#finderContainer .title { + font-family: 'Slabo 27px', serif; + font-size: 22px; +} + +#bridgeInput { + md-input-container { + max-width: 200px; + margin: 0 auto; + } +} + +#finderContainer p { + padding-top: 50px; +} + +md-progress-circular { + margin: 0 auto; } #pressButtonBridgeImg { diff --git a/app/templates/components/bridge-finder.hbs b/app/templates/components/bridge-finder.hbs index 4103a02..6e3c8a5 100644 --- a/app/templates/components/bridge-finder.hbs +++ b/app/templates/components/bridge-finder.hbs @@ -1,28 +1,32 @@ -
- {{#unless bridgeUsername}} - {{#if bridgeIp}} - - {{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

- {{/if}} +Huegasm +{{#unless bridgeUsername}} + {{#if bridgeIp}} + + {{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}} - {{#unless bridgeFindStatus}} - {{paper-progress-circular}} -

Trying to find your bridge's IP.

- {{/unless}} +

You failed to press the button. RETRY

+ {{/if}} + {{else}} + {{#unless bridgeFindStatus}} + {{paper-progress-circular}} +

Trying to find your bridge's IP.

+ {{/unless}} - {{#if bridgeFindMultiple}} -

Found multiple bridge IPs.

- {{else}} - {{#if bridgeFindFail}} - {{paper-progress-circular}} -

Trying to find your bridge's IP.

- {{/if}} + {{#if bridgeFindMultiple}} +

Found multiple hue bridges.

+ {{else}} + {{#if bridgeFindFail}} +

A hue bridge was not found on your network :(
+ Enter one manually?

+ + + {{paper-input label="Hue Bridge IP Address" value=manualBridgeIp}} + {{#paper-button action="findBridgeByIp" primary=true }}Find{{/paper-button}} + {{/if}} {{/if}} - {{/unless}} -
\ No newline at end of file + {{/if}} +{{/unless}} \ No newline at end of file diff --git a/app/templates/components/huegasm-app.hbs b/app/templates/components/huegasm-app.hbs index d776766..57ec5fc 100644 --- a/app/templates/components/huegasm-app.hbs +++ b/app/templates/components/huegasm-app.hbs @@ -1,5 +1,5 @@ {{#liquid-if bridgeUsername}} - {{bridge-controls bridgeIp=bridgeIp bridgeUsername=bridgeUsername}} + {{bridge-controls bridgeIp=bridgeIp bridgeUsername=bridgeUsername trial=trial}} {{else}} - {{bridge-finder bridgeIp=bridgeIp bridgeUsername=bridgeUsername}} + {{bridge-finder bridgeIp=bridgeIp bridgeUsername=bridgeUsername trial=trial}} {{/liquid-if}} diff --git a/bower.json b/bower.json index 4b9d531..70ba404 100644 --- a/bower.json +++ b/bower.json @@ -11,7 +11,7 @@ "ember-qunit-notifications": "0.0.7", "ember-resolver": "~0.1.18", "hammerjs": "~2.0.4", - "id3js": "id3#~1.0.2", + "JavaScript-ID3-Reader": "https://github.com/aadsm/JavaScript-ID3-Reader.git", "jquery": "^1.11.1", "loader.js": "ember-cli/loader.js#3.2.0", "nouislider": "^8.0.1", diff --git a/ember-cli-build.js b/ember-cli-build.js index 12b37f2..d5e7f09 100644 --- a/ember-cli-build.js +++ b/ember-cli-build.js @@ -8,7 +8,7 @@ module.exports = function(defaults) { app.import('vendor/dancer.js'); app.import('bower_components/bootstrap-sass/assets/javascripts/bootstrap/tooltip.js'); - app.import('bower_components/id3js/dist/id3.js'); + app.import('bower_components/JavaScript-ID3-Reader/dist/id3-minimized.js'); // Use `app.import` to add additional libraries to the generated // output files.