App-SocialCalc-Multiplayer
view release on metacpan or search on metacpan
socialcalc/Changes.txt view on Meta::CPAN
2008-12-11:
Added undo maximum of 100.
2008-12-26:
Fixed SocialCalc.setStyles to allow colons in style values. (kratib reported)
Finally fixed FF 2 Mac losing Ctrl-V.
Changed grid line and pane divider color to something darker to better work on some laptops.
Fixed some bugs with sort settings not being preserved when updating column chooser info or loading
2008-12-28:
Fixed some bugs with displaying zero values related to infinity and NaN.
2009-01-14:
Fixed bug with reloading sheet with font settings.
2009-01-15:
First implementation of movepaste/moveinsert done.
Added swapcolors button to socialcalcspreadsheetcontrol.js.
2009-02-02:
Changed to SocialCalc.Callbacks.expand_wiki which takes subtypes.
socialcalc/formatnumber2.js view on Meta::CPAN
var result="";
var thisformat;
var section, gotcomparison, compop, compval, cpos, oppos;
var sectioninfo;
var i, decimalscale, scaledvalue, strvalue, strparts, integervalue, fractionvalue;
var integerdigits2, integerpos, fractionpos, textcolor, textstyle, separatorchar, decimalchar;
var value; // working copy to change sign, etc.
rawvalue = rawvalue-0; // make sure a number
value = rawvalue;
if (!isFinite(value)) return "NaN";
var negativevalue = value < 0 ? 1 : 0; // determine sign, etc.
if (negativevalue) value = -value;
var zerovalue = value == 0 ? 1 : 0;
currency_char = currency_char || scc.FormatNumber_DefaultCurrency;
scfn.parse_format_string(scfn.format_definitions, format_string); // make sure format is parsed
thisformat = scfn.format_definitions[format_string]; // Get format structure
socialcalc/formatnumber2.js view on Meta::CPAN
}
}
decimalscale = 1; // cut down to required number of decimal digits
for (i=0; i<sectioninfo.fractiondigits; i++) {
decimalscale *= 10;
}
scaledvalue = Math.floor(value * decimalscale + 0.5);
scaledvalue = scaledvalue / decimalscale;
if (typeof scaledvalue != "number") return "NaN";
if (!isFinite(scaledvalue)) return "NaN";
strvalue = scaledvalue+""; // convert to string (Number.toFixed doesn't do all we need)
// strvalue = value.toFixed(sectioninfo.fractiondigits); // cut down to required number of decimal digits
// and convert to string
if (scaledvalue == 0 && (sectioninfo.fractiondigits || sectioninfo.integerdigits)) {
negativevalue = 0; // no "-0" unless using multiple sections or General
}
if (strvalue.indexOf("e")>=0) { // converted to scientific notation
return rawvalue+""; // Just return plain converted raw value
}
strparts=strvalue.match(/^\+{0,1}(\d*)(?:\.(\d*)){0,1}$/); // get integer and fraction parts
if (!strparts) return "NaN"; // if not a number
integervalue = strparts[1];
if (!integervalue || integervalue=="0") integervalue="";
fractionvalue = strparts[2];
if (!fractionvalue) fractionvalue = "";
if (sectioninfo.hasdate) { // there are date placeholders
if (rawvalue < 0) { // bad date
return "??-???-?? ??:??:??";
}
startval = (rawvalue-Math.floor(rawvalue)) * scfn.datevalues.seconds_in_a_day; // get date/time parts
socialcalc/formatnumber2.js view on Meta::CPAN
}
else if (op == scfn.commands.general) { // insert "General" conversion
// *** Cut down number of significant digits to avoid floating point artifacts:
if (value!=0) { // only if non-zero
var factor = Math.floor(Math.LOG10E * Math.log(value)); // get integer magnitude as a power of 10
factor = Math.pow(10, 13-factor); // turn into scaling factor
value = Math.floor(factor * value + 0.5)/factor; // scale positive value, round, undo scaling
if (!isFinite(value)) return "NaN";
}
if (negativevalue) {
result += "-";
}
strvalue = value+""; // convert original value to string
if (strvalue.indexOf("e")>=0) { // converted to scientific notation
result += strvalue;
continue;
}
strparts=strvalue.match(/^\+{0,1}(\d*)(?:\.(\d*)){0,1}$/); // get integer and fraction parts
socialcalc/formula1.js view on Meta::CPAN
if (value2.value != 0) {
PushOperand("n", value1.value / value2.value); // gives plain numeric result type
}
else {
PushOperand("e#DIV/0!", 0);
}
}
else if (ttext == '^') {
value1.value = Math.pow(value1.value, value2.value);
value1.type = "n"; // gives plain numeric result type
if (isNaN(value1.value)) {
value1.value = 0;
value1.type = "e#NUM!";
}
PushOperand(value1.type, value1.value);
}
}
}
// function or name
socialcalc/formula1.js view on Meta::CPAN
}
}
if (errortext && valuetype.charAt(0) != "e") {
value = errortext;
valuetype = "e";
}
// look for overflow
if (valuetype.charAt(0) == "n" && (isNaN(value) || !isFinite(value))) {
value = 0;
valuetype = "e#NUM!";
errortext = isNaN(value) ? scc.s_calcerrnumericnan: scc.s_calcerrnumericoverflow;
}
return ({value: value, type: valuetype, error: errortext});
}
/*
#
# resulttype = SocialCalc.Formula.LookupResultType(type1, type2, typelookup);
socialcalc/formula1.js view on Meta::CPAN
if (xval.value == 0 && yval.value == 0) {
result.type = "e#DIV/0!";
}
else {
result.value = Math.atan2(yval.value, xval.value);
}
break;
case "POWER":
result.value = Math.pow(xval.value, yval.value);
if (isNaN(result.value)) {
result.value = 0;
result.type = "e#NUM!";
}
break;
case "MOD": // en.wikipedia.org/wiki/Modulo_operation, etc.
if (yval.value == 0) {
result.type = "e#DIV/0!";
}
else {
socialcalc/socialcalc-3.js view on Meta::CPAN
tvalue = tvalue.replace(/\s+$/, "");
if (value.length==0) {
type = "";
}
else if (value.match(/^\s+$/)) { // just blanks
; // leave type "t"
}
else if (tvalue.match(/^[-+]?\d*(?:\.)?\d*(?:[eE][-+]?\d+)?$/)) { // general number, including E
value = tvalue - 0; // try converting to number
if (isNaN(value)) { // leave alone - catches things like plain "-"
value = rawvalue + "";
}
else {
type = "n";
}
}
else if (tvalue.match(/^[-+]?\d*(?:\.)?\d*\s*%$/)) { // percent form: 15.1%
value = (tvalue.slice(0, -1) - 0) / 100; // convert and scale
type = "n%";
}
socialcalc/third-party/hippie/jquery-1.3.2.min.js view on Meta::CPAN
* jQuery JavaScript Library v1.3.2
* http://jquery.com/
*
* Copyright (c) 2009 John Resig
* Dual licensed under the MIT and GPL licenses.
* http://docs.jquery.com/License
*
* Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
* Revision: 6246
*/
(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;thi...
/*
* Sizzle CSS Selector Engine - v0.9.3
* Copyright 2009, The Dojo Foundation
* Released under the MIT, BSD, and GPL Licenses.
* More information: http://sizzlejs.com/
*/
(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==...
socialcalc/third-party/hippie/pretty.js view on Meta::CPAN
* Licensed under the MIT license.
*/
// Takes an ISO time and returns a string representing how
// long ago the date represents.
function prettyDate(time){
var date = new Date(time); // (time || "").replace(/-/g,"/").replace(/[TZ]/g," ")),
diff = (((new Date()).getTime() - date.getTime()) / 1000),
day_diff = Math.floor(diff / 86400);
if ( isNaN(day_diff) || day_diff < 0 || day_diff >= 31 )
return;
return day_diff == 0 && (
diff < 60 && "just now" ||
diff < 120 && "1 minute ago" ||
diff < 3600 && Math.floor( diff / 60 ) + " minutes ago" ||
diff < 7200 && "1 hour ago" ||
diff < 86400 && Math.floor( diff / 3600 ) + " hours ago") ||
day_diff == 1 && "Yesterday" ||
day_diff < 7 && day_diff + " days ago" ||
( run in 0.886 second using v1.01-cache-2.11-cpan-4d50c553e7e )