Area::Caption => (Some(Left), Top, [8, 11], [1, 1]),
Area::Footer => (Some(Left), Top, [11, 8], [2, 3]),
Area::Corner => (Some(Left), Bottom, [8, 11], [1, 1]),
- Area::ColumnLabels => (Some(Left), Top, [8, 11], [1, 3]),
+ Area::ColumnLabels => (Some(Center), Top, [8, 11], [1, 3]),
Area::RowLabels => (Some(Left), Top, [8, 11], [1, 3]),
Area::Data => (None, Top, [8, 11], [1, 1]),
Area::Layers => (Some(Left), Bottom, [8, 11], [1, 3]),
);
}
pub fn build(self) -> PivotTable {
- let row_label_position = self.look.row_label_position;
let corner_text = false;
let mut table = PivotTable::new(self.title, self.look.clone());
let mut dimensions = Vec::with_capacity(self.dimensions.len());
self.output_footnotes(&self.collect_footnotes(tables.into_iter().flatten()));
OutputTables {
- title: None,
- layers: None,
+ title,
+ layers,
body,
- caption: None,
- footnotes: None,
+ caption,
+ footnotes,
}
}
) {
let v = !h;
let h_axis = &pt.axes[h.into()];
- let v_axis = &pt.axes[v.into()];
let v_size = pt.axis_label_depth(h.into());
let h_ofs = pt.axis_label_depth(v.into());
let n_columns = column_enumeration.len();
let dimension = DimensionBuilder::new(Axis3::X, bigger_group);
let mut pt = PivotTableBuilder::new(Value::new_text("Columns"), &[dimension]);
for i in 0..5 {
- pt.insert(&[i], Value::new_number(Some(i as f64)));
+ pt.insert(&[i], Value::new_integer(Some(i as f64)));
}
let mut driver = TextDriver::new(File::create("/dev/stdout").unwrap());
let mut pt = pt.build();
pt.transpose();
driver.write(&Arc::new(Item::new(Details::Table(Box::new(pt)))));
}
+
+#[test]
+fn pivot_table_2d() {
+ let mut a = GroupBuilder::new(Value::new_text("a"));
+ for name in ["a1", "a2", "a3"] {
+ a.push(Value::new_text(name));
+ }
+ let d1 = DimensionBuilder::new(Axis3::X, a);
+
+ let mut b = GroupBuilder::new(Value::new_text("b"));
+ for name in ["b1", "b2", "b3"] {
+ b.push(Value::new_text(name));
+ }
+ let d2 = DimensionBuilder::new(Axis3::X, b);
+
+ let mut pt = PivotTableBuilder::new(Value::new_text("Columns"), &[d1, d2]);
+ let mut i = 0;
+ for a in 0..3 {
+ for b in 0..3 {
+ pt.insert(&[a, b], Value::new_integer(Some(i as f64)));
+ i += 1;
+ }
+ }
+ let mut pt = pt.build();
+ let mut driver = TextDriver::new(File::create("/dev/stdout").unwrap());
+ driver.write(&Arc::new(Item::new(Details::Table(Box::new(pt.clone())))));
+
+ pt.transpose();
+ pt.title = Some(Box::new(Value::new_text("Rows")));
+ driver.write(&Arc::new(Item::new(Details::Table(Box::new(pt.clone())))));
+
+ pt.move_dimension(0, Axis3::X, 0);
+ pt.title = Some(Box::new(Value::new_text("Column x Row")));
+ driver.write(&Arc::new(Item::new(Details::Table(Box::new(pt.clone())))));
+
+ pt.transpose();
+ pt.title = Some(Box::new(Value::new_text("Row x Column")));
+ driver.write(&Arc::new(Item::new(Details::Table(Box::new(pt.clone())))));
+}