canvas-datagrid 0.3.14 → 0.3.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/draw.js CHANGED
@@ -122,15 +122,15 @@ export default function (self) {
122
122
  x = x + ml;
123
123
  y = y + mt;
124
124
  if (self.orderDirection === 'asc') {
125
- self.ctx.moveTo(x, y);
126
- self.ctx.lineTo(x + aw, y);
127
- self.ctx.lineTo(x + aw * 0.5, y + ah);
128
- self.ctx.moveTo(x, y);
129
- } else {
130
125
  self.ctx.lineTo(x, y + ah);
131
126
  self.ctx.lineTo(x + aw, y + ah);
132
127
  self.ctx.lineTo(x + aw * 0.5, y);
133
128
  self.ctx.lineTo(x, y + ah);
129
+ } else {
130
+ self.ctx.moveTo(x, y);
131
+ self.ctx.lineTo(x + aw, y);
132
+ self.ctx.lineTo(x + aw * 0.5, y + ah);
133
+ self.ctx.moveTo(x, y);
134
134
  }
135
135
  self.ctx.stroke();
136
136
  self.ctx.fill();
@@ -1102,11 +1102,17 @@ export default function (self) {
1102
1102
 
1103
1103
  // Gaps may occur in row numbers between consecutively rendered rows
1104
1104
  // when we are filtering. We draw attention to this by drawing a thick
1105
- // border overlapping the two consecutive row headers.
1105
+ // border overlapping the two consecutive row headers. If sorting, visible
1106
+ // row numbers stay the same (i.e. they don't correspond to the underlying
1107
+ // data's row number), so we do not show row gaps in that case.
1108
+ const isSorting =
1109
+ self.orderings.columns && self.orderings.columns.length > 0;
1110
+
1106
1111
  if (
1107
1112
  isRowHeader &&
1108
1113
  self.attributes.showRowNumbers &&
1109
- self.attributes.showRowNumberGaps
1114
+ self.attributes.showRowNumberGaps &&
1115
+ isSorting === false
1110
1116
  ) {
1111
1117
  const previousRowNumber = self.getBoundRowIndexFromViewRowIndex(
1112
1118
  rowOrderIndex - 1,
@@ -899,6 +899,7 @@ export default function (self) {
899
899
  self.stopDragReorder = function (e) {
900
900
  var oIndex,
901
901
  tIndex,
902
+ odata,
902
903
  cr = {
903
904
  'row-reorder': self.orders.rows,
904
905
  'column-reorder': self.orders.columns,
@@ -929,12 +930,15 @@ export default function (self) {
929
930
  self.ignoreNextClick = true;
930
931
  oIndex = cr[self.dragMode].indexOf(self.reorderObject[i]);
931
932
  tIndex = cr[self.dragMode].indexOf(self.reorderTarget[i]);
932
- cr[self.dragMode].splice(oIndex, 1);
933
- cr[self.dragMode].splice(tIndex, 0, self.reorderObject[i]);
934
933
  if (self.dragMode === 'column-reorder') {
934
+ cr[self.dragMode].splice(oIndex, 1);
935
+ cr[self.dragMode].splice(tIndex, 0, self.reorderObject[i]);
935
936
  self.orders.columns = cr[self.dragMode];
936
937
  } else {
937
- self.orders.rows = cr[self.dragMode];
938
+ // self.orders.rows = cr[self.dragMode];
939
+ odata = self.viewData[oIndex];
940
+ self.viewData[oIndex] = self.viewData[tIndex];
941
+ self.viewData[tIndex] = odata;
938
942
  }
939
943
  self.resize();
940
944
  self.setStorageData();
@@ -1169,6 +1173,13 @@ export default function (self) {
1169
1173
  }
1170
1174
  if (['row-reorder', 'column-reorder'].indexOf(self.dragMode) !== -1) {
1171
1175
  self.draggingItem = self.dragStartObject;
1176
+ if (
1177
+ self.dragMode === 'column-reorder' &&
1178
+ self.attributes.columnHeaderClickBehavior === 'select'
1179
+ ) {
1180
+ self.selectColumn(self.currentCell.header.index, ctrl, e.shiftKey);
1181
+ self.draw();
1182
+ }
1172
1183
  document.body.addEventListener('mousemove', self.dragReorder, false);
1173
1184
  document.body.addEventListener('mouseup', self.stopDragReorder, false);
1174
1185
  return;
@@ -1176,9 +1187,14 @@ export default function (self) {
1176
1187
  };
1177
1188
  self.mouseup = function (e) {
1178
1189
  clearTimeout(self.scrollTimer);
1190
+ var ctrl = e.ctrlKey || e.metaKey;
1179
1191
  self.cellBoundaryCrossed = true;
1180
1192
  self.rowBoundaryCrossed = true;
1181
1193
  self.columnBoundaryCrossed = true;
1194
+ if (self.draggingItem) {
1195
+ self.selectColumn(self.currentCell.header.index, ctrl, e.shiftKey);
1196
+ self.draw();
1197
+ }
1182
1198
  self.selecting = undefined;
1183
1199
  self.draggingItem = undefined;
1184
1200
  self.dragStartObject = undefined;
@@ -1367,22 +1367,18 @@ export default function (self) {
1367
1367
  self.sorters.string = function (columnName, direction) {
1368
1368
  var asc = direction === 'asc';
1369
1369
  return function (a, b) {
1370
- if (a[columnName] === undefined || a[columnName] === null) {
1371
- return 1;
1372
- }
1373
- if (b[columnName] === undefined || b[columnName] === null) {
1374
- return 0;
1375
- }
1370
+ const aValue = a[columnName] || '';
1371
+ const bValue = b[columnName] || '';
1376
1372
  if (asc) {
1377
- if (!a[columnName].localeCompare) {
1373
+ if (!aValue.localeCompare) {
1378
1374
  return 1;
1379
1375
  }
1380
- return a[columnName].localeCompare(b[columnName]);
1376
+ return aValue.localeCompare(bValue);
1381
1377
  }
1382
- if (!b[columnName].localeCompare) {
1378
+ if (!bValue.localeCompare) {
1383
1379
  return 1;
1384
1380
  }
1385
- return b[columnName].localeCompare(a[columnName]);
1381
+ return bValue.localeCompare(aValue);
1386
1382
  };
1387
1383
  };
1388
1384
  self.sorters.number = function (columnName, direction) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "canvas-datagrid",
3
- "version": "0.3.14",
3
+ "version": "0.3.18",
4
4
  "description": "Canvas based data grid web component. Capable of displaying millions of contiguous hierarchical rows and columns without paging or loading, on a single canvas element.",
5
5
  "main": "./dist/canvas-datagrid.js",
6
6
  "module": "./dist/canvas-datagrid.module.js",