smoother color selection

This commit is contained in:
Egor 2015-10-21 01:52:24 -07:00
parent 17eb7a5501
commit 3db9cc158c
5 changed files with 24 additions and 11 deletions

View file

@ -9,6 +9,14 @@ export default Em.Component.extend({
canvasContext: null, canvasContext: null,
actions: { actions: {
mouseMove(){
if(this.get('pressingDown')){
this.send('colorSelect');
}
},
mouseUp(){
this.set('pressingDown', false);
},
colorSelect() { colorSelect() {
var canvasOffset = Em.$(this.get('canvas')).offset(); var canvasOffset = Em.$(this.get('canvas')).offset();
var canvasX = Math.floor(event.pageX - canvasOffset.left), canvasY = Math.floor(event.pageY - canvasOffset.top); var canvasX = Math.floor(event.pageX - canvasOffset.left), canvasY = Math.floor(event.pageY - canvasOffset.top);
@ -17,12 +25,16 @@ export default Em.Component.extend({
var imageData = this.get('canvasContext').getImageData(canvasX, canvasY, 1, 1); var imageData = this.get('canvasContext').getImageData(canvasX, canvasY, 1, 1);
var pixel = imageData.data; var pixel = imageData.data;
this.set('pressingDown', true);
if( !(pixel[0] === 0 && pixel[1] === 0 && pixel[2] === 0) ) { if( !(pixel[0] === 0 && pixel[1] === 0 && pixel[2] === 0) ) {
this.set('rgb', [pixel[0], pixel[1], pixel[2]]); this.set('rgb', [pixel[0], pixel[1], pixel[2]]);
} }
} }
}, },
pressingDown: false,
// https://dzone.com/articles/creating-your-own-html5 // https://dzone.com/articles/creating-your-own-html5
didInsertElement(){ didInsertElement(){
// handle color changes // handle color changes

View file

@ -1 +1 @@
<canvas id="picker" width="256" height="256" {{action "colorSelect"}}></canvas> <canvas id="picker" width="256" height="256" {{action "colorSelect" on="mouseDown"}} {{action "mouseMove" on="mouseMove"}} {{action "mouseUp" on="mouseUp"}}></canvas>

View file

@ -1,6 +1,6 @@
{{#paper-list}} {{#paper-list}}
{{#paper-item class="newGroupRow"}} {{#paper-item class="newGroupRow"}}
<div class="newGroup" {{action "toggleAddGroupsModal"}}>Add a new group</div> <div class="newGroup" {{action "toggleAddGroupsModal"}}>{{paper-icon icon="group-add"}} Add a new group</div>
{{/paper-item}} {{/paper-item}}
{{#each groupsArrData as |group|}} {{#each groupsArrData as |group|}}

View file

@ -28,6 +28,8 @@ export default Em.Component.extend({
if(rgb[0] !== 255 && rgb[1] !== 255 && rgb[2] !== 255) { if(rgb[0] !== 255 && rgb[1] !== 255 && rgb[2] !== 255) {
options['xy'] = this.rgbToXy(rgb[0], rgb[1], rgb[2]); options['xy'] = this.rgbToXy(rgb[0], rgb[1], rgb[2]);
} }
options['transitiontime'] = 0;
Em.$.ajax(this.get('apiURL') + '/lights/' + light + '/state', { Em.$.ajax(this.get('apiURL') + '/lights/' + light + '/state', {
data: JSON.stringify(options), data: JSON.stringify(options),

View file

@ -393,18 +393,17 @@ md-toolbar {
width: 100%; width: 100%;
padding: 10px 0 10px 10px; padding: 10px 0 10px 10px;
margin: 0; margin: 0;
.group-add {
margin-right: 5px;
}
} }
.newGroupRow{ .newGroupRow{
border-style: solid; background: white;
border-width: 3px;
border-color: #f6c653 #bd6a23 #b6631f #e8ab4a;
background: #d79922;
color: black;
} }
.newGroupRow:hover { .newGroupRow:hover {
background-color: lighten(#d79922, 10%); background-color: darken(white, 5%);
} }
.groupRow:hover * .close { .groupRow:hover * .close {
@ -862,7 +861,7 @@ body.dimmerOn {
color: white; color: white;
background: #242424; background: #242424;
.md-track, .color { .md-track, .color {
background: white !important; background: white;
} }
.playlistItem { .playlistItem {
color: #cdcdcd; color: #cdcdcd;
@ -874,10 +873,10 @@ body.dimmerOn {
.playlistItem:hover { .playlistItem:hover {
background: darken(#2D2D2D, 10%); background: darken(#2D2D2D, 10%);
} }
.close { .playlistItem .close {
color: #cdcdcd !important; color: #cdcdcd !important;
} }
.close:hover { .playlistItem .close:hover {
color: white !important; color: white !important;
} }
svg { svg {