summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--public/assets/javascripts/ui/editor/EditorSettings.js27
-rwxr-xr-xpublic/assets/stylesheets/app.css29
-rw-r--r--server/lib/api/projects.js4
-rw-r--r--server/lib/schemas/Project.js1
-rw-r--r--views/controls/editor/settings.ejs11
5 files changed, 56 insertions, 16 deletions
diff --git a/public/assets/javascripts/ui/editor/EditorSettings.js b/public/assets/javascripts/ui/editor/EditorSettings.js
index 89040e1..0c68de5 100644
--- a/public/assets/javascripts/ui/editor/EditorSettings.js
+++ b/public/assets/javascripts/ui/editor/EditorSettings.js
@@ -15,6 +15,10 @@ var EditorSettings = FormView.extend({
"click [data-role='clone-project']": 'clone',
"click [data-role='clear-project']": 'clear',
"click [data-role='destroy-project']": 'destroy',
+ "click #startText": "setStartPosition",
+ "click #moveText": "confirmStartPosition",
+ "click #confirmText": "setStartPosition",
+ "click #goText": "goToStartPosition",
},
initialize: function(opt){
@@ -26,6 +30,7 @@ var EditorSettings = FormView.extend({
this.$name = this.$("[name=name]")
this.$description = this.$("[name=description]")
this.$privacy = this.$("[name=privacy]")
+ this.$startPoint = this.$("#startpoint")
},
load: function(data){
@@ -33,7 +38,11 @@ var EditorSettings = FormView.extend({
this.parent.data = data
data.rooms && Rooms.deserialize(data.rooms, data.walls)
- data.startPosition && scene.camera.move(data.startPosition)
+ if (data.startPosition) {
+ scene.camera.move(data.startPosition)
+ this.startPosition = data.startPosition
+ this.$startPoint.addClass("confirmed")
+ }
if (data.colors && data.colors.wall) {
this.parent.lightControl.load(data.colors)
@@ -141,6 +150,19 @@ var EditorSettings = FormView.extend({
ErrorModal.alert($errors)
},
+ startPosition: null,
+ setStartPosition: function(){
+ this.$startPoint.addClass("active").removeClass("confirmed")
+ },
+ confirmStartPosition: function(){
+ this.$startPoint.removeClass("active").addClass("confirmed")
+ this.startPosition = app.position(scene.camera)
+ },
+ goToStartPosition: function(){
+ if (! this.startPosition) return
+ scene.camera.move(this.startPosition)
+ },
+
serialize: function(){
var fd = new FormData()
fd.append( "_csrf", this.$csrf.val() )
@@ -152,7 +174,8 @@ var EditorSettings = FormView.extend({
fd.append( "walls", JSON.stringify( Walls.serialize() ) )
fd.append( "colors", JSON.stringify( Walls.colors ) )
fd.append( "media", JSON.stringify( Scenery.serialize() ) )
- fd.append( "startPosition", JSON.stringify( app.position(scene.camera) ) )
+ fd.append( "startPosition", JSON.stringify( this.startPosition || false ) )
+ fd.append( "lastPosition", JSON.stringify( app.position(scene.camera) ) )
if (this.thumbnailIsStale()) {
var thumbnail = map.draw.render()
diff --git a/public/assets/stylesheets/app.css b/public/assets/stylesheets/app.css
index 849c994..6d96f97 100755
--- a/public/assets/stylesheets/app.css
+++ b/public/assets/stylesheets/app.css
@@ -1722,7 +1722,7 @@ input[type="range"]::-webkit-slider-thumb {
.modalLink {
text-decoration: none;
}
-.modalLink:hover {
+.modalLink:hover span {
text-decoration: underline;
}
@@ -1736,30 +1736,41 @@ input[type="range"]::-webkit-slider-thumb {
opacity:0.6;
}
}
-#startpoint.active #moveText{
+
+#moveText,
+#confirmText {
+ display: none;
+}
+#startpoint.active #moveText {
+ display:inline-block;
-webkit-animation:fade 0.5s infinite;
animation:fade 0.5s infinite;
}
-#moveText{
- display:none;
+#startpoint #goText,
+#startpoint.active #startText,
+#startpoint.active #goText,
+#startpoint.confirmed #startText {
+ display: none;
}
-#moveText.show {
- display:inline-block;
+#startpoint.confirmed #confirmText {
+ display: inline-block;
}
-#startText.hide {
- display:none;
+#startpoint.confirmed #goText {
+ display: inline-block;
}
-#startpoint.active:after {
+#moveText .done {
content: "done";
background: black;
color: white;
padding: 2px;
font-weight: 900;
margin-left: 5px;
+ text-decoration: none !important;
}
#startpoint.active:hover {
text-decoration:none;
}
+
.settings input[type="text"] {
border: 1px solid #000;
font-size: 15px;
diff --git a/server/lib/api/projects.js b/server/lib/api/projects.js
index 47e0458..f699622 100644
--- a/server/lib/api/projects.js
+++ b/server/lib/api/projects.js
@@ -41,6 +41,7 @@ var projects = {
data.media = JSON.parse(data.media)
data.colors = JSON.parse(data.colors)
data.startPosition = JSON.parse(data.startPosition)
+ data.lastPosition = JSON.parse(data.lastPosition)
data.created_at = new Date ()
upload.put("projects", req.files.thumbnail, {
@@ -102,7 +103,8 @@ var projects = {
doc.walls = JSON.parse(data.walls)
doc.colors = JSON.parse(data.colors)
doc.media = JSON.parse(data.media)
- doc.startPosition = JSON.parse(data.startPosition)
+ doc.startPosition = JSON.parse(data.startPosition)
+ doc.lastPosition = JSON.parse(data.lastPosition)
doc.save(function(err, doc){
if (err || ! doc) { return res.json({ error: err }) }
diff --git a/server/lib/schemas/Project.js b/server/lib/schemas/Project.js
index dd50da6..d0c4bbc 100644
--- a/server/lib/schemas/Project.js
+++ b/server/lib/schemas/Project.js
@@ -32,6 +32,7 @@ var ProjectSchema = new mongoose.Schema({
media: [mongoose.Schema.Types.Mixed],
colors: mongoose.Schema.Types.Mixed,
startPosition: mongoose.Schema.Types.Mixed,
+ lastPosition: mongoose.Schema.Types.Mixed,
user_id: { type: mongoose.Schema.ObjectId, index: true },
created_at: { type: Date },
updated_at: { type: Date },
diff --git a/views/controls/editor/settings.ejs b/views/controls/editor/settings.ejs
index 5b3b553..7c40a75 100644
--- a/views/controls/editor/settings.ejs
+++ b/views/controls/editor/settings.ejs
@@ -3,11 +3,14 @@
<input type="hidden" name="_csrf" value="[[- token ]]">
<input type="hidden" name="_id" value="new">
- <div class="setting">
- <a href="#" class="modalLink" id="startpoint">
+ <div class="setting" id="startpoint">
+ <a href="#" class="modalLink">
<span class="ion-ios7-navigate-outline"></span>
- <span id="startText">Select Startpoint</span>
- <span id="moveText">Move to Desired Point</span></a>
+ <span id="startText">Set Startpoint</span>
+ <span id="moveText">Move to Desired Point <span class="done">done</span></span>
+ <span id="confirmText">Startpoint Confirmed</span>
+ </a>
+ <a href="#" class="modalLink" id="goText"><span>(go there)</span></span>
</div>
<div class="setting">
<a href="#" class="modalLink" data-role='show-collaborators'>