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/CHANGELOG.md +24 -0
- package/dist/canvas-datagrid.debug.js +37 -21
- package/dist/canvas-datagrid.debug.map +1 -1
- package/dist/canvas-datagrid.js +1 -1
- package/dist/canvas-datagrid.module.js +1 -1
- package/dist/canvas-datagrid.module.js.map +1 -1
- package/lib/draw.js +13 -7
- package/lib/events/index.js +19 -3
- package/lib/publicMethods.js +6 -10
- package/package.json +1 -1
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,
|
package/lib/events/index.js
CHANGED
|
@@ -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;
|
package/lib/publicMethods.js
CHANGED
|
@@ -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
|
-
|
|
1371
|
-
|
|
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 (!
|
|
1373
|
+
if (!aValue.localeCompare) {
|
|
1378
1374
|
return 1;
|
|
1379
1375
|
}
|
|
1380
|
-
return
|
|
1376
|
+
return aValue.localeCompare(bValue);
|
|
1381
1377
|
}
|
|
1382
|
-
if (!
|
|
1378
|
+
if (!bValue.localeCompare) {
|
|
1383
1379
|
return 1;
|
|
1384
1380
|
}
|
|
1385
|
-
return
|
|
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.
|
|
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",
|