main.js : clean up and commit before making big-ish changes for cursor fixing

pull/1/head
ansuz 9 years ago
parent b4eeceb206
commit fbb9163e42

@ -1,6 +1,3 @@
/*
globals define console
*/
define([ define([
'/api/config?cb=' + Math.random().toString(16).substring(2), '/api/config?cb=' + Math.random().toString(16).substring(2),
'/common/messages.js', '/common/messages.js',
@ -10,7 +7,6 @@ define([
'/common/toolbar.js', '/common/toolbar.js',
'/common/cursor.js', '/common/cursor.js',
'/bower_components/diff-dom/diffDOM.js', '/bower_components/diff-dom/diffDOM.js',
'/bower_components/jquery/dist/jquery.min.js', '/bower_components/jquery/dist/jquery.min.js',
'/customize/pad.js' '/customize/pad.js'
], function (Config, Messages, Crypto, realtimeInput, Convert, Toolbar, Cursor) { ], function (Config, Messages, Crypto, realtimeInput, Convert, Toolbar, Cursor) {
@ -24,12 +20,7 @@ define([
var userName = Crypto.rand64(8), var userName = Crypto.rand64(8),
toolbar; toolbar;
var Vdom = Convert.core.vdom, var andThen = function (Ckeditor) {
Hyperjson = Convert.core.hyperjson;
window.Hyperjson = Hyperjson;
var andThen = function () {
$(window).on('hashchange', function() { $(window).on('hashchange', function() {
window.location.reload(); window.location.reload();
}); });
@ -50,6 +41,8 @@ define([
removePlugins: 'magicline,resize' removePlugins: 'magicline,resize'
}); });
var CKE = Ckeditor;
editor.on('instanceReady', function (Ckeditor) { editor.on('instanceReady', function (Ckeditor) {
editor.execCommand('maximize'); editor.execCommand('maximize');
var documentBody = ifrw.$('iframe')[0].contentDocument.body; var documentBody = ifrw.$('iframe')[0].contentDocument.body;
@ -58,7 +51,7 @@ define([
var inner = documentBody; var inner = documentBody;
window.inner = inner; window.inner = inner;
var cursor = window.cursor = Cursor(Ckeditor, editor, inner); var cursor = window.cursor = Cursor(CKE, editor, inner);
var $textarea = $('#feedback'); var $textarea = $('#feedback');
@ -67,7 +60,6 @@ define([
var applyHjson = function (shjson) { var applyHjson = function (shjson) {
console.log("Applying HJSON"); console.log("Applying HJSON");
var userDocStateDom = Convert.hjson.to.dom(JSON.parse(shjson)); var userDocStateDom = Convert.hjson.to.dom(JSON.parse(shjson));
//var userDocStateDom = Vdom.create(Convert.hjson.to.vdom(JSON.parse(shjson)));
userDocStateDom.setAttribute("contentEditable", "true"); // lol wtf userDocStateDom.setAttribute("contentEditable", "true"); // lol wtf
var patch = (new DiffDom()).diff(inner, userDocStateDom); var patch = (new DiffDom()).diff(inner, userDocStateDom);
@ -80,7 +72,7 @@ define([
applyHjson(shjson); applyHjson(shjson);
cursor.find(); //cursor.find();
// put the cursor back where you left it // put the cursor back where you left it
// FIXME put this back in // FIXME put this back in
@ -91,6 +83,24 @@ define([
// TODO initialize the toolbar // TODO initialize the toolbar
}; };
var rejectIfNotValidJson = function (text, toTransform, transformBy) {
var resultOp = ChainPad.Operation.transform0(text, toTransform, transformBy);
var text2 = ChainPad.Operation.apply(transformBy, text);
var text3 = ChainPad.Operation.apply(resultOp, text2);
try {
JSON.parse(text3);
return resultOp;
} catch (e) {
console.log(e);
}
// returning **null** breaks out of the loop
// which transforms conflicting operations
// in theory this should prevent us from producing bad JSON
return null;
};
var rti = realtimeInput.start($textarea[0], // synced element var rti = realtimeInput.start($textarea[0], // synced element
Config.websocketURL, // websocketURL, ofc Config.websocketURL, // websocketURL, ofc
userName, // userName userName, // userName
@ -99,49 +109,26 @@ define([
{ // configuration :D { // configuration :D
doc: inner, doc: inner,
// first thing called
onInit: onInit,
onReady: function (info) { onReady: function (info) {
applyHjson($textarea.val()); applyHjson($textarea.val());
$textarea.trigger('keyup'); $textarea.trigger('keyup');
}, },
// when remote changes occur
onRemote: onRemote, onRemote: onRemote,
onInit: onInit,
transformFunction : function (text, toTransform, transformBy) { transformFunction : rejectIfNotValidJson,
/* FIXME
operational transform on json shouldn't be in all editors
just those transmitting/expecting JSON
console.log({
text: text,
toTransform: toTransform,
transformBy: transformBy
});
*/
var resultOp = ChainPad.Operation.transform0(text, toTransform, transformBy); // pass in websocket/netflux object
var text2 = ChainPad.Operation.apply(transformBy, text);
var text3 = ChainPad.Operation.apply(resultOp, text2);
try { JSON.parse(text3); return resultOp; } catch (e) { console.log(e); }
// returning **null** breaks out of the loop
// which transforms conflicting operations
// in theory this should prevent us from producing bad JSON
return null;
}
/*
FIXME NOT A REAL FUNCTION WONT WORK
transformFunction: function (state0str, toTransform, transformBy) {
var state1A = JSON.parse(Operation.apply(state0str, transformBy));
var state1B = JSON.parse(Operation.apply(state0str, toTransform));
var state0 = JSON.parse(state0str);
}
*/
}); });
$textarea.val(JSON.stringify(Convert.dom.to.hjson(inner))); $textarea.val(JSON.stringify(Convert.dom.to.hjson(inner)));
editor.on('change', function () { editor.on('change', function () {
var hjson = Hyperjson.fromDOM(inner); var hjson = Convert.core.hyperjson.fromDOM(inner);
$textarea.val(JSON.stringify(hjson)); $textarea.val(JSON.stringify(hjson));
rti.bumpSharejs(); rti.bumpSharejs();

Loading…
Cancel
Save