view release on metacpan or search on metacpan
socialcalc/Changes.txt view on Meta::CPAN
2008-04-07:
Added SpreadsheetControlCreateSpreadsheetSave and DecodeSpreadsheetSave,
along with multipart-mime save format.
Fixed SocialCalc.SizeSSDiv: this.requestedHeight/Width => spreadsheet.requested...
2008-04-09:
Moved the Audit, Comment, and Names tab definition code into socialcalcspreadsheetcontrol.js.
Added linkstyle to RenderSheet, carried through RenderCell, passed to expand_markup.
Added text formats to list (plain, HTML, wiki, hidden), fixed bug with default text format.
Parameterized toolbarbackground and tabbackground.
2008-04-10:
Fixed bug introduced with linkstyle in rendering with linkstyle!=null.
Changed names of determine_value_type and format_value_for_display to camel case:
DetermineValueType and FormatValueForDisplay.
Added Clipboard tab and view to facilitate interim moving of data from Excel and web.
2008-04-13:
Fixed requestedHeight/Width not working in SpreadsheetControl.
socialcalc/Changes.txt view on Meta::CPAN
2009-08-27:
Removed extra " in SocialCalcServersideUtilities.pm that was messing up spans, etc.
2009-09-03:
Put in SocialCalc.CanonicalizeSheet to do a pass before save to minimize sheet extents, remove unused items from
saved lists and alphabetize them. The saved data is upwards and downwards compatible.
Added SocialCalc.Constants.doCanonicalizeSheet to turn this off.
2009-09-09:
Added sampleWidth, sampleHeight, backgroundImage, backgroundImageDefault, and backgroundImageDisabled to color chooser attribs.
2009-09-23:
Added ensureWithin to socialcalcpopup.js.
Changed cursor position detection a bit in color chooser.
Made border color chooser moveable.
Fixed "-", ".", "e1" and other things being considered a number on input.
2009-10-21:
Added text subtype "tr" (text rich) to formula1.js TypeLookupTable and to socialcalc3.js format_text_for_display
socialcalc/SocialCalcServersideUtilities.pm view on Meta::CPAN
# valuetype: first char is main type, the following are sub-types.
# Main types are b=blank cell, n=numeric, t=text, e=error
# Examples of using sub-types would be "nt" for a numeric time value, "n$" for currency, "nl" for logical
#
# The following optional values, if present, are mainly used in rendering, overriding defaults:
#
# bt, br, bb, bl: number of border's definition
# layout: layout (vertical alignment, padding) definition number
# font: font definition number
# color: text color definition number
# bgcolor: background color definition number
# cellformat: cell format (horizontal alignment) definition number
# nontextvalueformat: custom format definition number for non-text values, e.g., numbers
# textvalueformat: custom format definition number for text values
# colspan, rowspan: number of cells to span for merged cells (only on main cell)
# cssc: custom css classname for cell, as text (no special chars)
# csss: custom css style definition
# mod: modification allowed flag "y" if present
# comment: cell comment string
#
# Sheet attributes:
socialcalc/SocialCalcServersideUtilities.pm view on Meta::CPAN
# lastrow - number
# defaultcolwidth - number or blank (use system default)
# defaultrowheight - not used
# defaulttextformat:format# - cell format number (alignment) for sheet default for text values
# defaultnontextformat:format# - cell format number for sheet default for non-text values (i.e., numbers)
# defaultlayout:layout# - default cell layout number in cell layout list
# defaultfont:font# - default font number in sheet font list
# defaultnontextvalueformat:valueformat# - default non-text (number) value format number in sheet valueformat list
# defaulttextvalueformat:valueformat# - default text value format number in sheet valueformat list
# defaultcolor:color# - default number for text color in sheet color list
# defaultbgcolor:color# - default number for background color in sheet color list
# circularreferencecell:coord - cell coord with a circular reference
# recalc:value - on/off (on is default). If not "off", appropriate changes to the sheet cause a recalc
# needsrecalc:value - yes/no (no is default). If "yes", formula values are not up to date
#
# The Column attributes:
# Column attributes are stored in $sheet{colattribs}.
# $sheet{colattribs}{width}{col-letter(s)}: width or blank for column
# $sheet{colattribs}{hide}{col-letter(s)}: yes/no (default is no)
#
# The Row attributes:
socialcalc/SocialCalcServersideUtilities.pm view on Meta::CPAN
hideRowsCols => 0, # pay attention to row/col hide settings (currently ignored)
cellIDprefix => "", # if non-null, each cell will render with an ID starting with this
defaultcolwidth => 80,
defaultlayout => "padding:2px 2px 1px 2px;vertical-align:top;",
globaldefaultfontstyle => "normal normal",
globaldefaultfontsize => "small",
globaldefaultfontfamily => "Verdana,Arial,Helvetica,sans-serif",
explicitStyles => {
skippedcell => "font-size:small;background-color:#CCC",
comment => "background-repeat:no-repeat;background-position:top right;background-image:url(images/sc-commentbg.gif);"
},
classnames => {
skippedcell => "",
comment => ""
},
# initialize calculated values to be filled in later:
cellskip => {}, # this-cell => coord of cell covering this cell (only for covered cells)
socialcalc/SocialCalcServersideUtilities.pm view on Meta::CPAN
}
}
$num = $cell->{color} || $sheetattribs->{defaultcolor};
if ($num) {
$stylestr .= "color:$sheet->{colors}->[$num];\n";
}
$num = $cell->{bgcolor} || $sheetattribs->{defaultbgcolor};
if ($num) {
$stylestr .= "background-color:$sheet->{colors}->[$num];\n";
}
$num = $cell->{cellformat};
if ($num) {
$stylestr .= "text-align:$sheet->{cellformats}->[$num];\n";
}
else {
my $t = substr($cell->{valuetype}, 0, 1);
if ($t eq "t") {
$num = $sheetattribs->{defaulttextformat};
socialcalc/SocialCalcServersideUtilities.pm view on Meta::CPAN
our %WKCStrings = (
"decimalchar" => ".",
"separatorchar" => ",",
"currencychar" => '$',
"daynames" => "Sunday Monday Tuesday Wednesday Thursday Friday Saturday",
"daynames3" => "Sun Mon Tue Wed Thu Fri Sat ",
"monthnames3" => "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec",
"monthnames" => "January February March April May June July August September October November December",
"sheetdefaultlayoutstyle" => "padding:2px 2px 1px 2px;\nvertical-align:top;\n",
"sheetdefaultfontfamily" => "Verdana,Arial,Helvetica,sans-serif",
"linkformatstring" => '<span style="font-size:smaller;text-decoration:none !important;background-color:#66B;color:#FFF;">Link</span>', # you could make this an img tag if desired:
#"linkformatstring" => '<img border="0" src="http://www.domain.com/link.gif">',
"defaultformatdt" => 'd-mmm-yyyy h:mm:ss',
"defaultformatd" => 'd-mmm-yyyy',
"defaultformatt" => '[h]:mm:ss',
"displaytrue" => 'TRUE', # how TRUE shows when rendered
"displayfalse" => 'FALSE',
);
# # # # # # # # #
#
socialcalc/index.css view on Meta::CPAN
div.wiki p {
margin: 0;
}
div.wiki .wafl {
white-space: nowrap;
background: #ccc;
border: 1px solid #333;
padding-left: 2px;
padding-right: 2px;
border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
}
socialcalc/index.mt view on Meta::CPAN
<script src="third-party/Socket.IO-node/example/json.js"></script>
<script src="socket.io/socket.io.js"></script>
<script src="player.js"></script>
<link rel="stylesheet" type="text/css" href="socialcalc.css">
<link rel="stylesheet" type="text/css" href="index.css">
<style>
body
{font-family:verdana,helvetica,sans-serif;font-size:small;}
.testclass {border:2px dotted red;}
.testclass2 {background-image:url(images/sc-logo.gif);}
.smaller {font-size:smaller;}
.hide {display:none;}
</style>
</head>
<body onresize="if (typeof doresize != 'undefined') doresize();" onload="
/*
if (typeof localStorage != 'undefined') {
var saved = localStorage.getItem(location.href);
if (saved) {
savestr.value = saved;
doreload();
}
}
*/
">
<form name="f0" action="" method="POST">
<div style="padding:6px;background-color:#80A9F3;">
<span style="font-weight:bold;color:white;">ssctrltest1.html</span>
<input type="button" name="savespreadsheet" value="Save" onclick="dosave();" class="smaller">
<input type="submit" name="newcolors" value="New Colors" onclick="document.f0.action='?4C808';" class="smaller">
<input class="hide" type="button" value="Recalc" onclick="spreadsheet.ExecuteCommand('recalc', '');" class="smaller">
<input class="hide" type="button" value="Redisplay" onclick="spreadsheet.editor.ScheduleRender();" class="smaller">
<input class="hide" type="button" value="Settings" onclick="alert(sv=spreadsheet.editor.SaveEditorSettings());" class="smaller">
<input type="button" value="Reload" onclick="doreload();" class="smaller">
<input class="hide" type="button" value="CellHTMLSave" onclick="alert(spreadsheet.CreateCellHTMLSave(null));" class="smaller">
<input class="hide" type="button" value="CellHTML A1" onclick="alert(spreadsheet.CreateCellHTML('A1'));" class="smaller">
<input class="hide" type="button" value="SheetHTML" onclick="alert(spreadsheet.CreateSheetHTML());" class="smaller">
socialcalc/index.mt view on Meta::CPAN
// SocialCalc.ConstantsSetClasses("");
var scc = SocialCalc.Constants;
var b1 = window.location.search.charAt(1) || "4";
var b2 = window.location.search.charAt(2) || "C";
var b3 = window.location.search.charAt(3) || "8";
var b4 = window.location.search.charAt(4) || "9";
var b5 = window.location.search.charAt(5) || "8";
scc.SCToolbarbackground = "background-color:#4040"+b1+"0;";
scc.SCTabbackground = "background-color:#CC"+b2+";";
scc.SCTabselectedCSS = "font-size:small;padding:6px 30px 6px 8px;color:#FFF;background-color:#4040"+b1+"0;cursor:default;border-right:1px solid #CC"+b2+";";
scc.SCTabplainCSS = "font-size:small;padding:6px 30px 6px 8px;color:#FFF;background-color:#8080"+b3+"0;cursor:default;border-right:1px solid #CC"+b2+";";
scc.SCToolbartext = "font-size:x-small;font-weight:bold;color:#FFF;padding-bottom:4px;";
scc.ISCButtonBorderNormal = "#4040"+b1+"0";
scc.ISCButtonBorderHover = "#99"+b4+"";
scc.ISCButtonBorderDown = "#FFF";
scc.ISCButtonDownBackground = "#88"+b5+"";
SocialCalc.Popup.LocalizeString = SocialCalc.LocalizeString; // needed for localization
var spreadsheet = new SocialCalc.SpreadsheetControl();
var savestr = document.getElementById("savestr");
socialcalc/simpleedit14.pl view on Meta::CPAN
}
}
</script>
<style>
body, td, input, texarea
{font-family:verdana,helvetica,sans-serif;font-size:small;}
</style>
</head>
<body>
<form action="" method="POST">
<div style="padding:6px;background-color:#80A9F3;">
<div style="font-weight:bold;color:white;">SIMPLE SYSTEM FOR EDITING PAGES WITH SPREADSHEETS AND MORE</div>
<div style="color:#FDD;font-weight:bold;">$statusmessage </div>
<table cellspacing="0" cellpadding="0" width="100%">
<tr>
<td>
Viewing page: <span style="font-style:italic;font-weight:bold;">$pagename</span>
<input type="submit" name="editpage" value="Edit This Page" style="font-size:smaller;">
</td>
<td align="right">
<input type="submit" name="editrawpage" value="Edit Raw Page" style="font-size:smaller;">
socialcalc/simpleedit14.pl view on Meta::CPAN
</div>
<div style="border:6px solid #80A9F3;padding:0px 10px 10px 10px;">
<div style="padding-top:5px;">
<table cellpadding="0" cellspacing="0"><tr><td width="100%"></td><td valign="top">
<input id="showb" type="checkbox" value="1" onclick="hide_buttons(!this.checked);">
</td><td style="font-size:smaller;padding-left:4px;">Show item<br>edit buttons</td>
</tr></table>
</div>
$pagestr
</div>
<div style="padding:6px;background-color:#80A9F3;">
<div style="font-weight:bold;font-size:smaller;">Pages:</div>
<div style="font-size:smaller;">
EOF
my @pagefiles = glob("$datadir*.page.txt"); # Get list of all pages
for (my $pnum=0; $pnum <= $#pagefiles; $pnum++) {
$pagefiles[$pnum] =~ m/^(?:.*\/){0,1}(.*).page.txt$/;
$response .= ", " if $pnum!=0;
$response .= qq!<a href="?pagename=$1">$1</a>!;
}
socialcalc/simpleedit14.pl view on Meta::CPAN
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Simple Page Editor With Spreadsheets $versionstr</title>
<style>
body, td, input, texarea
{font-family:verdana,helvetica,sans-serif;font-size:small;}
</style>
</head>
<body>
<form name="f0" action="" method="POST">
<div style="padding:6px;background-color:#80A9F3;">
<div style="font-weight:bold;color:white;">SIMPLE SYSTEM FOR EDITING PAGES WITH SPREADSHEETS AND MORE</div>
<div style="color:#FDD;font-weight:bold;">$statusmessage </div>
<div style="margin-bottom:6px;">Editing page: <span style="font-style:italic;font-weight:bold;">$pagename</span></div>
<script>
function addss(sstype) {
var now = new Date();
var name = ""+now.getFullYear()+(now.getMonth()+101).toString().substr(1)+(now.getDate()+100).toString().substr(1)+
(now.getHours()+100).toString().substr(1)+(now.getMinutes()+100).toString().substr(1)+(now.getSeconds()+100).toString().substr(1);
var sname =
prompt("New "+sstype+" name (alphanumeric only, unique on page):", name);
socialcalc/simpleedit14.pl view on Meta::CPAN
<script type="text/javascript" src="${jsdir}formatnumber2.js"></script>
<script type="text/javascript" src="${jsdir}formula1.js"></script>
<script type="text/javascript" src="${jsdir}socialcalcspreadsheetcontrol.js"></script>
<style>
body, td, input, texarea
{font-family:verdana,helvetica,sans-serif;font-size:small;}
</style>
</head>
<body>
<form name="f0" action="" method="POST">
<div style="padding:6px;background-color:#80A9F3;">
<div style="font-weight:bold;color:white;">SIMPLE SYSTEM FOR EDITING PAGES WITH SPREADSHEETS AND MORE</div>
<div style="color:#FDD;font-weight:bold;">$statusmessage </div>
<div style="margin-bottom:6px;">Editing page: <span style="font-style:italic;font-weight:bold;">$pagename</span></div>
<input type="submit" name="savespreadsheet" value="Save" onclick="dosave();">
<input type="submit" name="cancelspreadsheet" value="Cancel">
<textarea name="savestr" id="sheetdata" style="display:none;">$sheetstr</textarea>
<input type="hidden" name="newstr" id="newdata" value="">
<input type="hidden" name="pagename" value="$pagename">
<input type="hidden" name="sheetname" value="$sheetname">
</div>
socialcalc/simpleedit14.pl view on Meta::CPAN
<title>Simple Page Editor With Spreadsheets $versionstr</title>
<script type="text/javascript" src="${jsdir}socialcalc-3.js"></script>
<script type="text/javascript" src="${jsdir}drawlib3.js"></script>
<style>
body, td, input, texarea
{font-family:verdana,helvetica,sans-serif;font-size:small;}
</style>
</head>
<body>
<form name="f0" action="" method="POST">
<div style="padding:6px;background-color:#80A9F3;">
<div style="font-weight:bold;color:white;">SIMPLE SYSTEM FOR EDITING PAGES WITH SPREADSHEETS AND MORE</div>
<div style="color:#FDD;font-weight:bold;">$statusmessage </div>
<div style="margin-bottom:6px;">Editing page: <span style="font-style:italic;font-weight:bold;">$pagename</span></div>
<input type="submit" name="savespreadsheet" value="Save" onclick="dosave();">
<input type="submit" name="cancelspreadsheet" value="Cancel">
<textarea name="savestr" id="sheetdata" style="display:none;">$sheetstr</textarea>
<input type="hidden" name="newstr" id="newdata" value="">
<input type="hidden" name="pagename" value="$pagename">
<input type="hidden" name="sheetname" value="$sheetname">
</div>
socialcalc/simpleedit15.pl view on Meta::CPAN
}
}
</script>
<style>
body, td, input, texarea
{font-family:verdana,helvetica,sans-serif;font-size:small;}
</style>
</head>
<body>
<form action="" method="POST">
<div style="padding:6px;background-color:#80A9F3;">
<div style="font-weight:bold;color:white;">SIMPLE SYSTEM FOR EDITING PAGES WITH SPREADSHEETS AND MORE</div>
<div style="color:#FDD;font-weight:bold;">$statusmessage </div>
<table cellspacing="0" cellpadding="0" width="100%">
<tr>
<td>
Viewing page: <span style="font-style:italic;font-weight:bold;">$pagename</span>
<input type="submit" name="editpage" value="Edit This Page" style="font-size:smaller;">
</td>
<td align="right">
<input type="submit" name="editrawpage" value="Edit Raw Page" style="font-size:smaller;">
socialcalc/simpleedit15.pl view on Meta::CPAN
</div>
<div style="border:6px solid #80A9F3;padding:0px 10px 10px 10px;">
<div style="padding-top:5px;">
<table cellpadding="0" cellspacing="0"><tr><td width="100%"></td><td valign="top">
<input id="showb" type="checkbox" value="1" onclick="hide_buttons(!this.checked);">
</td><td style="font-size:smaller;padding-left:4px;">Show item<br>edit buttons</td>
</tr></table>
</div>
$pagestr
</div>
<div style="padding:6px;background-color:#80A9F3;">
<div style="font-weight:bold;font-size:smaller;">Pages:</div>
<div style="font-size:smaller;">
EOF
my @pagefiles = glob("$datadir*.page.txt"); # Get list of all pages
for (my $pnum=0; $pnum <= $#pagefiles; $pnum++) {
$pagefiles[$pnum] =~ m/^(?:.*\/){0,1}(.*).page.txt$/;
$response .= ", " if $pnum!=0;
$response .= qq!<a href="?pagename=$1">$1</a>!;
}
socialcalc/simpleedit15.pl view on Meta::CPAN
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Simple Page Editor With Spreadsheets $versionstr</title>
<style>
body, td, input, texarea
{font-family:verdana,helvetica,sans-serif;font-size:small;}
</style>
</head>
<body>
<form name="f0" action="" method="POST">
<div style="padding:6px;background-color:#80A9F3;">
<div style="font-weight:bold;color:white;">SIMPLE SYSTEM FOR EDITING PAGES WITH SPREADSHEETS AND MORE</div>
<div style="color:#FDD;font-weight:bold;">$statusmessage </div>
<div style="margin-bottom:6px;">Editing page: <span style="font-style:italic;font-weight:bold;">$pagename</span></div>
<script>
function addss(sstype) {
var now = new Date();
var name = ""+now.getFullYear()+(now.getMonth()+101).toString().substr(1)+(now.getDate()+100).toString().substr(1)+
(now.getHours()+100).toString().substr(1)+(now.getMinutes()+100).toString().substr(1)+(now.getSeconds()+100).toString().substr(1);
var sname =
prompt("New "+sstype+" name (alphanumeric only, unique on page):", name);
socialcalc/simpleedit15.pl view on Meta::CPAN
<script type="text/javascript" src="${jsdir}formula1.js"></script>
<script type="text/javascript" src="${jsdir}socialcalcpopup.js"></script>
<script type="text/javascript" src="${jsdir}socialcalcspreadsheetcontrol.js"></script>
<style>
body, td, input, texarea
{font-family:verdana,helvetica,sans-serif;font-size:small;}
</style>
</head>
<body>
<form name="f0" action="" method="POST">
<div style="padding:6px;background-color:#80A9F3;">
<div style="font-weight:bold;color:white;">SIMPLE SYSTEM FOR EDITING PAGES WITH SPREADSHEETS AND MORE</div>
<div style="color:#FDD;font-weight:bold;">$statusmessage </div>
<div style="margin-bottom:6px;">Editing page: <span style="font-style:italic;font-weight:bold;">$pagename</span></div>
<input type="submit" name="savespreadsheet" value="Save" onclick="dosave();">
<input type="submit" name="cancelspreadsheet" value="Cancel">
<textarea name="savestr" id="sheetdata" style="display:none;">$sheetstr</textarea>
<input type="hidden" name="newstr" id="newdata" value="">
<input type="hidden" name="pagename" value="$pagename">
<input type="hidden" name="sheetname" value="$sheetname">
</div>
socialcalc/simpleedit15.pl view on Meta::CPAN
<title>Simple Page Editor With Spreadsheets $versionstr</title>
<script type="text/javascript" src="${jsdir}socialcalc-3.js"></script>
<script type="text/javascript" src="${jsdir}drawlib3.js"></script>
<style>
body, td, input, texarea
{font-family:verdana,helvetica,sans-serif;font-size:small;}
</style>
</head>
<body>
<form name="f0" action="" method="POST">
<div style="padding:6px;background-color:#80A9F3;">
<div style="font-weight:bold;color:white;">SIMPLE SYSTEM FOR EDITING PAGES WITH SPREADSHEETS AND MORE</div>
<div style="color:#FDD;font-weight:bold;">$statusmessage </div>
<div style="margin-bottom:6px;">Editing page: <span style="font-style:italic;font-weight:bold;">$pagename</span></div>
<input type="submit" name="savespreadsheet" value="Save" onclick="dosave();">
<input type="submit" name="cancelspreadsheet" value="Cancel">
<textarea name="savestr" id="sheetdata" style="display:none;">$sheetstr</textarea>
<input type="hidden" name="newstr" id="newdata" value="">
<input type="hidden" name="pagename" value="$pagename">
<input type="hidden" name="sheetname" value="$sheetname">
</div>
socialcalc/socialcalc-3.js view on Meta::CPAN
// Examples of using sub-types would be "nt" for a numeric time value, "n$" for currency, "nl" for logical
// displayvalue: if present, rendered version of datavalue with formatting attributes applied
// parseinfo: if present, cached parsed version of formula
//
// The following optional values, if present, are mainly used in rendering, overriding defaults:
//
// bt, br, bb, bl: number of border's definition
// layout: layout (vertical alignment, padding) definition number
// font: font definition number
// color: text color definition number
// bgcolor: background color definition number
// cellformat: cell format (horizontal alignment) definition number
// nontextvalueformat: custom format definition number for non-text values, e.g., numbers
// textvalueformat: custom format definition number for text values
// colspan, rowspan: number of cells to span for merged cells (only on main cell)
// cssc: custom css classname for cell, as text (no special chars)
// csss: custom css style definition
// mod: modification allowed flag "y" if present
// comment: cell comment string
//
socialcalc/socialcalc-3.js view on Meta::CPAN
// vt:fulltype:value - value with value type/subtype
// vtf:fulltype:value:formulatext - formula resulting in value with value type/subtype, value and text encoded
// vtc:fulltype:value:valuetext - formatted text constant resulting in value with value type/subtype, value and text encoded
// vf:fvalue:formulatext - formula resulting in value, value and text encoded (obsolete: only pre format version 1.1)
// fvalue - first char is "N" for numeric value, "T" for text value, "H" for HTML value, rest is the value
// e:errortext - Error text. Non-blank means formula parsing/calculation results in error.
// b:topborder#:rightborder#:bottomborder#:leftborder# - border# in sheet border list or blank if none
// l:layout# - number in cell layout list
// f:font# - number in sheet fonts list
// c:color# - sheet color list index for text
// bg:color# - sheet color list index for background color
// cf:format# - sheet cell format number for explicit format (align:left, etc.)
// cvf:valueformat# - sheet cell value format number (obsolete: only pre format v1.2)
// tvf:valueformat# - sheet cell text value format number
// ntvf:valueformat# - sheet cell non-text value format number
// colspan:numcols - number of columns spanned in merged cell
// rowspan:numrows - number of rows spanned in merged cell
// cssc:classname - name of CSS class to be used for cell when published instead of one calculated here
// csss:styletext - explicit CSS style information, encoded to handle :, etc.
// mod:allow - if "y" allow modification of cell for live "view" recalc
// comment:value - encoded text of comment for this cell (added in v1.5)
socialcalc/socialcalc-3.js view on Meta::CPAN
// w:defaultcolwidth - number, "auto", number%, or blank (default->80)
// h:defaultrowheight - not used
// tf:format# - cell format number for sheet default for text values
// ntf:format# - cell format number for sheet default for non-text values (i.e., numbers)
// layout:layout# - default cell layout number in cell layout list
// font:font# - default font number in sheet font list
// vf:valueformat# - default number value format number in sheet valueformat list (obsolete: only pre format version 1.2)
// ntvf:valueformat# - default non-text (number) value format number in sheet valueformat list
// tvf:valueformat# - default text value format number in sheet valueformat list
// color:color# - default number for text color in sheet color list
// bgcolor:color# - default number for background color in sheet color list
// circularreferencecell:coord - cell coord with a circular reference
// recalc:value - on/off (on is default). If not "off", appropriate changes to the sheet cause a recalc
// needsrecalc:value - yes/no (no is default). If "yes", formula values are not up to date
//
// name:name:description:value - name definition, name in uppercase, with value being "B5", "A1:B7", or "=formula";
// description and value are encoded.
// font:fontnum:value - text of font definition (style weight size family) for font fontnum
// "*" for "style weight", size, or family, means use default (first look to sheet, then builtin)
// color:colornum:rgbvalue - text of color definition (e.g., rgb(255,255,255)) for color colornum
// border:bordernum:value - text of border definition (thickness style color) for border bordernum
socialcalc/socialcalc-3.js view on Meta::CPAN
this.celllistitem = 0; // cell to check next when ordering
this.calclist = null; // object which is the chained list of cells to calculate
// each in the form of "coord: nextcoord"
// e.g., if B8 is calculated right after A8, then calclist.A8=="B8"
// if null, need to create the list
this.calclistlength = 0; // number of items in calclist
this.firstcalc = null; // start of the calc list - a string or null
this.lastcalc = null; // last one on chain (used to add more to the end)
this.nextcalc = null; // used to keep track during background recalc to make it restartable
this.count = 0; // number calculated
// checkinfo is used when determining calc order:
this.checkinfo = {}; // attributes are coords; if no attrib for a coord, it wasn't checked or doesn't need it
// values are RecalcCheckInfo objects while checking or TRUE when complete
}
// SocialCalc.RecalcCheckInfo - object that stores checking info while determining recalc order
socialcalc/socialcalc-3.js view on Meta::CPAN
SocialCalc.RecalcSheet = function(sheet) {
var coord, err, recalcdata;
var scri = SocialCalc.RecalcInfo;
delete sheet.attribs.circularreferencecell; // reset recalc-wide things
SocialCalc.Formula.FreshnessInfoReset();
SocialCalc.RecalcClearTimeout();
scri.sheet = sheet; // set values needed by background recalc
scri.currentState = scri.state.start_calc;
scri.starttime = new Date();
if (sheet.statuscallback) {
sheet.statuscallback(scri, "calcstart", null, sheet.statuscallbackparams);
}
SocialCalc.RecalcSetTimeout();
socialcalc/socialcalc-3.js view on Meta::CPAN
scri.currentState = scri.state.start_calc;
}
scf.SheetCache.waitingForLoading = null;
SocialCalc.RecalcSetTimeout();
}
//
// SocialCalc.RecalcTimerRoutine - handles the actual order determination and cell-by-cell recalculation in the background
//
SocialCalc.RecalcTimerRoutine = function() {
var eresult, cell, coord, err, status;
var starttime = new Date();
var count = 0;
var scf = SocialCalc.Formula;
if (!scf) {
return "Need SocialCalc.Formula";
socialcalc/socialcalc-3.js view on Meta::CPAN
this.maxcol=0; // max col and row to display, adding long spans, etc.
this.maxrow=0;
this.highlights = {}; // for each cell with special display: coord:highlightType (see this.highlightTypes)
this.cursorsuffix = ""; // added to highlights[cr]=="cursor" to get type to lookup
this.highlightTypes = // attributes to change when highlit
{
cursor: {style: scc.defaultHighlightTypeCursorStyle, className: scc.defaultHighlightTypeCursorClass},
range: {style: scc.defaultHighlightTypeRangeStyle, className: scc.defaultHighlightTypeRangeClass},
cursorinsertup: {style: "color:#FFF;backgroundColor:#A6A6A6;backgroundRepeat:repeat-x;backgroundPosition:top left;backgroundImage:url("+scc.defaultImagePrefix+"cursorinsertup.gif);", className: scc.defaultHighlightTypeCursorClass},
cursorinsertleft: {style: "color:#FFF;backgroundColor:#A6A6A6;backgroundRepeat:repeat-y;backgroundPosition:top left;backgroundImage:url("+scc.defaultImagePrefix+"cursorinsertleft.gif);", className: scc.defaultHighlightTypeCursorClass},
range2: {style: "color:#000;backgroundColor:#FFF;backgroundImage:url("+scc.defaultImagePrefix+"range2.gif);", className: ""}
}
this.cellIDprefix = scc.defaultCellIDPrefix; // if non-null, each cell will render with an ID
this.defaultlinkstyle = null; // default linkstyle object (allows you to pass values to link renderer)
this.defaultHTMLlinkstyle = {type: "html"}; // default linkstyle for standalone HTML
// constants:
this.defaultfontstyle = scc.defaultCellFontStyle;
socialcalc/socialcalc-3.js view on Meta::CPAN
}
if (scc.defaultCellFontFamily) {
stylestr+="font-family:"+scc.defaultCellFontFamily+";";
}
}
num=cell.color || sheetattribs.defaultcolor;
if (num) stylestr+="color:"+sheetobj.colors[num]+";";
num=cell.bgcolor || sheetattribs.defaultbgcolor;
if (num) stylestr+="background-color:"+sheetobj.colors[num]+";";
num=cell.cellformat;
if (num) {
stylestr+="text-align:"+sheetobj.cellformats[num]+";";
}
else {
t=cell.valuetype.charAt(0);
if (t=="t") {
num=sheetattribs.defaulttextformat;
if (num) stylestr+="text-align:"+sheetobj.cellformats[num]+";";
socialcalc/socialcalc.css view on Meta::CPAN
/*
* concat peer combinations into multishadows:
inset 0 0 0 4px orange,
inset 0 0 0 6px yellow,
inset 0 0 0 8px lime,
inset 0 0 0 10px cyan,
inset 0 0 0 12px blue,
inset 0 0 0 14px purple;
*/
}
.defaultComment {background-repeat:no-repeat;background-position:top right;background-image:url(images/sc-commentbg.gif);}
.defaultCommentNoGridStyle {}
.defaultHighlightTypeCursor {color:#FFF;background-color:#A6A6A6;}
.defaultHighlightTypeRange {color:#000;background-color:#E5E5E5;}
.defaultColname {font-size:small;text-align:center;color:#FFFFFF;background-color:#808080;cursor:e-resize;}
.defaultSelectedColname {font-size:small;text-align:center;color:#FFFFFF;background-color:#404040;cursor:e-resize;}
.defaultRowname {font-size:small;text-align:right;color:#FFFFFF;background-color:#808080;}
.defaultSelectedRowname {font-size:small;text-align:right;color:#FFFFFF;background-color:#404040;}
.defaultUpperLeft {font-size:small;}
.defaultSkippedCell {font-size:small;background-color:#CCC;}
.defaultPaneDivider {font-size:small;background-color:#ECECEC;padding:0px;}
.cteGriddiv {}
.defaultInputEcho {background-color:#FFD;border:1px solid #884;
font-size:small;padding:2px 10px 1px 2px;cursor:default;}
.TCmain {background-color:#EEE;}
.TCendcap {background-color:#FFF;}
.TCpaneslider {background-color:#CCC;}
.TClessbutton {background-color:#AAA;}
.TCmorebutton {background-color:#AAA;}
.TCscrollarea {background-color:#DDD;}
.TCthumb {background-color:#CCC;}
.TCPStrackingline {overflow:hidden;position:absolute;z-index:100;}
.TCTDFSthumbstatus {height:20px;width:auto;border:1px solid black;padding:2px;
background-color:#FFF;font-size:small;position:absolute;z-index:100;}
.TDpopupElement {border:1px solid black;padding:1px 2px 2px 2px;text-align:center;background-color:#FFF;
font-size:7pt;font-family:Verdana,Arial,Helvetica,sans-serif;
position:absolute;width:auto;z-index:110;}
socialcalc/socialcalc2demo-0-8-1.html view on Meta::CPAN
<script type="text/javascript" src="socialcalctableeditor.js"></script>
<script type="text/javascript" src="formatnumber2.js"></script>
<script type="text/javascript" src="formula1.js"></script>
<script type="text/javascript" src="socialcalcpopup.js"></script>
<script type="text/javascript" src="socialcalcspreadsheetcontrol.js"></script>
<style>
body, td, input, texarea {font-family:verdana,helvetica,sans-serif;font-size:small;}
.smaller {font-size:smaller;}
</style>
</head>
<body style="background-color:#FFF;" onresize="spreadsheet.DoOnResize();">
<div style="margin:8px 0px 10px 0px;">
<div id="tableeditor" style="margin:8px 0px 10px 0px;">editor goes here</div>
</div>
<div id="msg" onclick="this.innerHTML=' ';"></div>
<script>
function addmsg(str) {document.getElementById("msg").innerHTML += ", "+str;}
function setmsg(str) {document.getElementById("msg").innerHTML = str;}
socialcalc/socialcalc2demo-0-8-1.html view on Meta::CPAN
minval = minval - (extra || 1);
eachwidth = Math.floor(totalwidth / (values.length || 1))-4 || 1;
str += '<table cellspacing="0" cellpadding="0" width="'+totalwidth+'"><tr>';
for (i=0; i<values.length; i++) {
thisbar = Math.floor((values[i]-minval)*maxheight/(maxval-minval || 1))+1;
val = (values[i]+"").substring(0,7);
str += '<td valign="bottom" style="padding-right:4px;"><table cellspacing="0" cellpadding="0" width="'+eachwidth+'">';
str += '<tr><td align="center" style="font-size:7pt;">'+val+'</td></tr>';
str += '<tr><td><div style="height:'+thisbar+'px;background-color:'+color+';width:100%"> </div></td></tr>';
str += '</table></td>';
}
str += "</tr><tr>";
for (i=0; i<values.length; i++) {
str += '<td align="center" valign="top" style="font-size:8pt;font-weight:bold;padding-top:6px;">'+labels[i]+'</td>';
}
str += "</tr></table>";
gview.innerHTML = str;
socialcalc/socialcalc2demo10.html view on Meta::CPAN
<script type="text/javascript" src="socialcalctableeditor.js"></script>
<script type="text/javascript" src="formatnumber2.js"></script>
<script type="text/javascript" src="formula1.js"></script>
<script type="text/javascript" src="socialcalcpopup.js"></script>
<script type="text/javascript" src="socialcalcspreadsheetcontrol.js"></script>
<style>
body, td, input, texarea {font-family:verdana,helvetica,sans-serif;font-size:small;}
.smaller {font-size:smaller;}
</style>
</head>
<body style="background-color:#FFF;" onresize="spreadsheet.DoOnResize();">
<div style="margin:8px 0px 10px 0px;">
<div id="tableeditor" style="margin:8px 0px 10px 0px;">editor goes here</div>
</div>
<div id="msg" onclick="this.innerHTML=' ';"></div>
<script>
function addmsg(str) {document.getElementById("msg").innerHTML += ", "+str;}
function setmsg(str) {document.getElementById("msg").innerHTML = str;}
socialcalc/socialcalc2demo10.html view on Meta::CPAN
minval = minval - (extra || 1);
eachwidth = Math.floor(totalwidth / (values.length || 1))-4 || 1;
str += '<table cellspacing="0" cellpadding="0" width="'+totalwidth+'"><tr>';
for (i=0; i<values.length; i++) {
thisbar = Math.floor((values[i]-minval)*maxheight/(maxval-minval || 1))+1;
val = (values[i]+"").substring(0,7);
str += '<td valign="bottom" style="padding-right:4px;"><table cellspacing="0" cellpadding="0" width="'+eachwidth+'">';
str += '<tr><td align="center" style="font-size:7pt;">'+val+'</td></tr>';
str += '<tr><td><div style="height:'+thisbar+'px;background-color:'+color+';width:100%"> </div></td></tr>';
str += '</table></td>';
}
str += "</tr><tr>";
for (i=0; i<values.length; i++) {
str += '<td align="center" valign="top" style="font-size:8pt;font-weight:bold;padding-top:6px;">'+labels[i]+'</td>';
}
str += "</tr></table>";
gview.innerHTML = str;
socialcalc/socialcalcconstants.js view on Meta::CPAN
defaultCellFontStyle: "normal normal",
defaultCellFontSize: "small",
defaultCellFontFamily: "Verdana,Arial,Helvetica,sans-serif",
defaultPaneDividerWidth: "2", // a string
defaultPaneDividerHeight: "3", // a string
defaultGridCSS: "1px solid #C0C0C0;", // used as style to set each border when grid enabled (was #ECECEC)
defaultCommentClass: "", // class added to cells with non-null comments when grid enabled
defaultCommentStyle: "background-repeat:no-repeat;background-position:top right;background-image:url(images/sc-commentbg.gif);", // style added to cells with non-null comments when grid enabled
defaultCommentNoGridClass: "", // class added to cells with non-null comments when grid not enabled
defaultCommentNoGridStyle: "", // style added to cells with non-null comments when grid not enabled
defaultColWidth: "80", // text
defaultMinimumColWidth: 10, // numeric
// For each of the following default sheet display values at least one of class and/or style are needed
defaultHighlightTypeCursorClass: "",
defaultHighlightTypeCursorStyle: "color:#FFF;backgroundColor:#A6A6A6;",
defaultHighlightTypeRangeClass: "",
defaultHighlightTypeRangeStyle: "color:#000;backgroundColor:#E5E5E5;",
defaultColnameClass: "", // regular column heading letters, needs a cursor property
defaultColnameStyle: "font-size:small;text-align:center;color:#FFFFFF;background-color:#808080;cursor:e-resize;",
defaultSelectedColnameClass: "", // column with selected cell, needs a cursor property
defaultSelectedColnameStyle: "font-size:small;text-align:center;color:#FFFFFF;background-color:#404040;cursor:e-resize;",
defaultRownameClass: "", // regular row heading numbers
defaultRownameStyle: "font-size:small;text-align:right;color:#FFFFFF;background-color:#808080;",
defaultSelectedRownameClass: "", // column with selected cell, needs a cursor property
defaultSelectedRownameStyle: "font-size:small;text-align:right;color:#FFFFFF;background-color:#404040;",
defaultUpperLeftClass: "", // Corner cell in upper left
defaultUpperLeftStyle: "font-size:small;",
defaultSkippedCellClass: "", // used if present for spanned cells peeking into a pane (at least one of class/style needed)
defaultSkippedCellStyle: "font-size:small;background-color:#CCC", // used if present
defaultPaneDividerClass: "", // used if present for the look of the space between panes (at least one of class/style needed)
defaultPaneDividerStyle: "font-size:small;background-color:#C0C0C0;padding:0px;", // used if present
s_rcMissingSheet: "Render Context must have a sheet object", // unlikely thrown error
//*** SocialCalc.format_text_for_display
defaultLinkFormatString: '<span style="font-size:smaller;text-decoration:none !important;background-color:#66B;color:#FFF;">Link</span>', // used for format "text-link"; you could make this an img tag if desired
// defaultLinkFormatString: '<img src="images/sc-linkout.gif" border="0" alt="Link out" title="Link out">',
defaultPageLinkFormatString: '<span style="font-size:smaller;text-decoration:none !important;background-color:#66B;color:#FFF;">Page</span>', // used for format "text-link"; you could make this an img tag if desired
//*** SocialCalc.format_number_for_display
defaultFormatdt: 'd-mmm-yyyy h:mm:ss',
defaultFormatd: 'd-mmm-yyyy',
defaultFormatt: '[h]:mm:ss',
defaultDisplayTRUE: 'TRUE', // how TRUE shows when rendered
defaultDisplayFALSE: 'FALSE',
//
socialcalc/socialcalcconstants.js view on Meta::CPAN
s_statusline_recalcneeded: '<span style="color:#999;">(Recalc needed)</span>',
s_statusline_circref: '<span style="color:red;">Circular reference: ',
//** SocialCalc.InputBoxDisplayCellContents
s_inputboxdisplaymultilinetext: "[Multi-line text: Click icon on right to edit]",
//** SocialCalc.InputEcho
defaultInputEchoClass: "", // if present, the class of the popup inputEcho div
defaultInputEchoStyle: "filter:alpha(opacity=90);opacity:.9;backgroundColor:#FFD;border:1px solid #884;"+
"fontSize:small;padding:2px 10px 1px 2px;cursor:default;", // if present, pseudo style
defaultInputEchoPromptClass: "", // if present, the class of the popup inputEcho div
defaultInputEchoPromptStyle: "filter:alpha(opacity=90);opacity:.9;backgroundColor:#FFD;"+
"borderLeft:1px solid #884;borderRight:1px solid #884;borderBottom:1px solid #884;"+
"fontSize:small;fontStyle:italic;padding:2px 10px 1px 2px;cursor:default;", // if present, pseudo style
//** SocialCalc.InputEchoText
ietUnknownFunction: "Unknown function ", // displayed when typing "=unknown("
//** SocialCalc.CellHandles
CH_radius1: 29.0, // extent of inner circle within 90px image
socialcalc/socialcalcconstants.js view on Meta::CPAN
"Horizontal": " Horizontal", "Vertical": " Vertical"}, // direction that modifies operation during drag
//*** SocialCalc.TableControl
defaultTCSliderThickness: 9, // length of pane slider (numeric in pixels)
defaultTCButtonThickness: 20, // length of scroll +/- buttons (numeric in pixels)
defaultTCThumbThickness: 15, // length of thumb (numeric in pixels)
//*** SocialCalc.CreateTableControl
TCmainStyle: "backgroundColor:#EEE;", // if present, pseudo style (text-align is textAlign) for main div of a table control
TCmainClass: "", // if present, the CSS class of the main div for a table control
TCendcapStyle: "backgroundColor:#FFF;", // backgroundColor may be used while waiting for image that may not come
TCendcapClass: "",
TCpanesliderStyle: "backgroundColor:#CCC;",
TCpanesliderClass: "",
s_panesliderTooltiph: "Drag to lock pane vertically", // tooltip for horizontal table control pane slider
s_panesliderTooltipv: "Drag to lock pane horizontally",
TClessbuttonStyle: "backgroundColor:#AAA;",
TClessbuttonClass: "",
TClessbuttonRepeatWait: 300, // in milliseconds
TClessbuttonRepeatInterval: 20,//100, // in milliseconds
TCmorebuttonStyle: "backgroundColor:#AAA;",
TCmorebuttonClass: "",
TCmorebuttonRepeatWait: 300, // in milliseconds
TCmorebuttonRepeatInterval: 20,//100, // in milliseconds
TCscrollareaStyle: "backgroundColor:#DDD;",
TCscrollareaClass: "",
TCscrollareaRepeatWait: 500, // in milliseconds
TCscrollareaRepeatInterval: 100, // in milliseconds
TCthumbClass: "",
TCthumbStyle: "backgroundColor:#CCC;",
//*** SocialCalc.TCPSDragFunctionStart
TCPStrackinglineClass: "", // at least one of class/style for pane slider tracking line display in table control
TCPStrackinglineStyle: "overflow:hidden;position:absolute;zIndex:100;",
// if present, pseudo style (text-align is textAlign)
TCPStrackinglineThickness: "2px", // narrow dimension of trackling line (string with units)
//*** SocialCalc.TCTDragFunctionStart
TCTDFSthumbstatusvClass: "", // at least one of class/style for vertical thumb dragging status display in table control
TCTDFSthumbstatusvStyle: "height:20px;width:auto;border:3px solid #808080;overflow:hidden;"+
"backgroundColor:#FFF;fontSize:small;position:absolute;zIndex:100;",
// if present, pseudo style (text-align is textAlign)
TCTDFSthumbstatushClass: "", // at least one of class/style for horizontal thumb dragging status display in table control
TCTDFSthumbstatushStyle: "height:20px;width:auto;border:1px solid black;padding:2px;"+
"backgroundColor:#FFF;fontSize:small;position:absolute;zIndex:100;",
// if present, pseudo style (text-align is textAlign)
TCTDFSthumbstatusrownumClass: "", // at least one of class/style for thumb dragging status display in table control
TCTDFSthumbstatusrownumStyle: "color:#FFF;background-color:#808080;font-size:small;white-space:nowrap;padding:3px;", // if present, real style
TCTDFStopOffsetv: 0, // offsets for thumbstatus display while dragging
TCTDFSleftOffsetv: -80,
s_TCTDFthumbstatusPrefixv: "Row ", // Text Control Drag Function text before row number
TCTDFStopOffseth: -30,
TCTDFSleftOffseth: 0,
s_TCTDFthumbstatusPrefixh: "Col ", // Text Control Drag Function text before col number
//*** SocialCalc.TooltipInfo
// Note: These two values are used to set the TooltipInfo initial values when the code is first read in.
// Modifying them here after loading has no effect -- you need to modify SocialCalc.TooltipInfo directly
// to dynamically set them. This is different than most other constants which may be modified until use.
TooltipOffsetX: 2, // offset in pixels from mouse position (to right on left side of screen, to left on right)
TooltipOffsetY: 10, // offset in pixels above mouse position for lower edge
//*** SocialCalc.TooltipDisplay
TDpopupElementClass: "", // at least one of class/style for tooltip display
TDpopupElementStyle: "border:1px solid black;padding:1px 2px 2px 2px;textAlign:center;backgroundColor:#FFF;"+
"fontSize:7pt;fontFamily:Verdana,Arial,Helvetica,sans-serif;"+
"position:absolute;width:auto;zIndex:110;",
// if present, pseudo style (text-align is textAlign)
//
// SocialCalc Spreadsheet Control module, socialcalcspreadsheetcontrol.js:
//
//*** SocialCalc.SpreadsheetControl
SCToolbarbackground: "background-color:#404040;",
SCTabbackground: "background-color:#CCC;",
SCTabselectedCSS: "font-size:small;padding:6px 30px 6px 8px;color:#FFF;background-color:#404040;cursor:default;border-right:1px solid #CCC;",
SCTabplainCSS: "font-size:small;padding:6px 30px 6px 8px;color:#FFF;background-color:#808080;cursor:default;border-right:1px solid #CCC;",
SCToolbartext: "font-size:x-small;font-weight:bold;color:#FFF;padding-bottom:4px;",
SCFormulabarheight: 30, // in pixels, will contain a text input box
SCStatuslineheight: 20, // in pixels
SCStatuslineCSS: "font-size:10px;padding:3px 0px;",
// Constants for default Format tab (settings)
//
// *** EVEN THOUGH THESE DON'T START WITH s_: ***
socialcalc/socialcalcconstants.js view on Meta::CPAN
s_loc_align_center: "Align Center",
s_loc_align_left: "Align Left",
s_loc_align_right: "Align Right",
s_loc_alignment: "Alignment",
s_loc_audit: "Audit",
s_loc_audit_trail_this_session: "Audit Trail This Session",
s_loc_auto: "Auto",
s_loc_auto_sum: "Auto Sum",
s_loc_auto_wX_commas: "Auto w/ commas",
s_loc_automatic: "Automatic",
s_loc_background: "Background",
s_loc_bold: "Bold",
s_loc_bold_XampX_italics: "Bold & Italics",
s_loc_bold_italic: "Bold Italic",
s_loc_borders: "Borders",
s_loc_borders_off: "Borders Off",
s_loc_borders_on: "Borders On",
s_loc_bottom: "Bottom",
s_loc_bottom_border: "Bottom Border",
s_loc_cell_settings: "CELL SETTINGS",
s_loc_csv_format: "CSV format",
socialcalc/socialcalcpopup.js view on Meta::CPAN
var spcdata = spc[id].data;
var main = document.createElement("div");
main.style.position = "absolute";
pos = SocialCalc.GetElementPositionWithScroll(spcdata.mainele);
main.style.top = (pos.top+spcdata.mainele.offsetHeight)+"px";
main.style.left = (pos.left)+"px";
main.style.zIndex = 100;
main.style.backgroundColor = "#FFF";
main.style.border = "1px solid black";
if (attribs.width) {
main.style.width = attribs.width;
}
spcdata.mainele.appendChild(main);
if (attribs.title) {
main.innerHTML = '<table cellspacing="0" cellpadding="0" style="border-bottom:1px solid black;"><tr>'+
'<td style="font-size:10px;cursor:default;width:100%;background-color:#999;color:#FFF;">'+attribs.title+'</td>'+
'<td style="font-size:10px;cursor:default;color:#666;" onclick="SocialCalc.Popup.Cancel();"> X </td></tr></table>';
if (attribs.moveable) {
spcdata.dragregistered = main.firstChild.firstChild.firstChild.firstChild;
SocialCalc.DragRegister(spcdata.dragregistered, true, true, {MouseDown: SocialCalc.DragFunctionStart, MouseMove: SocialCalc.DragFunctionPosition,
MouseUp: SocialCalc.DragFunctionPosition,
Disabled: null, positionobj: main});
}
}
socialcalc/socialcalcpopup.js view on Meta::CPAN
var spcdata = spc[id].data
var str = "";
spcdata.popupele = sp.CreatePopupDiv(id, spcdata.attribs);
if (spcdata.custom) {
str = SocialCalc.Popup.Types.List.MakeCustom(type, id);
ele = document.createElement("div");
ele.innerHTML = '<div style="cursor:default;padding:4px;background-color:#CCC;">'+str+'</div>';
spcdata.customele = ele.firstChild.firstChild.childNodes[1];
spcdata.listdiv = null;
spcdata.contentele = ele;
}
else {
str = SocialCalc.Popup.Types.List.MakeList(type, id);
ele = document.createElement("div");
ele.innerHTML = '<div style="cursor:default;padding:4px;">'+str+'</div>';
socialcalc/socialcalcpopup.js view on Meta::CPAN
str += '</td>'+td+" "+'</td>'+td;
spcdata.ncols += 1;
continue;
}
if (o.a.skip) {
str += '<div style="font-size:x-small;white-space:nowrap;">'+o.o+'</div>';
continue;
}
}
if (o.v == spcdata.value && !(o.a && (o.a.custom || o.a.cancel))) { // matches value
bg = "background-color:#DDF;";
}
else {
bg = "";
}
str += '<div style="font-size:x-small;white-space:nowrap;'+bg+'" onclick="SocialCalc.Popup.Types.List.ItemClicked(\''+id+'\',\''+i+'\');" onmousemove="SocialCalc.Popup.Types.List.MouseMove(\''+id+'\',this);">'+o.o+'</div>';
}
str += "</td></tr></table>";
return str;
socialcalc/socialcalcpopup.js view on Meta::CPAN
var spt = sp.Types;
var spc = sp.Controls;
var spcdata = spc[id].data;
var a = spcdata.options[num].a;
if (a && a.custom) {
oele = spcdata.contentele;
str = SocialCalc.Popup.Types.List.MakeCustom("List", id);
nele = document.createElement("div");
nele.innerHTML = '<div style="cursor:default;padding:4px;background-color:#CCC;">'+str+'</div>';
spcdata.customele = nele.firstChild.firstChild.childNodes[1];
spcdata.listdiv = null;
spcdata.contentele = nele;
spcdata.popupele.replaceChild(nele, oele);
if (spcdata.attribs.ensureWithin) {
SocialCalc.Popup.EnsurePosition(id, spcdata.attribs.ensureWithin);
}
return;
}
socialcalc/socialcalcpopup.js view on Meta::CPAN
var spcdata = spc[id].data;
var list = spcdata.listdiv;
if (!list) return;
var rowele = list.firstChild.firstChild.firstChild; // div.table.tbody.tr
for (col=0; col<spcdata.ncols; col++) {
for (i=0; i<rowele.childNodes[col*2].childNodes.length; i++) {
rowele.childNodes[col*2].childNodes[i].style.backgroundColor = "#FFF";
}
}
ele.style.backgroundColor = "#DDF";
}
SocialCalc.Popup.Types.List.Hide = function(type, id) {
var sp = SocialCalc.Popup;
var spt = sp.Types;
var spc = sp.Controls;
var spcdata = spc[id].data;
socialcalc/socialcalcpopup.js view on Meta::CPAN
// display: "value to display" as hex color value,
// custom: true if custom value,
// disabled: t/f,
// attribs: {
// title: "popup title string",
// moveable: t/f,
// width: optional width, e.g., "100px", of popup chooser
// ensureWithin: optional element object to ensure popup fits within if possible
// sampleWidth: optional width, e.g., "20px",
// sampleHeight: optional height, e.g., "20px",
// backgroundImage: optional background image for sample (transparent where want to show current color), e.g., "colorbg.gif"
// backgroundImageDefault: optional background image for sample when default (transparent shows white)
// backgroundImageDisabled: optional background image for sample when disabled (transparent shows gray)
// changedcallback: optional function(attribs, id, newvalue),
// ...
// }
// data: {
// }
//
// popupele: gets popup element object when created
// contentele: gets element created with all the content
// customele: gets input element with custom value
//
socialcalc/socialcalcpopup.js view on Meta::CPAN
var spt = sp.Types;
var spc = sp.Controls;
var spcdata = spc[id].data;
var spca = spcdata.attribs;
spcdata.value = value;
spcdata.custom = false;
if (spcdata.mainele && spcdata.mainele.firstChild) {
if (spcdata.value) {
spcdata.mainele.firstChild.style.backgroundColor = spcdata.value;
if (spca.backgroundImage) {
img = "url("+sp.imagePrefix+spca.backgroundImage+")";
}
else {
img = "";
}
pos = "center center";
}
else {
spcdata.mainele.firstChild.style.backgroundColor = "#FFF";
if (spca.backgroundImageDefault) {
img = "url("+sp.imagePrefix+spca.backgroundImageDefault+")";
pos = "center center";
}
else {
img = "url("+sp.imagePrefix+"defaultcolor.gif)";
pos = "left top";
}
}
spcdata.mainele.firstChild.style.backgroundPosition = pos;
spcdata.mainele.firstChild.style.backgroundImage = img;
}
}
SocialCalc.Popup.Types.ColorChooser.SetDisabled = function(type, id, disabled) {
var i;
var sp = SocialCalc.Popup;
var spt = sp.Types;
var spc = sp.Controls;
var spcdata = spc[id].data;
var spca = spcdata.attribs;
spcdata.disabled = disabled;
if (spcdata.mainele && spcdata.mainele.firstChild) {
if (disabled) {
spcdata.mainele.firstChild.style.backgroundColor = "#DDD";
if (spca.backgroundImageDisabled) {
img = "url("+sp.imagePrefix+spca.backgroundImageDisabled+")";
pos = "center center";
}
else {
img = "url("+sp.imagePrefix+"defaultcolor.gif)";
pos = "left top";
}
spcdata.mainele.firstChild.style.backgroundPosition = pos;
spcdata.mainele.firstChild.style.backgroundImage = img;
}
else {
sp.SetValue(id, spcdata.value);
}
}
}
SocialCalc.Popup.Types.ColorChooser.GetValue = function(type, id) {
socialcalc/socialcalcpopup.js view on Meta::CPAN
var str = "";
spcdata.oldvalue = spcdata.value; // remember starting value
spcdata.popupele = sp.CreatePopupDiv(id, spcdata.attribs);
if (spcdata.custom) {
str = SocialCalc.Popup.Types.ColorChooser.MakeCustom(type, id);
ele = document.createElement("div");
ele.innerHTML = '<div style="cursor:default;padding:4px;background-color:#CCC;">'+str+'</div>';
spcdata.customele = ele.firstChild.firstChild.childNodes[2];
spcdata.contentele = ele;
}
else {
mainele = SocialCalc.Popup.Types.ColorChooser.CreateGrid(type, id);
ele = document.createElement("div");
ele.style.padding = "3px";
ele.style.backgroundColor = "#CCC";
ele.appendChild(mainele);
spcdata.customele = null;
spcdata.contentele = ele;
}
spcdata.popupele.appendChild(ele);
if (spcdata.attribs.ensureWithin) {
SocialCalc.Popup.EnsurePosition(id, spcdata.attribs.ensureWithin);
socialcalc/socialcalcpopup.js view on Meta::CPAN
ele = document.createElement("td");
ele.style.fontSize = "1px";
ele.innerHTML = " ";
ele.style.height = "10px";
if (col<=1) {
ele.style.width = "17px";
ele.style.borderRight = "3px solid white";
}
else {
ele.style.width = "20px";
ele.style.backgroundRepeat = "no-repeat";
}
rowele.appendChild(ele);
g.ele = ele;
}
grid.tbody.appendChild(rowele);
}
mainele.appendChild(grid.table);
ele = document.createElement("div");
ele.style.marginTop = "3px";
ele.innerHTML = '<table cellspacing="0" cellpadding="0"><tr>'+
'<td style="width:17px;background-color:#FFF;background-image:url('+sp.imagePrefix+'defaultcolor.gif);height:16px;font-size:10px;cursor:pointer;" title="'+SPLoc("Default")+'"> </td>'+
'<td style="width:23px;height:16px;font-size:10px;text-align:center;cursor:pointer;" title="'+SPLoc("Custom")+'">#</td>'+
'<td style="width:60px;height:16px;font-size:10px;text-align:center;cursor:pointer;">'+SPLoc("OK")+'</td>'+
'</tr></table>';
grid.defaultbox = ele.firstChild.firstChild.firstChild.childNodes[0];
grid.defaultbox.onclick = spt.ColorChooser.DefaultClicked;
grid.custom = ele.firstChild.firstChild.firstChild.childNodes[1];
grid.custom.onclick = spt.ColorChooser.CustomClicked;
grid.msg = ele.firstChild.firstChild.firstChild.childNodes[2];
grid.msg.onclick = spt.ColorChooser.CloseOK;
mainele.appendChild(ele);
socialcalc/socialcalcpopup.js view on Meta::CPAN
var sp = SocialCalc.Popup;
var spt = sp.Types;
var sptc = spt.ColorChooser;
var spc = sp.Controls;
var spcdata = spc[id].data;
var grid = spcdata.grid;
for (row=0; row<16; row++) {
for (col=0; col<5; col++) {
g = sptc.gridToG(grid,row, col);
g.ele.style.backgroundColor = g.rgb;
g.ele.title = sp.RGBToHex(g.rgb);
if (grid["selectedrow"+col]==row) {
g.ele.style.backgroundImage = "url("+sp.imagePrefix+"chooserarrow.gif)";
}
else {
g.ele.style.backgroundImage = "";
}
}
}
sp.SetValue(id, spcdata.value);
grid.msg.style.backgroundColor = spcdata.value;
rgb = sp.splitRGB(spcdata.value || "rgb(255,255,255)");
if (rgb.r+rgb.g+rgb.b < 220) {
grid.msg.style.color = "#FFF";
}
else {
grid.msg.style.color = "#000";
}
if (!spcdata.value) { // default
grid.msg.style.backgroundColor = "#FFF";
grid.msg.style.backgroundImage = "url("+sp.imagePrefix+"defaultcolor.gif)";
grid.msg.title = "Default";
}
else {
grid.msg.style.backgroundImage = "";
grid.msg.title = sp.RGBToHex(spcdata.value);
}
}
SocialCalc.Popup.Types.ColorChooser.GridMouseDown = function(e) {
var event = e || window.event;
var sp = SocialCalc.Popup;
socialcalc/socialcalcpopup.js view on Meta::CPAN
var viewport = SocialCalc.GetViewportInfo();
var clientX = event.clientX + viewport.horizontalScroll;
var clientY = event.clientY + viewport.verticalScroll;
var gpos = SocialCalc.GetElementPosition(grid.table);
var row = Math.floor((clientY-gpos.top-2)/10); // -2 is to split the diff btw IE & FF
row = row < 0 ? 0 : row;
var col = Math.floor((clientX-gpos.left)/20);
row = row < 0 ? 0 : (row > 15 ? 15 : row);
col = col < 0 ? 0 : (col > 4 ? 4 : col);
var color = sptc.gridToG(grid,row,col).ele.style.backgroundColor;
var newrgb = sp.splitRGB(color);
var oldrgb = sp.splitRGB(spcdata.value);
switch (col) {
case 2:
spcdata.value = sp.makeRGB(newrgb.r, oldrgb.g, oldrgb.b);
break;
case 3:
spcdata.value = sp.makeRGB(oldrgb.r, newrgb.g, oldrgb.b);
break;
socialcalc/socialcalcpopup.js view on Meta::CPAN
var id = sp.Current.id;
if (!id) return;
var spcdata = spc[id].data;
var oele, str, nele;
oele = spcdata.contentele;
str = SocialCalc.Popup.Types.ColorChooser.MakeCustom("ColorChooser", id);
nele = document.createElement("div");
nele.innerHTML = '<div style="cursor:default;padding:4px;background-color:#CCC;">'+str+'</div>';
spcdata.customele = nele.firstChild.firstChild.childNodes[2];
spcdata.contentele = nele;
spcdata.popupele.replaceChild(nele, oele);
spcdata.customele.value = sp.RGBToHex(spcdata.value);
if (spcdata.attribs.ensureWithin) {
SocialCalc.Popup.EnsurePosition(id, spcdata.attribs.ensureWithin);
}
socialcalc/socialcalcpopup.js view on Meta::CPAN
var spcdata = spc[id].data;
SocialCalc.Popup.SetValue(id, sp.HexToRGB("#"+spcdata.customele.value));
var oele, mainele, nele;
oele = spcdata.contentele;
mainele = SocialCalc.Popup.Types.ColorChooser.CreateGrid("ColorChooser", id);
nele = document.createElement("div");
nele.style.padding = "3px";
nele.style.backgroundColor = "#CCC";
nele.appendChild(mainele);
spcdata.customele = null;
spcdata.contentele = nele;
spcdata.popupele.replaceChild(nele, oele);
if (spcdata.attribs.ensureWithin) {
SocialCalc.Popup.EnsurePosition(id, spcdata.attribs.ensureWithin);
}
}
socialcalc/socialcalcserver.pl view on Meta::CPAN
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>$titlestr</title>
<style>
body, td, input, texarea
{font-family:verdana,helvetica,sans-serif;font-size:small;}
.smaller {font-size:smaller;}
</style>
</head>
<body>
<form action="" method="POST">
<div style="padding:6px;background-color:#80A9F3;">
<div style="font-weight:bold;color:white;">SIMPLE SYSTEM FOR EDITING SOCIALCALC FILES</div>
<div style="color:#FDD;font-weight:bold;">Initial Setup</div>
<div style="padding:6px;background-color:#80A9F3;">
Name of subdirectory of where the code is to hold spreadsheet data files:
<input name="datadir" type="text" value="scdata/"><br>
Name of subdirectory of server home page that has the JavaScript files and the images subdirectory
(only needed if running on Apache, etc., not when running standalone from the
command line in Perl): <input name="jsdir" type="text" value="/sgi/scjs/"><br>
<input type="submit" name="setup" value="Save">
</div>
<br>
</form>
</div>
socialcalc/socialcalcserver.pl view on Meta::CPAN
function doview(p) {
document.getElementById("pagename").value = p;
document.getElementById("view").value = "yes";
}
</script>
</head>
<body>
<form action="" method="POST">
<div style="padding:6px;background-color:#80A9F3;">
<div style="font-weight:bold;color:white;">SIMPLE SYSTEM FOR EDITING SOCIALCALC FILES</div>
<div style="color:#FDD;font-weight:bold;">$statusmessage </div>
<div style="padding:6px;background-color:#80A9F3;">
<div style="font-weight:bold;font-size:smaller;">Pages:</div>
<div>
EOF
my @pagefiles = glob("$datadir*"); # Get list of all pages
for (my $pnum=0; $pnum <= $#pagefiles; $pnum++) {
$pagefiles[$pnum] =~ m/^(?:.*\/){0,1}(.*)$/;
$response .= qq!<span style="font-size:smaller;">$1</span> <input class="smaller" type="submit" value="Edit" onclick="doedit('$1');"> !;
$response .= qq! <input class="smaller" type="submit" value="View" onclick="doview('$1');"><br>!;
}
socialcalc/socialcalcserver.pl view on Meta::CPAN
<script type="text/javascript" src="${jsdir}socialcalcpopup.js"></script>
<script type="text/javascript" src="${jsdir}socialcalcspreadsheetcontrol.js"></script>
<style>
body, td, input, texarea
{font-family:verdana,helvetica,sans-serif;font-size:small;}
.smaller {font-size:smaller;}
</style>
</head>
<body>
<form name="f0" action="" method="POST">
<div style="padding:6px;background-color:#80A9F3;">
<div style="font-weight:bold;color:white;">SIMPLE SYSTEM FOR EDITING SOCIALCALC FILES</div>
<div style="color:#FDD;font-weight:bold;">$statusmessage </div>
<div style="margin-bottom:6px;">Editing page: <span style="font-style:italic;font-weight:bold;">$pagename</span></div>
<input class="smaller" type="submit" name="savespreadsheet" value="Save" onclick="dosave();">
<input class="smaller" type="submit" name="cancelspreadsheet" value="Cancel">
<textarea name="savestr" id="sheetdata" style="display:none;">$sheetstr</textarea>
<input type="hidden" name="newstr" id="newdata" value="">
<input type="hidden" name="pagename" value="$pagename">
</div>
</form>
socialcalc/socialcalcserver.pl view on Meta::CPAN
body, td, input, texarea
{font-family:verdana,helvetica,sans-serif;font-size:small;}
.smaller {font-size:smaller;}
</style>
</head>
<body>
EOF
if (!$q->param('print')) {
$response .= <<"EOF";
<div style="padding:6px;background-color:#80A9F3;">
<div style="font-weight:bold;color:white;">SIMPLE SYSTEM FOR EDITING SOCIALCALC FILES</div>
<div style="color:#FDD;font-weight:bold;">$statusmessage </div>
<div style="margin-bottom:6px;">Editing page: <span style="font-style:italic;font-weight:bold;">$pagename</span></div>
<form name="f0" action="" method="POST">
<input class="smaller" type="submit" name="doneview" value="Done">
</form>
<a href="?pagename=$pagename&view=yes&print=yes" target="_blank">Printer-friendly</a>
</div>
EOF
}
socialcalc/socialcalcspreadsheetcontrol.js view on Meta::CPAN
this.sortrange = ""; // remembered range for sort tab
this.moverange = ""; // remembered range from movefrom used by movepaste/moveinsert
// Constants:
this.idPrefix = "SocialCalc-"; // prefix added to element ids used here, should end in "-"
this.multipartBoundary = "SocialCalcSpreadsheetControlSave"; // boundary used by SpreadsheetControlCreateSpreadsheetSave
this.imagePrefix = scc.defaultImagePrefix; // prefix added to img src
this.toolbarbackground = scc.SCToolbarbackground;
this.tabbackground = scc.SCTabbackground; // "background-color:#CCC;";
this.tabselectedCSS = scc.SCTabselectedCSS;
this.tabplainCSS = scc.SCTabplainCSS;
this.toolbartext = scc.SCToolbartext;
this.formulabarheight = scc.SCFormulabarheight; // in pixels, will contain a text input box
this.statuslineheight = scc.SCStatuslineheight; // in pixels
this.statuslineCSS = scc.SCStatuslineCSS;
// Callbacks:
socialcalc/socialcalcspreadsheetcontrol.js view on Meta::CPAN
' </td>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Left!</div>'+
' <span id="%id.cpadleft"></span>'+
' </td>'+
' </tr></table>'+
' </td>'+
'</tr>'+
'</table>'+
' </td><td style="vertical-align:top;padding:12px 0px 0px 12px;">'+
' <div style="width:100px;height:100px;overflow:hidden;border:1px solid black;background-color:#EEE;padding:6px;">'+
' <table cellspacing="0" cellpadding="0"><tr>'+
' <td id="sample-text" style="height:100px;width:100px;"><div>%loc!This is a<br>sample!</div><div>-1234.5</div></td>'+
' </tr></table>'+
' </div>'+
' </td></tr></table>'+
'<br>'
};
// Sort
socialcalc/socialcalcspreadsheetcontrol.js view on Meta::CPAN
'</div>',
view: "audit",
onclick:
function(s, t) {
var SCLoc = SocialCalc.LocalizeString;
var i, j;
var str = '<table cellspacing="0" cellpadding="0" style="margin-bottom:10px;"><tr><td style="font-size:small;padding:6px;"><b>'+SCLoc("Audit Trail This Session")+':</b><br><br>';
var stack = s.sheet.changes.stack;
var tos = s.sheet.changes.tos;
for (i=0; i<stack.length; i++) {
if (i==tos+1) str += '<br></td></tr><tr><td style="font-size:small;background-color:#EEE;padding:6px;">'+SCLoc("UNDONE STEPS")+':<br>';
for (j=0; j<stack[i].command.length; j++) {
str += SocialCalc.special_chars(stack[i].command[j]) + "<br>";
}
}
s.views.audit.element.innerHTML = str+"</td></tr></table>";
SocialCalc.CmdGotFocus(true);
},
onclickFocus: true
});
socialcalc/socialcalcspreadsheetcontrol.js view on Meta::CPAN
spreadsheet.spreadsheetDiv = document.createElement("div");
spreadsheet.SizeSSDiv(); // calculate and fill in the size values
for (child=node.firstChild; child!=null; child=node.firstChild) {
node.removeChild(child);
}
// create the tabbed UI at the top
html = '<div><div style="'+spreadsheet.toolbarbackground+'padding:12px 10px 10px 4px;height:40px;">';
for (i=0; i<tabs.length; i++) {
html += tabs[i].html;
}
html += '</div>'+
'<div style="'+spreadsheet.tabbackground+'padding-bottom:4px;margin:0px 0px 8px 0px;">'+
'<table cellpadding="0" cellspacing="0"><tr>';
for (i=0; i<tabs.length; i++) {
html += ' <td id="%id.' + tabs[i].name + 'tab" style="' +
(i==0 ? spreadsheet.tabselectedCSS : spreadsheet.tabplainCSS) +
'" onclick="%s.SetTab(this);">' + SCLoc(tabs[i].text) + '</td>';
}
html += ' </tr></table></div></div>';
socialcalc/socialcalcspreadsheetcontrol.js view on Meta::CPAN
button_deletecol: {tooltip: "Delete Column", command: "deletecol"},
button_recalc: {tooltip: "Recalc", command: "recalc"}
}
for (button in spreadsheet.Buttons) {
bele = document.getElementById(spreadsheet.idPrefix+button);
if (!bele) {alert("Button "+(spreadsheet.idPrefix+button)+" missing"); continue;}
bele.style.border = "1px solid "+scc.ISCButtonBorderNormal;
SocialCalc.TooltipRegister(bele, SCLoc(spreadsheet.Buttons[button].tooltip), {});
SocialCalc.ButtonRegister(bele,
{normalstyle: "border:1px solid "+scc.ISCButtonBorderNormal+";backgroundColor:"+scc.ISCButtonBorderNormal+";",
hoverstyle: "border:1px solid "+scc.ISCButtonBorderHover+";backgroundColor:"+scc.ISCButtonBorderNormal+";",
downstyle: "border:1px solid "+scc.ISCButtonBorderDown+";backgroundColor:"+scc.ISCButtonDownBackground+";"},
{MouseDown: SocialCalc.DoButtonCmd, command: spreadsheet.Buttons[button].command});
}
// create formula bar
spreadsheet.formulabarDiv = document.createElement("div");
spreadsheet.formulabarDiv.style.height = spreadsheet.formulabarheight + "px";
spreadsheet.formulabarDiv.innerHTML = '<input type="text" size="60" value=""> '; //'<textarea rows="4" cols="60" style="z-index:5;background-color:white;position:relative;"></textarea> ';
spreadsheet.spreadsheetDiv.appendChild(spreadsheet.formulabarDiv);
var inputbox = new SocialCalc.InputBox(spreadsheet.formulabarDiv.firstChild, spreadsheet.editor);
for (button in spreadsheet.formulabuttons) {
bele = document.createElement("img");
bele.id = spreadsheet.idPrefix+button;
bele.src = spreadsheet.imagePrefix+spreadsheet.formulabuttons[button].image;
bele.style.verticalAlign = "middle";
bele.style.border = "1px solid #FFF";
bele.style.marginLeft = "4px";
SocialCalc.TooltipRegister(bele, SCLoc(spreadsheet.formulabuttons[button].tooltip), {});
SocialCalc.ButtonRegister(bele,
{normalstyle: "border:1px solid #FFF;backgroundColor:#FFF;",
hoverstyle: "border:1px solid #CCC;backgroundColor:#FFF;",
downstyle: "border:1px solid #000;backgroundColor:#FFF;"},
{MouseDown: spreadsheet.formulabuttons[button].command});
spreadsheet.formulabarDiv.appendChild(bele);
}
// initialize tabs that need it
for (i=0; i<tabs.length; i++) { // execute any tab-specific initialization code
if (tabs[i].oncreate) {
tabs[i].oncreate(spreadsheet, tabs[i].name);
}
socialcalc/socialcalcspreadsheetcontrol.js view on Meta::CPAN
ele.src=spreadsheet.imagePrefix+"moveinsertoff.gif";
}
break;
case "swapcolors":
sheet = spreadsheet.sheet;
cell = sheet.GetAssuredCell(editor.ecell.coord);
defaultcolor = sheet.attribs.defaultcolor ? sheet.colors[sheet.attribs.defaultcolor] : "rgb(0,0,0)";
defaultbgcolor = sheet.attribs.defaultbgcolor ? sheet.colors[sheet.attribs.defaultbgcolor] : "rgb(255,255,255)";
color = cell.color ? sheet.colors[cell.color] : defaultcolor; // get color
if (color == defaultbgcolor) color = ""; // going to swap, so if same as background default, use default
bgcolor = cell.bgcolor ? sheet.colors[cell.bgcolor] : defaultbgcolor;
if (bgcolor == defaultcolor) bgcolor = ""; // going to swap, so if same as foreground default, use default
spreadsheet.ExecuteCommand("set %C color "+bgcolor+"%Nset %C bgcolor "+color, "");
break;
default:
combostr = SocialCalc.SpreadsheetCmdLookup[which] || "";
sstr = SocialCalc.SpreadsheetCmdSLookup[which] || "";
spreadsheet.ExecuteCommand(combostr, sstr);
break;
socialcalc/socialcalcspreadsheetcontrol.js view on Meta::CPAN
var main = document.createElement("div");
main.id = idp+"dialog";
main.style.position = "absolute";
var vp = SocialCalc.GetViewportInfo();
main.style.top = (vp.height/3)+"px";
main.style.left = (vp.width/3)+"px";
main.style.zIndex = 100;
main.style.backgroundColor = "#FFF";
main.style.border = "1px solid black";
main.style.width = "400px";
str = '<table cellspacing="0" cellpadding="0" style="border-bottom:1px solid black;"><tr>'+
'<td style="font-size:10px;cursor:default;width:100%;background-color:#999;color:#FFF;">'+" %loc!Function List!"+'</td>'+
'<td style="font-size:10px;cursor:default;color:#666;" onclick="SocialCalc.SpreadsheetControl.HideFunctions();"> X </td></tr></table>'+
'<div style="background-color:#DDD;">'+str+'</div>';
str = SocialCalc.LocalizeSubstrings(str);
main.innerHTML = str;
SocialCalc.DragRegister(main.firstChild.firstChild.firstChild.firstChild, true, true, {MouseDown: SocialCalc.DragFunctionStart, MouseMove: SocialCalc.DragFunctionPosition,
MouseUp: SocialCalc.DragFunctionPosition,
Disabled: null, positionobj: main});
spreadsheet.spreadsheetDiv.appendChild(main);
socialcalc/socialcalcspreadsheetcontrol.js view on Meta::CPAN
var main = document.createElement("div");
main.id = idp+"dialog";
main.style.position = "absolute";
var vp = SocialCalc.GetViewportInfo();
main.style.top = (vp.height/3)+"px";
main.style.left = (vp.width/3)+"px";
main.style.zIndex = 100;
main.style.backgroundColor = "#FFF";
main.style.border = "1px solid black";
main.style.width = "400px";
main.innerHTML = '<table cellspacing="0" cellpadding="0" style="border-bottom:1px solid black;"><tr>'+
'<td style="font-size:10px;cursor:default;width:100%;background-color:#999;color:#FFF;">'+
SCLocSS(" %loc!Multi-line Input Box!")+'</td>'+
'<td style="font-size:10px;cursor:default;color:#666;" onclick="SocialCalc.SpreadsheetControl.HideMultiline();"> X </td></tr></table>'+
'<div style="background-color:#DDD;">'+str+'</div>';
SocialCalc.DragRegister(main.firstChild.firstChild.firstChild.firstChild, true, true, {MouseDown: SocialCalc.DragFunctionStart, MouseMove: SocialCalc.DragFunctionPosition,
MouseUp: SocialCalc.DragFunctionPosition,
Disabled: null, positionobj: main});
spreadsheet.spreadsheetDiv.appendChild(main);
ele = document.getElementById(idp+"textarea");
ele.focus();
SocialCalc.CmdGotFocus(ele);
socialcalc/socialcalcspreadsheetcontrol.js view on Meta::CPAN
var main = document.createElement("div");
main.id = idp+"dialog";
main.style.position = "absolute";
var vp = SocialCalc.GetViewportInfo();
main.style.top = (vp.height/3)+"px";
main.style.left = (vp.width/3)+"px";
main.style.zIndex = 100;
main.style.backgroundColor = "#FFF";
main.style.border = "1px solid black";
main.style.width = "400px";
main.innerHTML = '<table cellspacing="0" cellpadding="0" style="border-bottom:1px solid black;"><tr>'+
'<td style="font-size:10px;cursor:default;width:100%;background-color:#999;color:#FFF;">'+" "+SCLoc("Link Input Box")+'</td>'+
'<td style="font-size:10px;cursor:default;color:#666;" onclick="SocialCalc.SpreadsheetControl.HideLink();"> X </td></tr></table>'+
'<div style="background-color:#DDD;">'+str+'</div>';
SocialCalc.DragRegister(main.firstChild.firstChild.firstChild.firstChild, true, true, {MouseDown: SocialCalc.DragFunctionStart, MouseMove: SocialCalc.DragFunctionPosition,
MouseUp: SocialCalc.DragFunctionPosition,
Disabled: null, positionobj: main});
spreadsheet.spreadsheetDiv.appendChild(main);
ele = document.getElementById(idp+"url");
ele.focus();
SocialCalc.CmdGotFocus(ele);
socialcalc/socialcalcspreadsheetcontrol.js view on Meta::CPAN
if (!ele || !attribs || !attribs.panelobj) return;
var idPrefix = SocialCalc.CurrentSpreadsheetControlObject.idPrefix;
var c = attribs.panelobj.name == "cell" ? "c" : "";
var v, a, parts, str1, str2, i;
parts = sc.defaultCellLayout.match(/^padding.(\S+) (\S+) (\S+) (\S+).vertical.align.(\S+);$/) || [];
var cv = {color: ["textcolor"], backgroundColor: ["bgcolor", "#FFF"],
fontSize: ["fontsize", sc.defaultCellFontSize], fontFamily: ["fontfamily"],
paddingTop: ["padtop", parts[1]], paddingRight: ["padright", parts[2]],
paddingBottom: ["padbottom", parts[3]], paddingLeft: ["padleft", parts[4]],
verticalAlign: ["alignvert", parts[5]]};
for (a in cv) {
v = SocialCalc.Popup.GetValue(idPrefix+c+cv[a][0]) || cv[a][1] || "";
ele.style[a] = v;
}
socialcalc/socialcalcspreadsheetcontrol.js view on Meta::CPAN
if (whichpart.length > 0) {
strtoedit = SocialCalc.special_chars(SocialCalc.OtherSaveParts[whichpart] || "");
}
else {
strtoedit = "Listing of Parts\n";
for (partname in SocialCalc.OtherSaveParts) {
strtoedit += SocialCalc.special_chars("\nPart: "+partname+"\n=====\n"+SocialCalc.OtherSaveParts[partname]+"\n");
}
}
var editbox = document.createElement("div");
editbox.style.cssText = "position:absolute;z-index:500;width:300px;height:300px;left:100px;top:200px;border:1px solid black;background-color:#EEE;text-align:center;";
editbox.id = "socialcalc-editbox";
editbox.innerHTML = whichpart+'<br><br><textarea id="socialcalc-editbox-textarea" style="width:250px;height:200px;">'+
strtoedit + '</textarea><br><br><input type=button ' +
'onclick="SocialCalc.CtrlSEditorDone (\'socialcalc-editbox\', \''+whichpart+'\');" value="OK">';
document.body.appendChild(editbox);
var ebta = document.getElementById("socialcalc-editbox-textarea");
ebta.focus();
SocialCalc.CmdGotFocus(ebta);
socialcalc/socialcalctableeditor.js view on Meta::CPAN
td.appendChild(editor.verticaltablecontrol.main);
tr.appendChild(td);
tr = document.createElement("tr");
tbody.appendChild(tr);
td = document.createElement("td");
td.appendChild(editor.horizontaltablecontrol.main);
tr.appendChild(td);
td = document.createElement("td"); // logo display: Required by CPAL License for this code!
td.style.background="url("+editor.imageprefix+"logo.gif) no-repeat center center";
td.innerHTML = "<div style='cursor:pointer;font-size:1px;'><img src='"+editor.imageprefix+"1x1.gif' border='0' width='18' height='18'></div>";
tr.appendChild(td);
editor.logo = td;
AssignID(editor, editor.logo, "logo");
SocialCalc.TooltipRegister(td.firstChild.firstChild, "SocialCalc", null);
editor.toplevel.appendChild(editor.layouttable);
if (!editor.noEdit) {
editor.inputEcho = new SocialCalc.InputEcho(editor);
socialcalc/socialcalctableeditor.js view on Meta::CPAN
mouseinfo.mousedownclientx = clientX;
var sizedisplay = document.createElement("div");
mouseinfo.mouseresizedisplay = sizedisplay;
sizedisplay.style.width = "auto";
sizedisplay.style.position = "absolute";
sizedisplay.style.zIndex = 100;
sizedisplay.style.top = (editor.headposition.top+0)+"px";
sizedisplay.style.left = editor.colpositions[result.coltoresize]+"px";
sizedisplay.innerHTML = '<table cellpadding="0" cellspacing="0"><tr><td style="height:100px;'+
'border:1px dashed black;background-color:white;width:' +
(editor.context.colwidth[mouseinfo.mouseresizecolnum]-2) + 'px;"> </td>'+
'<td><div style="font-size:small;color:white;background-color:gray;padding:4px;">'+
editor.context.colwidth[mouseinfo.mouseresizecolnum] + '</div></td></tr></table>';
SocialCalc.setStyles(sizedisplay.firstChild.lastChild.firstChild.childNodes[0], "filter:alpha(opacity=85);opacity:.85;"); // so no warning msg with Firefox about filter
editor.toplevel.appendChild(sizedisplay);
// Event code from JavaScript, Flanagan, 5th Edition, pg. 422
if (document.addEventListener) { // DOM Level 2 -- Firefox, et al
document.addEventListener("mousemove", SocialCalc.ProcessEditorColsizeMouseMove, true); // capture everywhere
document.addEventListener("mouseup", SocialCalc.ProcessEditorColsizeMouseUp, true); // capture everywhere
}
socialcalc/socialcalctableeditor.js view on Meta::CPAN
var viewport = SocialCalc.GetViewportInfo();
var clientX = event.clientX + viewport.horizontalScroll;
var newsize = (editor.context.colwidth[mouseinfo.mouseresizecolnum]-0) + (clientX - mouseinfo.mousedownclientx);
if (newsize < SocialCalc.Constants.defaultMinimumColWidth) newsize = SocialCalc.Constants.defaultMinimumColWidth;
var sizedisplay = mouseinfo.mouseresizedisplay;
// sizedisplay.firstChild.lastChild.firstChild.childNodes[1].firstChild.innerHTML = newsize+"";
// sizedisplay.firstChild.lastChild.firstChild.childNodes[0].firstChild.style.width = (newsize-2)+"px";
sizedisplay.innerHTML = '<table cellpadding="0" cellspacing="0"><tr><td style="height:100px;'+
'border:1px dashed black;background-color:white;width:' + (newsize-2) + 'px;"> </td>'+
'<td><div style="font-size:small;color:white;background-color:gray;padding:4px;">'+
newsize + '</div></td></tr></table>';
SocialCalc.setStyles(sizedisplay.firstChild.lastChild.firstChild.childNodes[0], "filter:alpha(opacity=85);opacity:.85;"); // so no warning msg with Firefox about filter
if (event.stopPropagation) event.stopPropagation(); // DOM Level 2
else event.cancelBubble = true; // IE 5+
if (event.preventDefault) event.preventDefault(); // DOM Level 2
else event.returnValue = false; // IE 5+
return;
socialcalc/socialcalctableeditor.js view on Meta::CPAN
// Now do the table controls
editor.verticaltablecontrol.ComputeTableControlPositions();
editor.horizontaltablecontrol.ComputeTableControlPositions();
}
//
// ScheduleRender(editor)
//
// Do a series of timeouts to render the sheet, wait for background layout and
// rendering by the browser, and then update editor visuals, sliders, etc.
//
SocialCalc.ScheduleRender = function(editor) {
if (editor.timeout) window.clearTimeout(editor.timeout); // in case called more than once, just use latest
SocialCalc.EditorSheetStatusCallback(null, "schedrender", null, editor);
SocialCalc.EditorStepInfo.editor = editor;
editor.timeout = window.setTimeout(SocialCalc.DoRenderStep, 1);
socialcalc/socialcalctableeditor.js view on Meta::CPAN
if (editor.noEdit) return; // leave us with nothing
this.editor = editor; // the TableEditor this belongs to
this.noCursorSuffix = false;
this.movedmouse = false; // used to detect no-op
this.draghandle = document.createElement("div");
SocialCalc.setStyles(this.draghandle, "display:none;position:absolute;zIndex:8;border:1px solid white;width:4px;height:4px;fontSize:1px;backgroundColor:#0E93D8;cursor:default;");
this.draghandle.innerHTML = ' ';
editor.toplevel.appendChild(this.draghandle);
SocialCalc.AssignID(editor, this.draghandle, "draghandle");
var imagetype = "png";
if (navigator.userAgent.match(/MSIE 6\.0/)) {
imagetype = "gif";
}
this.dragpalette = document.createElement("div");
SocialCalc.setStyles(this.dragpalette, "display:none;position:absolute;zIndex:8;width:90px;height:90px;fontSize:1px;textAlign:center;cursor:default;"+
"backgroundImage:url("+SocialCalc.Constants.defaultImagePrefix+"drag-handles."+imagetype+");");
this.dragpalette.innerHTML = ' ';
editor.toplevel.appendChild(this.dragpalette);
SocialCalc.AssignID(editor, this.dragpalette, "dragpalette");
this.dragtooltip = document.createElement("div");
SocialCalc.setStyles(this.dragtooltip, "display:none;position:absolute;zIndex:9;border:1px solid black;width:100px;height:auto;fontSize:10px;backgroundColor:#FFFFFF;");
this.dragtooltip.innerHTML = ' ';
editor.toplevel.appendChild(this.dragtooltip);
SocialCalc.AssignID(editor, this.dragtooltip, "dragtooltip");
this.fillinghandle = document.createElement("div");
SocialCalc.setStyles(this.fillinghandle, "display:none;position:absolute;zIndex:9;border:1px solid black;width:auto;height:14px;fontSize:10px;backgroundColor:#FFFFFF;");
this.fillinghandle.innerHTML = ' ';
editor.toplevel.appendChild(this.fillinghandle);
SocialCalc.AssignID(editor, this.fillinghandle, "fillinghandle");
if (this.draghandle.addEventListener) { // DOM Level 2 -- Firefox, et al
this.draghandle.addEventListener("mousemove", SocialCalc.CellHandlesMouseMoveOnHandle, false);
this.dragpalette.addEventListener("mousedown", SocialCalc.CellHandlesMouseDown, false);
this.dragpalette.addEventListener("mousemove", SocialCalc.CellHandlesMouseMoveOnHandle, false);
}
else if (this.draghandle.attachEvent) { // IE 5+
socialcalc/socialcalctableeditor.js view on Meta::CPAN
var imageprefix = control.editor.imageprefix;
var vh = control.vertical ? "v" : "h";
control.main = document.createElement("div");
s = control.main.style;
s.height = (control.vertical ? control.size : control.controlthickness)+"px";
s.width = (control.vertical ? control.controlthickness : control.size)+"px";
s.zIndex = 0;
setStyles(control.main, scc.TCmainStyle);
s.backgroundImage="url("+imageprefix+"main-"+vh+".gif)";
if (scc.TCmainClass) control.main.className = scc.TCmainClass;
control.main.style.display="none"; // wait for layout
control.endcap = document.createElement("div");
s = control.endcap.style;
s.height = control.controlthickness+"px";
s.width = control.controlthickness+"px";
s.zIndex = 1;
s.overflow = "hidden"; // IE will make the DIV at least font-size height...so use this
s.position = "absolute";
setStyles(control.endcap, scc.TCendcapStyle);
s.backgroundImage="url("+imageprefix+"endcap-"+vh+".gif)";
if (scc.TCendcapClass) control.endcap.className = scc.TCendcapClass;
AssignID(control.editor, control.endcap, "endcap"+vh);
control.main.appendChild(control.endcap);
control.paneslider = document.createElement("div");
s = control.paneslider.style;
s.height = (control.vertical ? control.sliderthickness : control.controlthickness)+"px";
s.overflow = "hidden"; // IE will make the DIV at least font-size height...so use this
s.width = (control.vertical ? control.controlthickness : control.sliderthickness)+"px";
s.position = "absolute";
s[control.vertical?"top":"left"] = "4px";
s.zIndex = 3;
setStyles(control.paneslider, scc.TCpanesliderStyle);
s.backgroundImage="url("+imageprefix+"paneslider-"+vh+".gif)";
if (scc.TCpanesliderClass) control.paneslider.className = scc.TCpanesliderClass;
AssignID(control.editor, control.paneslider, "paneslider"+vh);
TooltipRegister(control.paneslider, "paneslider", vh);
functions = {MouseDown:SocialCalc.TCPSDragFunctionStart,
MouseMove: SocialCalc.TCPSDragFunctionMove,
MouseUp: SocialCalc.TCPSDragFunctionStop,
Disabled: function() {return control.editor.busy;}};
functions.control = control; // make sure this is there
socialcalc/socialcalctableeditor.js view on Meta::CPAN
control.main.appendChild(control.paneslider);
control.lessbutton = document.createElement("div");
s = control.lessbutton.style;
s.height = (control.vertical ? control.buttonthickness : control.controlthickness)+"px";
s.width = (control.vertical ? control.controlthickness : control.buttonthickness)+"px";
s.zIndex = 2;
s.overflow = "hidden"; // IE will make the DIV at least font-size height...so use this
s.position = "absolute";
setStyles(control.lessbutton, scc.TClessbuttonStyle);
s.backgroundImage="url("+imageprefix+"less-"+vh+"n.gif)"
if (scc.TClessbuttonClass) control.lessbutton.className = scc.TClessbuttonClass;
AssignID(control.editor, control.lessbutton, "lessbutton"+vh);
params = {repeatwait:scc.TClessbuttonRepeatWait, repeatinterval:scc.TClessbuttonRepeatInterval,
normalstyle: "backgroundImage:url("+imageprefix+"less-"+vh+"n.gif);",
downstyle: "backgroundImage:url("+imageprefix+"less-"+vh+"d.gif);",
hoverstyle: "backgroundImage:url("+imageprefix+"less-"+vh+"h.gif);"};
functions = {MouseDown:function(){if(!control.editor.busy) control.editor.ScrollRelative(control.vertical, -1);},
Repeat:function(){if(!control.editor.busy) control.editor.ScrollRelative(control.vertical, -1);},
Disabled: function() {return control.editor.busy;}};
SocialCalc.ButtonRegister(control.lessbutton, params, functions);
control.main.appendChild(control.lessbutton);
control.morebutton = document.createElement("div");
s = control.morebutton.style;
s.height = (control.vertical ? control.buttonthickness : control.controlthickness)+"px";
s.width = (control.vertical ? control.controlthickness : control.buttonthickness)+"px";
s.zIndex = 2;
s.overflow = "hidden"; // IE will make the DIV at least font-size height...so use this
s.position = "absolute";
setStyles(control.morebutton, scc.TCmorebuttonStyle);
s.backgroundImage="url("+imageprefix+"more-"+vh+"n.gif)"
if (scc.TCmorebuttonClass) control.morebutton.className = scc.TCmorebuttonClass;
AssignID(control.editor, control.morebutton, "morebutton"+vh);
params = {repeatwait:scc.TCmorebuttonRepeatWait, repeatinterval:scc.TCmorebuttonRepeatInterval,
normalstyle: "backgroundImage:url("+imageprefix+"more-"+vh+"n.gif);",
downstyle: "backgroundImage:url("+imageprefix+"more-"+vh+"d.gif);",
hoverstyle: "backgroundImage:url("+imageprefix+"more-"+vh+"h.gif);"};
functions = {MouseDown:function(){if(!control.editor.busy) control.editor.ScrollRelative(control.vertical, +1);},
Repeat:function(){if(!control.editor.busy) control.editor.ScrollRelative(control.vertical, +1);},
Disabled: function() {return control.editor.busy;}};
SocialCalc.ButtonRegister(control.morebutton, params, functions);
control.main.appendChild(control.morebutton);
control.scrollarea = document.createElement("div");
s = control.scrollarea.style;
s.height = control.controlthickness+"px";
s.width = control.controlthickness+"px";
s.zIndex = 1;
s.overflow = "hidden"; // IE will make the DIV at least font-size height...so use this
s.position = "absolute";
setStyles(control.scrollarea, scc.TCscrollareaStyle);
s.backgroundImage="url("+imageprefix+"scrollarea-"+vh+".gif)";
if (scc.TCscrollareaClass) control.scrollarea.className = scc.TCscrollareaClass;
AssignID(control.editor, control.scrollarea, "scrollarea"+vh);
params = {repeatwait:scc.TCscrollareaRepeatWait, repeatinterval:scc.TCscrollareaRepeatWait};
functions = {MouseDown:SocialCalc.ScrollAreaClick, Repeat:SocialCalc.ScrollAreaClick,
Disabled: function() {return control.editor.busy;}};
functions.control = control;
SocialCalc.ButtonRegister(control.scrollarea, params, functions);
control.main.appendChild(control.scrollarea);
control.thumb = document.createElement("div");
s = control.thumb.style;
s.height = (control.vertical ? control.thumbthickness : control.controlthickness)+"px";
s.width = (control.vertical ? control.controlthickness : control.thumbthickness)+"px";
s.zIndex = 2;
s.overflow = "hidden"; // IE will make the DIV at least font-size height...so use this
s.position = "absolute";
setStyles(control.thumb, scc.TCthumbStyle);
control.thumb.style.backgroundImage="url("+imageprefix+"thumb-"+vh+"n.gif)";
if (scc.TCthumbClass) control.thumb.className = scc.TCthumbClass;
AssignID(control.editor, control.thumb, "thumb"+vh);
functions = {MouseDown:SocialCalc.TCTDragFunctionStart,
MouseMove: SocialCalc.TCTDragFunctionMove,
MouseUp: SocialCalc.TCTDragFunctionStop,
Disabled: function() {return control.editor.busy;}};
functions.control = control; // make sure this is there
SocialCalc.DragRegister(control.thumb, control.vertical, !control.vertical, functions);
params = {normalstyle: "backgroundImage:url("+imageprefix+"thumb-"+vh+"n.gif)", name:"Thumb",
downstyle: "backgroundImage:url("+imageprefix+"thumb-"+vh+"d.gif)",
hoverstyle: "backgroundImage:url("+imageprefix+"thumb-"+vh+"h.gif)"};
SocialCalc.ButtonRegister(control.thumb, params, null); // give it button-like visual behavior
control.main.appendChild(control.thumb);
return control.main;
}
//
// ScrollAreaClick - Button function to process pageup/down clicks
socialcalc/socialcalctableeditor.js view on Meta::CPAN
var editor = dobj.functionobj.control.editor;
var scc = SocialCalc.Constants;
SocialCalc.DragFunctionStart(event, draginfo, dobj);
draginfo.trackingline = document.createElement("div");
draginfo.trackingline.style.height = dobj.vertical ? scc.TCPStrackinglineThickness :
(editor.tableheight-(editor.headposition.top-editor.gridposition.top))+"px";
draginfo.trackingline.style.width = dobj.vertical ?
(editor.tablewidth-(editor.headposition.left-editor.gridposition.left))+"px" : scc.TCPStrackinglineThickness;
draginfo.trackingline.style.backgroundImage="url("+editor.imageprefix+"trackingline-"+(dobj.vertical?"v":"h")+".gif)";;
if (scc.TCPStrackinglineClass) draginfo.trackingline.className = scc.TCPStrackinglineClass;
SocialCalc.setStyles(draginfo.trackingline, scc.TCPStrackinglineStyle);
if (dobj.vertical) {
row = SocialCalc.Lookup(draginfo.clientY+dobj.functionobj.control.sliderthickness, editor.rowpositions);
draginfo.trackingline.style.top = (editor.rowpositions[row] || editor.headposition.top)+"px";
draginfo.trackingline.style.left = editor.headposition.left+"px";
if (editor.context.rowpanes.length-1) { // has 2 already
editor.context.SetRowPaneFirstLast(1, editor.context.rowpanes[0].last+1, editor.context.rowpanes[0].last+1);
editor.FitToEditTable();
socialcalc/ssctrltest1.html view on Meta::CPAN
<script type="text/javascript" src="socialcalctableeditor.js"></script>
<script type="text/javascript" src="formatnumber2.js"></script>
<script type="text/javascript" src="formula1.js"></script>
<script type="text/javascript" src="socialcalcpopup.js"></script>
<script type="text/javascript" src="socialcalcspreadsheetcontrol.js"></script>
<link rel="stylesheet" type="text/css" href="socialcalc.css">
<style>
body
{font-family:verdana,helvetica,sans-serif;font-size:small;}
.testclass {border:2px dotted red;}
.testclass2 {background-image:url(images/sc-logo.gif);}
.smaller {font-size:smaller;}
.hide {display:none;}
</style>
</head>
<body onresize="if (typeof doresize != 'undefined') doresize();" onload="
if (typeof localStorage != 'undefined') {
var saved = localStorage.getItem(location.href);
if (saved) {
savestr.value = saved;
doreload();
}
}
">
<form name="f0" action="" method="POST">
<div style="padding:6px;background-color:#80A9F3;">
<span style="font-weight:bold;color:white;">ssctrltest1.html</span>
<input type="button" name="savespreadsheet" value="Save" onclick="dosave();" class="smaller">
<input type="submit" name="newcolors" value="New Colors" onclick="document.f0.action='?4C808';" class="smaller">
<input class="hide" type="button" value="Recalc" onclick="spreadsheet.ExecuteCommand('recalc', '');" class="smaller">
<input class="hide" type="button" value="Redisplay" onclick="spreadsheet.editor.ScheduleRender();" class="smaller">
<input class="hide" type="button" value="Settings" onclick="alert(sv=spreadsheet.editor.SaveEditorSettings());" class="smaller">
<input type="button" value="Reload" onclick="doreload();" class="smaller">
<input class="hide" type="button" value="CellHTMLSave" onclick="alert(spreadsheet.CreateCellHTMLSave(null));" class="smaller">
<input class="hide" type="button" value="CellHTML A1" onclick="alert(spreadsheet.CreateCellHTML('A1'));" class="smaller">
<input class="hide" type="button" value="SheetHTML" onclick="alert(spreadsheet.CreateSheetHTML());" class="smaller">
socialcalc/ssctrltest1.html view on Meta::CPAN
// SocialCalc.ConstantsSetClasses("");
var scc = SocialCalc.Constants;
var b1 = window.location.search.charAt(1) || "4";
var b2 = window.location.search.charAt(2) || "C";
var b3 = window.location.search.charAt(3) || "8";
var b4 = window.location.search.charAt(4) || "9";
var b5 = window.location.search.charAt(5) || "8";
scc.SCToolbarbackground = "background-color:#4040"+b1+"0;";
scc.SCTabbackground = "background-color:#CC"+b2+";";
scc.SCTabselectedCSS = "font-size:small;padding:6px 30px 6px 8px;color:#FFF;background-color:#4040"+b1+"0;cursor:default;border-right:1px solid #CC"+b2+";";
scc.SCTabplainCSS = "font-size:small;padding:6px 30px 6px 8px;color:#FFF;background-color:#8080"+b3+"0;cursor:default;border-right:1px solid #CC"+b2+";";
scc.SCToolbartext = "font-size:x-small;font-weight:bold;color:#FFF;padding-bottom:4px;";
scc.ISCButtonBorderNormal = "#4040"+b1+"0";
scc.ISCButtonBorderHover = "#99"+b4+"";
scc.ISCButtonBorderDown = "#FFF";
scc.ISCButtonDownBackground = "#88"+b5+"";
SocialCalc.Popup.LocalizeString = SocialCalc.LocalizeString; // needed for localization
var spreadsheet = new SocialCalc.SpreadsheetControl();
var savestr = document.getElementById("savestr");
socialcalc/third-party/Socket.IO-node/example/chat-ssl.html view on Meta::CPAN
<h1>Sample chat client</h1>
<div id="chat"><p>Connecting...</p></div>
<form id="form" onsubmit="send(); return false">
<input type="text" autocomplete="off" id="text"><input type="submit" value="Send">
</form>
<style>
#chat { height: 300px; overflow: auto; width: 800px; border: 1px solid #eee; font: 13px Helvetica, Arial; }
#chat p { padding: 8px; margin: 0; }
#chat p:nth-child(odd) { background: #F6F6F6; }
#form { width: 782px; background: #333; padding: 5px 10px; display: none; }
#form input[type=text] { width: 700px; padding: 5px; background: #fff; border: 1px solid #fff; }
#form input[type=submit] { cursor: pointer; background: #999; border: none; padding: 6px 8px; -moz-border-radius: 8px; -webkit-border-radius: 8px; margin-left: 5px; text-shadow: 0 1px 0 #fff; }
#form input[type=submit]:hover { background: #A2A2A2; }
#form input[type=submit]:active { position: relative; top: 2px; }
</style>
</body>
</html>
socialcalc/third-party/Socket.IO-node/example/chat.html view on Meta::CPAN
<h1>Sample chat client</h1>
<div id="chat"><p>Connecting...</p></div>
<form id="form" onSubmit="send(); return false">
<input type="text" autocomplete="off" id="text"><input type="submit" value="Send">
</form>
<style>
#chat { height: 300px; overflow: auto; width: 800px; border: 1px solid #eee; font: 13px Helvetica, Arial; }
#chat p { padding: 8px; margin: 0; }
#chat p:nth-child(odd) { background: #F6F6F6; }
#form { width: 782px; background: #333; padding: 5px 10px; display: none; }
#form input[type=text] { width: 700px; padding: 5px; background: #fff; border: 1px solid #fff; }
#form input[type=submit] { cursor: pointer; background: #999; border: none; padding: 6px 8px; -moz-border-radius: 8px; -webkit-border-radius: 8px; margin-left: 5px; text-shadow: 0 1px 0 #fff; }
#form input[type=submit]:hover { background: #A2A2A2; }
#form input[type=submit]:active { position: relative; top: 2px; }
</style>
</body>
</html>