summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--public/assets/javascripts/ui/blueprint/BlueprintScaler.js17
-rw-r--r--public/assets/javascripts/ui/lib/FormView.js2
-rw-r--r--server/index.js1
-rw-r--r--server/lib/api/media.js16
-rw-r--r--views/controls/blueprint/editor.ejs20
5 files changed, 40 insertions, 16 deletions
diff --git a/public/assets/javascripts/ui/blueprint/BlueprintScaler.js b/public/assets/javascripts/ui/blueprint/BlueprintScaler.js
index addf9a9..c393cfb 100644
--- a/public/assets/javascripts/ui/blueprint/BlueprintScaler.js
+++ b/public/assets/javascripts/ui/blueprint/BlueprintScaler.js
@@ -2,16 +2,17 @@
var BlueprintScaler = ModalFormView.extend({
el: ".blueprintScaler",
- method: "/api/media/scale",
+ action: "/api/media/scale",
events: {
"change [name=blueprint-dimensions]": "changeDimensions",
"change [name=blueprint-units]": "changeUnits",
"click .uploadNewBlueprint": "showBlueprintUpload",
- "click #saveBlueprint": "save",
},
- initialize: function(){
+ initialize: function(opt){
+ this.parent = opt.parent
+
this.$blueprintMap = this.$("#blueprintMap")
this.$blueprintDimensionsRapper = this.$("#blueprintDimensions")
this.$dimensions = this.$("[name=blueprint-dimensions]")
@@ -46,8 +47,10 @@ var BlueprintScaler = ModalFormView.extend({
pick: function(media){
this.media = media
- if (!! media.scale) {
+ if (!! media.units) {
this.parent.useFloorplan(media)
+ this.hide()
+ return
}
this.floorplan.load({ media: media, keepImage: true })
@@ -115,13 +118,14 @@ var BlueprintScaler = ModalFormView.extend({
if (this.lineTool.line.length !== 2) return 0
var line = this.lineTool.line
return dist( line[0].a, line[0].b, line[1].a, line[1].b )
- }
+ },
validate: function(){
var val = this.$dimensions.unitVal()
var errors = []
if (! this.lineLength()) {
errors.push("no line")
+ this.$dimensions.val("")
alert("Please click two corners of a wall and then specify how long it is in feet or meters.")
}
else if (val == 0) {
@@ -144,7 +148,8 @@ var BlueprintScaler = ModalFormView.extend({
success: function(){
this.animating = false
- this.parent.useFloorplan(media)
+ this.parent.useFloorplan(this.media)
+ this.hide()
},
})
diff --git a/public/assets/javascripts/ui/lib/FormView.js b/public/assets/javascripts/ui/lib/FormView.js
index f5845e7..33effc8 100644
--- a/public/assets/javascripts/ui/lib/FormView.js
+++ b/public/assets/javascripts/ui/lib/FormView.js
@@ -63,7 +63,7 @@ var FormView = View.extend({
save: function(e, successCallback, errorCallback){
e && e.preventDefault()
- this.$errors.hide().css("opacity", 0.0);
+ this.$errors && this.$errors.hide().css("opacity", 0.0);
if (this.validate) {
var errors = this.validate()
diff --git a/server/index.js b/server/index.js
index db9b051..0028888 100644
--- a/server/index.js
+++ b/server/index.js
@@ -156,6 +156,7 @@ site.route = function () {
app.get('/api/media/user', middleware.ensureAuthenticated, api.media.user)
app.post('/api/media/new', middleware.ensureAuthenticated, api.media.create)
app.post('/api/media/upload', middleware.ensureAuthenticated, api.media.upload)
+ app.post('/api/media/scale', middleware.ensureAuthenticated, api.media.scale)
app.delete('/api/media/destroy', middleware.ensureAuthenticated, api.media.destroy)
app.get('/api/subscription', middleware.ensureAuthenticated, api.subscription.middleware.ensurePlans, api.subscription.middleware.ensureSubscription, api.subscription.show)
diff --git a/server/lib/api/media.js b/server/lib/api/media.js
index 85cbdd6..68e012c 100644
--- a/server/lib/api/media.js
+++ b/server/lib/api/media.js
@@ -65,6 +65,22 @@ var media = {
}
},
+ scale: function(req, res){
+ var _id = req.body._id
+ var data = util.cleanQuery(req.body)
+ if (! _id) { return res.json({ error: 404 }) }
+ Media.findOne({ _id: _id }, function(err, doc){
+ if (! doc) { return res.json({ error: 404 }) }
+ if (String(doc.user_id) !== String(req.user._id)) { return res.json({ error: 404 }) }
+ doc.scale = data.scale
+ doc.units = data.units
+ doc.save(function(err, rec){
+ if (err || ! rec) { return res.json({ error: err }) }
+ res.json(rec)
+ })
+ })
+ },
+
destroy: function(req, res){
var _id = util.sanitize(req.body._id)
if (! _id || ! _id.length) {
diff --git a/views/controls/blueprint/editor.ejs b/views/controls/blueprint/editor.ejs
index 3e0c097..77c958a 100644
--- a/views/controls/blueprint/editor.ejs
+++ b/views/controls/blueprint/editor.ejs
@@ -98,15 +98,17 @@ body {
You can also <span class="uploadNewBlueprint">upload another blueprint</span>.
<br><br>
- <div class="setting number">
- <label for="blueprint-dimensions">length</label>
- <input type="text" class="units" name="blueprint-dimensions" id="blueprint-dimensions">
- <select id="blueprint-units" name="blueprint-units">
- <option value="ft">feet</option>
- <option value="m">meters</option>
- </select>
- </div>
- <button id="saveBlueprint">Save</button>
+ <form>
+ <div class="setting number">
+ <label for="blueprint-dimensions">length</label>
+ <input type="text" class="units" name="blueprint-dimensions" id="blueprint-dimensions">
+ <select id="blueprint-units" name="blueprint-units">
+ <option value="ft">feet</option>
+ <option value="m">meters</option>
+ </select>
+ </div>
+ <button id="saveBlueprint">Save</button>
+ </form>
</div>
<div id="blueprintMap">