summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2015-08-10 20:42:19 -0400
committerJules Laplace <jules@okfoc.us>2015-08-10 20:42:19 -0400
commite61e94f5d2f570f0cba3a3f7d91a18d8db524d79 (patch)
tree75d78010595711267bf9338c6746da1650ceb3bd
parent71c3a4a02c7c46533aec836ef30a0d0ffa96399b (diff)
blueprint upload stuff
-rw-r--r--public/assets/javascripts/rectangles/engine/map/_map.js2
-rw-r--r--public/assets/javascripts/ui/builder/BlueprintUpload.js120
-rwxr-xr-xpublic/assets/stylesheets/app.css3
-rw-r--r--public/assets/test/ortho4.html43
4 files changed, 162 insertions, 6 deletions
diff --git a/public/assets/javascripts/rectangles/engine/map/_map.js b/public/assets/javascripts/rectangles/engine/map/_map.js
index bf646bb..e3d7621 100644
--- a/public/assets/javascripts/rectangles/engine/map/_map.js
+++ b/public/assets/javascripts/rectangles/engine/map/_map.js
@@ -44,7 +44,7 @@ var Map = function(opt){
var canvas = base.canvas = document.createElement("canvas")
canvas.width = base.dimensions.a
canvas.height = base.dimensions.b
-
+
base.el.appendChild(canvas)
switch (opt.type) {
diff --git a/public/assets/javascripts/ui/builder/BlueprintUpload.js b/public/assets/javascripts/ui/builder/BlueprintUpload.js
new file mode 100644
index 0000000..dbc6f12
--- /dev/null
+++ b/public/assets/javascripts/ui/builder/BlueprintUpload.js
@@ -0,0 +1,120 @@
+
+var BlueprintUpload = UploadView.extend({
+ el: ".blueprintUpload",
+
+ mediaTag: "blueprint",
+ createAction: "/api/media/new",
+ uploadAction: "/api/media/upload",
+ listAction: "/api/media/user",
+ destroyAction: "/api/media/destroy",
+
+ events: {
+ "mousedown": 'stopPropagation',
+ "change .url": "enterUrl",
+ "keydown .url": "enterSetUrl",
+
+ "click .blueprint": "choose",
+ "change [name=blueprint-dimensions]": "changeDimensions",
+ "change [name=blueprint-units]": "changeUnits",
+ "click #saveBlueprint": "save",
+ },
+
+ initialize: function(opt){
+ this.parent = opt.parent
+ this.__super__.initialize.call(this)
+
+ this.$url = this.$(".url")
+
+ this.$blueprintMap = this.$("#blueprintMap")
+ this.$blueprintDimensionsRapper = this.$("#blueprintDimensions")
+ this.$dimensions = this.$("[name=blueprint-dimensions]")
+ this.$units = this.$("[name=blueprint-units]")
+ this.$save = this.$("#saveBlueprint")
+
+ this.map = new Map ({ type: ortho })
+
+ this.load()
+ },
+
+ loaded: false,
+ load: function(){
+ $.get(this.listAction, { tag: this.mediaTag }, this.populate.bind(this))
+ },
+
+ populate: function(data){
+ this.loaded = true
+ if (data && data.length) {
+ data.forEach(this.append.bind(this))
+ this.$(".txt").hide()
+ }
+ else {
+ this.$(".txt").show()
+ }
+ },
+
+ append: function(media){
+ var $el = $("<div>")
+ $el.data("id", media._id)
+ $el.addClass("blueprint")
+ this.$blueprints.append($el)
+ },
+
+ pick: function(e){
+ var $el = $(e.currentTarget)
+ // load map with it
+ },
+
+ destroy: function(_id, cb){
+ $.ajax({
+ type: "delete",
+ url: this.destroyAction,
+ data: { _id: _id, _csrf: $("[name=_csrf]").val() }
+ }).complete(cb || function(){})
+ },
+
+ show: function(){
+ this.toggle(true)
+ },
+ hide: function(){
+ this.toggle(false)
+ },
+ toggle: function (state) {
+ this.$el.toggleClass("active", state)
+ },
+
+ addUrl: function (url){
+ Parser.loadImage(url, function(media){
+ if (! media) return
+ media._csrf = $("[name=_csrf]").val()
+ media.tag = this.mediaTag
+
+ var request = $.ajax({
+ type: "post",
+ url: this.createAction,
+ data: media,
+ })
+ request.done(this.add.bind(this))
+
+ }.bind(this))
+ },
+ enterUrl: function(){
+ var url = this.$url.sanitize()
+ this.addUrl(url)
+ this.$url.val("")
+ },
+ enterSetUrl: function (e) {
+ e.stopPropagation()
+ if (e.keyCode == 13) {
+ setTimeout(this.enterUrl.bind(this), 100)
+ }
+ },
+
+ add: function(media){
+ this.append(media)
+ },
+ changeDimensions: function(){
+ },
+ changeUnits: function(){
+ },
+
+})
diff --git a/public/assets/stylesheets/app.css b/public/assets/stylesheets/app.css
index 56c65fe..bb32500 100755
--- a/public/assets/stylesheets/app.css
+++ b/public/assets/stylesheets/app.css
@@ -1597,7 +1597,8 @@ form .paidPlan label { float: none; font-size: 16px; margin: 0 10px; }
.mediaDrawer.signin, .mediaDrawer.signup,
.mediaDrawer.alert, .mediaDrawer.confirm,
.mediaDrawer.passwordForgot, .mediaDrawer.passwordReset, .mediaDrawer.usernameTaken,
-.mediaDrawer.layouts, .mediaDrawer.projects, .mediaDrawer.newProject {
+.mediaDrawer.layouts, .mediaDrawer.projects, .mediaDrawer.newProject,
+.mediaDrawer.blueprintUpload {
display:table;
}
.confirm button {
diff --git a/public/assets/test/ortho4.html b/public/assets/test/ortho4.html
index b434efb..12b6ab2 100644
--- a/public/assets/test/ortho4.html
+++ b/public/assets/test/ortho4.html
@@ -1,15 +1,19 @@
+<link href='/assets/stylesheets/app.css' rel='stylesheet' type='text/css'>
<link href='/assets/stylesheets/ionicons.css' rel='stylesheet' type='text/css'>
<style type="text/css">
html,body{width:100%;height:100%;margin:0;padding:0;}
body {
- font-family: Menlo, monospace;
overflow: hidden;
}
-#perspective {
+#perspective,
+#perspective .mx-scene {
position: absolute;
left:0%;
- top:0px
+ top:0px;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
}
+
#orthographic {
position: absolute;
left:50%;
@@ -29,6 +33,10 @@ body {
#url { width: 300px }
.hud span { color: #888; cursor: pointer; }
.hud span.active { color: #000; }
+
+#blueprintForm {
+ width: 240px;
+}
</style>
<div id="perspective"></div>
@@ -47,11 +55,38 @@ body {
<span class="ion-scissors" data-role="eraser-mode"></span>
</div>
-<div class="mediaDrawer fixed animate blueprintUpload">
+<div class="mediaDrawer fixed animate blueprintUpload active">
<span class="close">X</span>
<div class="box">
<h2>Upload A Room Image</h2>
+
+ <div id="blueprintForm">
+ <div class="wallpaperUpload toolButton">
+ <form>
+ <span class="ion-ios-upload-outline upload-icon"></span>
+ <label>Upload</label>
+ <input type="file" accept="image/*" multiple>
+ </form>
+ </div>
+ <input type="text" class="url" placeholder="Enter an image URL or...">
+ </div>
+
+ Please tell us the scale of your map.
+ Click both corners of a wall, and then enter how long the wall is.
+
+ <div id="blueprintMap">
+ </div>
+
+ <div id="blueprintDimensions">
+ <input type="text" name="blueprint-dimensions">
+ <select id="blueprint-units" name="blueprint-units">
+ <option value="ft">foot</option>
+ <option value="m">meter</option>
+ </select>
+
+ <button id="saveBlueprint">Save</button>
+ </div>
</div>
</div>