Files
DiceCloud/rpg-docs/client/views/character/textField/textField.js
Thaum ca7a625534 Consolidated all sub-documents into character document to improve granularity significantly
Because just the top-level field changing invalidates everything in the sub-document, a single attribute change would trigger a re-calculation on all attributes and their dependents. This change should significantly improve performance.
2014-11-20 09:02:10 +00:00

47 lines
1.2 KiB
JavaScript

Template.textField.created = function(){
Template.instance().editing = new ReactiveVar(false);
document.execCommand('defaultParagraphSeparator', false, 'div');
}
Template.textField.helpers({
editing: function(){
return Template.instance().editing.get();
},
input: function(){
var text = this.character.getField(this.field);
if (_.isString(text)) return Spacebars.SafeString(text);
return text;
},
output: function(){
var html = evaluateString(this.character._id, this.character.getField(this.field));
if (_.isString(html)) return Spacebars.SafeString(html);
return html;
},
outputClass: function(){
if(Template.instance().editing.get()){
return "editing";
} else{
return "notEditing"
}
}
})
Template.textField.events({
"blur #textInput": function(){
Template.instance().editing.set(false);
var text = $("#textInput").html();
if(!_.isString(text)) text = "";
//TODO sanitise the html
var setter = {};
setter[this.field] = text;
Characters.update(this.character._id, {$set: setter}, function(error, result) {
if(error) console.log(error);
});
},
"click #textOutput": function(){
Template.instance().editing.set(true);
Tracker.afterFlush(function(){
$("#textInput").focus();
});
}
})