summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/ui/editor/TextEditor.js
diff options
context:
space:
mode:
authorryderr <r@okfoc.us>2014-10-07 16:12:46 -0400
committerryderr <r@okfoc.us>2014-10-07 16:12:46 -0400
commit038a4ed165df6f3ad64ce7c9375934384a9b5d43 (patch)
tree813fbcebb018c088bf525ba44aa4419f6606abc5 /public/assets/javascripts/ui/editor/TextEditor.js
parent06e38245987304ef6bddb1f9c3e6cad16a215209 (diff)
parentf5ab61241bf9519325a36b86ee74ab2df13a4331 (diff)
merge
Diffstat (limited to 'public/assets/javascripts/ui/editor/TextEditor.js')
-rw-r--r--public/assets/javascripts/ui/editor/TextEditor.js107
1 files changed, 104 insertions, 3 deletions
diff --git a/public/assets/javascripts/ui/editor/TextEditor.js b/public/assets/javascripts/ui/editor/TextEditor.js
index 0319a31..1e35c12 100644
--- a/public/assets/javascripts/ui/editor/TextEditor.js
+++ b/public/assets/javascripts/ui/editor/TextEditor.js
@@ -1,6 +1,8 @@
var TextEditor = FormView.extend({
el: "#textEditor",
+ tainted: false,
+ scenery: null,
events: {
"keydown": 'taint',
@@ -8,21 +10,103 @@ var TextEditor = FormView.extend({
"mousedown": "stopPropagation",
"change [name=font-family]": 'changeFontFamily',
"change [name=font-size]": 'changeFontSize',
+ "change [name=text-align]": 'changeTextAlign',
"input [name=text-body]": 'changeText',
- "click [data-role=destroy-media]": "destroy",
+ "click [data-role=destroy-text]": "destroy",
},
initialize: function(opt){
this.parent = opt.parent
this.__super__.initialize.call(this)
+ this.$settings = this.$(".setting")
+ this.$noTextMessage = this.$(".no-text")
this.$fontFamily = this.$("[name=font-family]")
this.$fontSize = this.$("[name=font-size]")
this.$textBody = this.$("[name=text-body]")
+ this.$textAlign = this.$("[name=text-align]")
},
toggle: function(state){
- this.$el.toggleClass("active", state);
+ $("#keyhint").fadeOut(200)
+
+ this.$el.toggleClass("active", state)
+ if (state) {
+ Scenery.nextMedia = {
+ type: 'text',
+ width: 600,
+ height: 450,
+ scale: 0.5,
+ font: { family: 'Lato', size: 12, align: 'left' },
+ }
+
+ this.createMode(true)
+ }
+ },
+
+ hide: function(scenery){
+ if (this.scenery) {
+ this.unbind()
+ }
+ this.toggle(false)
+ },
+
+ taint: function(e){
+ e.stopPropagation()
+ this.tainted = true
+ },
+
+ bind: function(scenery){
+ this.tainted = false
+ this.scenery = scenery
+ this.scenery.mx.bound = true
+ this.scenery.mx.el.classList.add("picked")
+ },
+
+ unbind: function(){
+ if (this.scenery) {
+ if (this.tainted) {
+ Minotaur.watch( app.router.editorView.settings )
+ }
+
+ if (this.scenery.mx) {
+ this.scenery.mx.bound = false
+ this.scenery.mx.el.classList.remove("picked")
+ }
+ }
+ this.tainted = false
+ this.scenery = null
+ },
+
+ createMode: function(state){
+ this.$settings.toggle(! state)
+ this.$noTextMessage.toggle(!! state)
+ $("body").toggleClass("addText", !! state)
+ },
+
+ pick: function(scenery){
+ if (this.scenery) {
+ this.unbind()
+ }
+
+ Scenery.resize.show(scenery)
+ Scenery.hovering = true
+
+ this.bind(scenery)
+ this.$el.toggleClass("active", true)
+ this.$textBody.val( this.scenery.media.description )
+
+ this.$fontFamily.val( this.scenery.media.font.family )
+ this.$fontSize.val( this.scenery.media.font.size )
+ this.$textAlign.val( this.scenery.media.font.align )
+
+ this.createMode(false)
+
+ if (! this.scenery.media.description) {
+ setTimeout(function(){
+ this.$textBody.focus()
+ }.bind(this), 100)
+ }
},
taint: function(e){
@@ -30,12 +114,29 @@ var TextEditor = FormView.extend({
},
changeFontFamily: function(){
+ this.scenery.setFont({ family: this.$fontFamily.val() })
+ },
+
+ changeTextAlign: function(){
+ this.scenery.setFont({ align: this.$textAlign.val() })
},
changeFontSize: function(){
+ var size = parseInt( this.$fontSize.val() )
+ size && this.scenery.setFont({ size: size })
},
- changeText: function(){
+ changeText: function(e){
+ e.stopPropagation()
+ var text = this.$textBody.val()
+ this.scenery.setText(text)
},
+
+ destroy: function(){
+ var scenery = this.scenery
+ this.hide()
+ Scenery.remove(scenery.id)
+ Scenery.resize.hide()
+ },
})