diff options
Diffstat (limited to 'public/assets/javascripts/ui/builder/BuilderInfo.js')
| -rw-r--r-- | public/assets/javascripts/ui/builder/BuilderInfo.js | 48 |
1 files changed, 37 insertions, 11 deletions
diff --git a/public/assets/javascripts/ui/builder/BuilderInfo.js b/public/assets/javascripts/ui/builder/BuilderInfo.js index ee6c81a..2a7c8d9 100644 --- a/public/assets/javascripts/ui/builder/BuilderInfo.js +++ b/public/assets/javascripts/ui/builder/BuilderInfo.js @@ -4,11 +4,11 @@ var BuilderInfo = View.extend({ events: { "keydown": 'stopPropagation', - "change [name=x]": 'changePosition', - "change [name=y]": 'changePosition', - "change [name=width]": 'changeDimensions', - "change [name=depth]": 'changeDimensions', - "change [name=height]": 'changeDimensions', + "change [name=x]": 'changeX', + "change [name=y]": 'changeY', + "change [name=width]": 'changeWidth', + "change [name=depth]": 'changeDepth', + "change [name=height]": 'changeHeight', "change [name=units]": 'changeUnits', "change [name=resolution]": 'changeResolution', "change [name=viewHeight]": 'changeViewHeight', @@ -63,11 +63,31 @@ var BuilderInfo = View.extend({ this.room = null this.hide() }, - - changeDimensions: function(){ -// this.$width.unitVal( room.rect.x.length() ) -// this.$depth.unitVal( room.rect.y.length() ) -// this.$height.unitVal( room.height ) + + changeWidth: function(e){ + e.stopPropagation() + this.room.rect.x.setLength( this.$width.unitVal() ) + Rooms.clipper.update() + }, + changeDepth: function(e){ + e.stopPropagation() + this.room.rect.y.setLength( this.$depth.unitVal() ) + Rooms.clipper.update() + }, + changeHeight: function(e){ + e.stopPropagation() + this.room.height = this.$height.unitVal() + Rooms.clipper.update() + }, + changeX: function(e){ + e.stopPropagation() + this.room.rect.x.setPosition( this.$x.unitVal() ) + Rooms.clipper.update() + }, + changeY: function(e){ + e.stopPropagation() + this.room.rect.y.setPosition( this.$y.unitVal() ) + Rooms.clipper.update() }, changeUnits: function(){ @@ -93,6 +113,9 @@ $.fn.unitVal = function(n){ if (typeof n === "undefined") { s = $(this).val() n = stringToMeasurement( s ) + if (! n || isNaN(n)) { + n = $(this).data("px") + } } s = measurementToString( n ) $(this).val( s ).data("px", n) @@ -122,6 +145,9 @@ function measurementToString( n ) { } function stringToMeasurement( s ) { var ft, inch, ft_in, type + if (! s.match(/[0-9]/)) { + return NaN + } if (s.indexOf("'") !== -1 || s.indexOf('"') !== -1 || s.indexOf('ft') !== -1) { ft_in = s.match(/[0-9.]+/g) if (ft_in.length >= 2) { @@ -143,7 +169,7 @@ function stringToMeasurement( s ) { } n = ft * 36 + inch * 3 } - else if (type === "m") { + else if (s.indexOf("m") !== -1) { n = parseFloat(s.match(/[0-9.]+/)) * 36 / 0.3048 } else if (s.indexOf("px") !== -1) { |
