App-SocialCalc-Multiplayer
view release on metacpan or search on metacpan
socialcalc/socialcalctableeditor.js view on Meta::CPAN
}
editor.inputBox.SetText(editor.inputBox.GetText()+str);
break;
default:
break;
}
}
SocialCalc.EditorDisplayCellContents = function(editor) {
if (editor.inputBox) editor.inputBox.DisplayCellContents();
}
SocialCalc.EditorSaveEdit = function(editor, text) {
var result, cell, valueinfo, fch, type, value, oldvalue, cmdline;
var sheetobj = editor.context.sheetobj;
var wval = editor.workingvalues;
type = "text t";
value = typeof text == "string" ? text : editor.inputBox.GetText(); // either explicit or from input box
oldvalue = SocialCalc.GetCellContents(sheetobj, wval.ecoord)+"";
if (value == oldvalue) { // no change
return;
}
fch = value.charAt(0);
if (fch=="=" && value.indexOf("\n")==-1) {
type = "formula";
value = value.substring(1);
}
else if (fch=="'") {
type = "text t";
value = value.substring(1);
}
else if (value.length==0) {
type = "empty";
}
else {
valueinfo = SocialCalc.DetermineValueType(value)
if (valueinfo.type=="n" && value==(valueinfo.value+"")) { // see if don't need "constant"
type = "value n";
}
else if (valueinfo.type.charAt(0)=="t") {
type = "text "+valueinfo.type;
}
else if (valueinfo.type=="") {
type = "text t";
}
else {
type = "constant "+valueinfo.type+" "+valueinfo.value;
}
}
if (type.charAt(0)=="t") { // text
value = SocialCalc.encodeForSave(value); // newlines, :, and \ are escaped
}
cmdline = "set "+wval.ecoord+" "+type+" "+value;
editor.EditorScheduleSheetCommands(cmdline, true, false);
return;
}
//
// SocialCalc.EditorApplySetCommandsToRange(editor, cmd)
//
// Takes ecell or range and does a "set" command with cmd.
//
SocialCalc.EditorApplySetCommandsToRange = function(editor, cmd) {
var cell, row, col, line, errortext;
var sheetobj = editor.context.sheetobj;
var ecell = editor.ecell;
var range = editor.range;
if (range.hasrange) {
coord = SocialCalc.crToCoord(range.left, range.top)+":"+SocialCalc.crToCoord(range.right, range.bottom);
line = "set "+coord+" "+cmd;
errortext = editor.EditorScheduleSheetCommands(line, true, false);
}
else {
line = "set "+ecell.coord+" "+cmd;
errortext = editor.EditorScheduleSheetCommands(line, true, false);
}
editor.DisplayCellContents();
}
SocialCalc.EditorProcessMouseWheel = function(event, delta, mousewheelinfo, wobj) {
if (wobj.functionobj.editor.busy) return; // ignore if busy
if (delta > 0) {
wobj.functionobj.editor.ScrollRelative(true, -1);
}
if (delta < 0) {
wobj.functionobj.editor.ScrollRelative(true, +1);
}
}
//
// GridMousePosition(editor, clientX, clientY)
//
// Returns an object with row and col numbers and coord (spans handled for coords),
// and rowheader/colheader true if in header (where coord will be undefined).
// If in colheader, will return coltoresize if on appropriate place in col header.
// Also, there is rowfooter (on right) and colfooter (on bottom).
// In row/col header/footer, returns "distance" as pixels over the edge.
//
( run in 0.367 second using v1.01-cache-2.11-cpan-7f9471e7e0a )