function sheetnode_plugin_style::merge_annotation in Sheetnode 7.2
Same name and namespace in other branches
- 7 views/sheetnode_plugin_style.inc \sheetnode_plugin_style::merge_annotation()
Merge sheetnode annotations to plugin style.
1 call to sheetnode_plugin_style::merge_annotation()
- sheetnode_plugin_style::render_sheet in views/
sheetnode_plugin_style.inc - Render views plugin style.
File
- views/
sheetnode_plugin_style.inc, line 483
Class
- sheetnode_plugin_style
- Extentions for sheetnode plugin style.
Code
function merge_annotation(&$original) {
$annotation = db_query("SELECT value FROM {sheetnode_view} WHERE view_name = :name AND display_id = :id", array(
':name' => $this->view->name,
':id' => $this->view->display_handler->display->id,
))
->fetchField();
if ($annotation) {
$merge = socialcalc_parse($annotation);
// TODO - This is the wrong way to merge, because annotations will wind up
// on the wrong rows if the view contains new records or is sorted differently.
// What's needed is to associate each row with a record id to match them up when merging.
foreach ($merge['sheet']['cells'] as $coord => $cell) {
if (empty($original['sheet']['cells'][$coord])) {
$original['sheet']['cells'][$coord] = $cell;
// TODO - Import annotation styles into original.
}
}
// Adjust lastcol and lastrow.
$original['sheet']['attribs']['lastcol'] = max($original['sheet']['attribs']['lastcol'], $merge['sheet']['attribs']['lastcol']);
$original['sheet']['attribs']['lastrow'] = max($original['sheet']['attribs']['lastrow'], $merge['sheet']['attribs']['lastrow']);
}
}