Notes and Links
- Objectsheet Application Notes
- Objectsheet Browser Quirks
- Extension hooks
- History
- Recent Spreadsheet Advances
- Prior Spreadsheet Alternatives
- Links
1. Objectsheet Application Notes
This is an experimental application. As such, it has the
following limitations:
- Compatible Browsers This application currently works with Mozilla Firefox, Internet Explorer, and Safari browsers. Opera and other browsers have not yet been tested.
- Performance While the current Table implementation is scalable to several hundred cells displayed (or several thousand cells hidden), performance slows as sheet size increases beyond these amounts. There are approaches for optimizing performance, but the best solution is either optimized javascript or a higher performance application environment. [I've considered other platforms and languages, like Python, but I've not found a cross-platform GUI component that can easily manipulate large grids of formattable cells.]
- Feature access by menu The Objectsheet has many features that exist but are not yet exposed in the menu system (e.g., dialog box to set font attributes vs. typing css directly into "style" cells). These features are embedded in existing Objectsheet functions and methods and documented in the Objectsheet Quick Reference. Exposing these in the menu system should be straightforward.
- Graphs and Charts There is currently no capability for producing drawings, graphs, charts. A flexible approach for these could use the Scalable Vector Graphics (SVG) standard. Such graphs would be a new type of Section that generates plotted lines from arrays from existing sections, using a Template that holds properties of the graph (axes, gridlines, labels, axis categories, etc.). An existing Javascript+SVG plotting library could be easily integrated (for instance PlotKit).
- Table transposing In Tables, objects are always in rows with each property a column. Transposing tables (so that objects in columns, properties in rows) is not yet implemented.
- Remote data integration The Objectsheet can be programmed to integrate live data from the World Wide Web using embedded HTTP requests. An example of this is the DBpedia Sparql query example. While the capability exists, helper functions and tools can further simplify access and integration of external data. Such tools are a future capability.
- Cell Merging The Objectsheet Table currently does not have some of the spreadsheet's inter-cell features like merged cells and vertically aligned text. The need for these features is somewhat reduced by using HTML sections.
An alternative type of Table section could be developed that provides these formatting features but fewer computational/data features is also possible.
- Unintegrated cells The Objectsheet Table's coherent data structure places some limits on free-form capabilities. For instance, it is difficult to split tables into parts which are stacked together (e.g., monthly sales results with embedded quarterly subtotals). Future ideas for the Objectsheet include representing multidimensional or categorized data, a way to designate individual Table rows as not being part of the Table's data structure (to show additional titles or notes, subtotals, counts, etc.), and a means to group and align separate Sections graphically so that things like subtotals can be done by stacking individual Sections.
- Collaboration and Wikis Features such as permissions, diff between files, and versioning for Objectsheet files are not implemented within the Objectsheet. Embedding Objectsheet models within existing Wiki platforms should be easy, but it requires the Wiki platform to either accept Javascript content or to implement a special Objectsheet wiki syntax.
- Other data structures Many data structures are hierarchical or multidimensional. There are concepts for integrating such data in the Objectsheet, but these are not yet implemented.
- The undo/redo capability is limited. Sequences of table cell edits can be undone, but large scale manipulations (deleting entire rows and Tables) are currently not part of the undo/redo infrastructure.
- Edit interface Currently, you edit Objectsheet tables simply by clicking directly in a cell. Avoiding a separate "cell edit mode" simplifies the Objectsheet compared to traditional spreadsheets, but makes selecting rectangular areas within Tables more cumbersome. While a separate edit mode could be easily created (via a new "cell display" type), the value of a separate edit mode (and the value of simplifying rectangular range selection) is not clear.
2. Objectsheet Browser-specific quirks
While the Objectsheet application works well with Mozilla and Internet Explorer, some minor browser issues remain.
Internet Explorer
- Garbage collection issues cause some memory leaks in the Objectsheet application. If you navigate between pages that contain Objectsheet tables or reload a page several times, performance may slow.
- Removing rows in a Table sometimes causes a table to be cut off on the right. This is a browser rendering issue. If this happens, you can fix it by mousing over any of the icons ("S", "P", "f()", "X", etc.) at the top of the section.
Mozilla
- The Control-enter and Control-0 through Control-9 keyboard shortcuts do not yet work with Mozilla. Other keyboard shortcuts may be overridden by onadd-ons you may have
- When using Firefox 3, if scrolling does not work right (e.g., scrolling jumps back to top of screen), type "about:config" in your browser's location bar, then set general.autoScroll to false.
Safari
- Files can be loaded, but local directory browsing and saving of Objectsheet files to a local directory is not yet impelemented (requires a Java applet). In lieu of saving directly, a file's source can be easily displayed and saved by copying into a text editor.
3. Objectsheet Extension Hooks
There are several ways to extend the Objectsheet application. New functions and classes can be placed into scratch sections, added to userExtensions.js (located in same directory as objectsheet.html), or placed in your own Javascript file and read in by your application. The extensions include:
| Task | How |
| Develop new types of sections (e.g., display bar and line graphs) |
Sections have a defined API (see API comments in os_mgr.js). Any Javascript class that implements this interface can be added to the files ingested by the Objectsheet. You can add such a class to userExtensions.js |
| Create new types of Table display cells |
The existing cell display types within TableCell.js can be expanded by following the TableCell interface (see TableCell.js). Possible display types include up/down arrows or sliders to change a number or enumerated value, image buttons, etc. You can place new display cell types in userExtensions.js |
| Add common helper functions |
To add a function that you want to be available each time you launch the Objectsheet, add it to userExtensions.js. |
| Add application-specific functions and Classes |
To add a complex function or Javascript Class to individual Objectsheets, create a new .js file, place your function(s) into it, then use includeObject(filepath) to a Scratch Section. To prevent loading the file each time the Objectsheet is calculated, go to the Sections menu and click the "Offline" checkbox for that Scratch Section. |
4. History of the Objectsheet
The Objectsheet and the ideas within it have developed over the past several years. Here are my early notes from 1999 on the idea of the Objectsheet. From 2001 there is an overview and an early prototype. The prototype is for Internet Explorer only.
5. Recent Advances in Spreadsheet Technology
Online, collaborative spreadsheets include Google Spreadsheets and Dan Bricklin's WikiCalc. These have advantages of accessibility, sharability, and do not require special client software.
A related category is the centralized spreadsheet management platform. These aim to extract data from sources within an enterprise and present them in spreadsheet format. Examples of these applications include Actuate
e.Spreadsheet and Satori Group's proCube.
Another open source alternative is SimpleSpreadsheet. It is a web-based spreadsheet using client-side Javascript syntax, HTML, and CSS in a "large grid of cells" environment with PHP serverside. Interesting features include hierarchical column and row names and embedded graphs (via PHP).
While these alternatives address data currency, collaboration, and integrity to make spreadsheeting easier, they do not address data fragilty or understandability, as the traditional grid of cells is still at the heart of these applications.
6. Prior Spreadsheet Alternatives
Lotus Improv [wikipedia]. Improv had several innovations (easily named data, multidimensional manipulation) but suffered from competion from within Lotus Corp. as well as feature discoverability issues [personal observation]. Other products in the spirit of Lotus Improv include Quantrix, a commercial product, and FlexiSheet, an open-source spreadsheet for the Mac.
Spreadsheet 2000 [wikipedia]. This application used small tables within a graphical context that whose relations to each other were shown graphically, but made managing complex models very difficult.
7. Links
Spreadsheet risks and how they can affect business
Spreadsheet Errors
General Spreadsheet History
|