Skip to content

Commit

Permalink
Milestone#2 (#102)
Browse files Browse the repository at this point in the history
* remove wrong folder

* Use context to identify grids instances

* pass the grid id to every api call

* Fix context menu actions are not passing the grid id to the gw_sendEvent

* udpate gitignore

* Fix navigateToNextCell is not a function

* Fix row selection not working

* Update to ag-grid-components v1.14.0

* Improve debugging options

* fix #101

* update build

* Fix #96 & fix #98

* remove debug statement

* meta object is always empty
  • Loading branch information
hyyan committed Feb 5, 2019
1 parent 3ad0057 commit 38fd504
Show file tree
Hide file tree
Showing 26 changed files with 93,879 additions and 1,425 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@
/.project
/.metadata/resourcesModel.json
/.metadata/
/node_modules/
183 changes: 98 additions & 85 deletions BBjGridExWidget.bbj

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion Demo/Demo.bbj
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ declare BBjGridExWidget grid!

? 'HIDE'

BBjGridExWidget.setDebug(1)
wnd! = BBjAPI().openSysGui("X0").addWindow(10,10,900,600,"BBj Grid Ex Demo")

wnd!.addStaticText(200,5,10,60,25,"Database:")
Expand Down
562 changes: 278 additions & 284 deletions js/dist/ag-grid-community.min.noStyle.js

Large diffs are not rendered by default.

37,879 changes: 37,879 additions & 0 deletions js/dist/ag-grid-community.noStyle.js

Large diffs are not rendered by default.

562 changes: 278 additions & 284 deletions js/dist/ag-grid-enterprise.min.noStyle.js

Large diffs are not rendered by default.

54,298 changes: 54,298 additions & 0 deletions js/dist/ag-grid-enterprise.noStyle.js

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions js/dist/bbj-grid-widget.js

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions js/dist/bbj-grid-widget.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion js/dist/report.html

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions js/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"private": true,
"scripts": {
"watch": "./node_modules/.bin/webpack --watch --progress",
"build": "./node_modules/.bin/webpack"
"build": "./node_modules/.bin/webpack --mode=production"
},
"devDependencies": {
"@babel/core": "^7.0.0-beta.40",
Expand All @@ -26,9 +26,9 @@
"webpack-command": "^0.3.1"
},
"dependencies": {
"ag-grid-community": "^19.1.1",
"ag-grid-community": "^20.0.0",
"ag-grid-components": "https://git.storesandbox.de/hyyan/ag-grid-components.git#^v1.7.0",
"ag-grid-enterprise": "^19.1.1",
"ag-grid-enterprise": "^20.0.0",
"jss": "https://github.com/dvtng/jss"
}
}
30 changes: 17 additions & 13 deletions js/src/api/cells.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,27 +6,31 @@
* file that was distributed with this source code.
*/

export function gw_startEditingCell(row, colKey, key, char) {

gw_options.api.setFocusedCell(Number(row), colKey);
gw_options.api.startEditingCell({
export function gw_startEditingCell(id, row, colKey, key, char) {

const options = gw_getGrid(id).options;
options.api.setFocusedCell(Number(row), colKey);
options.api.startEditingCell({
rowIndex: Number(row),
colKey: colKey,
keyPress: Number(key),
charPress: char
});
}

export function gw_stopEditing(cancel) {
gw_options.api.stopEditing(cancel);
export function gw_stopEditing(id, cancel) {
const options = gw_getGrid(id).options;
options.api.stopEditing(cancel);
}

export function gw_editNextCell(){
gw_options.api.tabToNextCell();
export function gw_editNextCell(id) {
const options = gw_getGrid(id).options;
options.api.tabToNextCell();
};

export function gw_editPreviousCell() {
gw_options.api.tabToPreviousCell();
export function gw_editPreviousCell(id) {
const options = gw_getGrid(id).options;
options.api.tabToPreviousCell();
}

export function gw_cellStyler(params) {
Expand Down Expand Up @@ -69,11 +73,11 @@ export function gw_cellStyler(params) {
export function gw_getCellClass(params) {

const field = params.colDef.field;
if(params.data && params.data.hasOwnProperty('meta') ) {

if (params.data && params.data.hasOwnProperty('meta')) {
return (
params.data.meta.hasOwnProperty(field) &&
params.data.meta[field].hasOwnProperty('CELL_CLASS')
) ? params.data.meta[field].CELL_CLASS : `CELL_CLASS_${field}`
) ? params.data.meta[field].CELL_CLASS : `CELL_CLASS_${field}`
}
}
55 changes: 31 additions & 24 deletions js/src/api/columns.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,64 +6,71 @@
* file that was distributed with this source code.
*/

export function gw_sizeColumnsToFit() {
gw_options.api.sizeColumnsToFit();
export function gw_sizeColumnsToFit(id) {
const options = gw_getGrid(id).options;
options.api.sizeColumnsToFit();
}

export function gw_setSelectedRows(rows) {
export function gw_setSelectedRows(id, rows) {
const options = gw_getGrid(id).options;

gw_options.api.forEachNodeAfterFilterAndSort(function (node) {
options.api.forEachNodeAfterFilterAndSort(node => {
if (rows.indexOf(node.rowIndex) > -1) {
node.setSelected(true);
node.expanded = true;
}
}.bind(this));

gw_options.api.onGroupExpandedOrCollapsed();
});
options.api.onGroupExpandedOrCollapsed();
}

export function gw_selectAll(filtered) {
export function gw_selectAll(id, filtered) {
const options = gw_getGrid(id).options;

if (1 === filtered) {
gw_options.api.selectAllFiltered();
options.api.selectAllFiltered();
} else {
gw_options.api.selectAll();
options.api.selectAll();
}
}

export function gw_deselectAll(filtered) {
export function gw_deselectAll(id, filtered) {
const options = gw_getGrid(id).options;

if (1 === filtered) {
gw_options.api.deselectAllFiltered();
options.api.deselectAllFiltered();
} else {
gw_options.api.deselectAll();
options.api.deselectAll();
}
}

export function gw_setVisibleColumn(columnId) {
gw_options.api.ensureColumnVisible(columnId);
export function gw_setVisibleColumn(id, columnId) {
const options = gw_getGrid(id).options;
options.api.ensureColumnVisible(columnId);
}

export function gw_setColumnWidth(columnid, width) {
gw_options.columnApi.setColumnWidth(columnid, Number(width));
export function gw_setColumnWidth(id, columnid, width) {
const options = gw_getGrid(id).options;
options.columnApi.setColumnWidth(columnid, Number(width));
}

export function gw_pinColumn(columnid, pin) {
gw_options.columnApi.setColumnPinned(columnid, pin);
export function gw_pinColumn(id, columnid, pin) {
const options = gw_getGrid(id).options;
options.columnApi.setColumnPinned(columnid, pin);
}

export function gw_moveColumn(columnid, toIndex) {
gw_options.columnApi.moveColumn(columnid, toIndex);
export function gw_moveColumn(id, columnid, toIndex) {
const options = gw_getGrid(id).options;
options.columnApi.moveColumn(columnid, toIndex);
}

export function gw_groupColumns(columns, columnDefs) {

for (const i in columns) {

if (!columns.hasOwnProperty(i)) continue;
if (!columns || !columns.hasOwnProperty(i)) continue;

const column = JSON.parse(columns[i]);

const children = column.children.split(',');
let newChildren = [];
let newColumnDef = [];
Expand All @@ -75,7 +82,7 @@ export function gw_groupColumns(columns, columnDefs) {

const def = columnDefs[x];

if(def && def.hasOwnProperty("field") && def.field === child) {
if (def && def.hasOwnProperty("field") && def.field === child) {
newChildren.push(def);
columnDefs.splice(x, 1);
break;
Expand Down
8 changes: 5 additions & 3 deletions js/src/api/menus.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { gw_getGrid } from "../utilities";

/*
* This file is part of the grid project
* (c) Basis Europe <eu@basis.com>
Expand All @@ -6,7 +8,7 @@
* file that was distributed with this source code.
*/

export function gw_getContextMenu(params) {
export function gw_getContextMenu(gridId, params) {

const buildContextMenuAction = (params, id) => {

Expand All @@ -16,7 +18,7 @@ export function gw_getContextMenu(params) {
const colId = params.column.colId;
const value = params.value;

gw_sendEvent({
gw_sendEvent(gridId, {
'type': 'contextmenu',
'detail': [[{ row: node, column: colId, value, id }]]
});
Expand All @@ -37,5 +39,5 @@ export function gw_getContextMenu(params) {
return parsed;
};

return parseMenu(gw_options.__contextMenu);
return parseMenu(gw_getGrid(gridId).options.context.contextMenu);
}
72 changes: 40 additions & 32 deletions js/src/api/rows.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,29 @@
* file that was distributed with this source code.
*/

export function gw_setQuickFilter(filter) {
gw_options.api.setQuickFilter(filter);
export function gw_setQuickFilter(id, filter) {
const options = gw_getGrid(id).options;
options.api.setQuickFilter(filter);
}

export function gw_expandAll() {
gw_options.api.expandAll();
export function gw_expandAll(id) {
const options = gw_getGrid(id).options;
options.api.expandAll();
}

export function gw_collapseAll() {
gw_options.api.collapseAll();
export function gw_collapseAll(id) {
const options = gw_getGrid(id).options;
options.api.collapseAll();
}

export function gw_setVisibleRow(index, position) {
gw_options.api.ensureIndexVisible(index, position);
export function gw_setVisibleRow(id, index, position) {
const options = gw_getGrid(id).options;
options.api.ensureIndexVisible(index, position);
}

export function gw_navigateToNextRow(params) {
export function gw_navigateToNextRow(id, params) {

const options = gw_getGrid(id).options;
let previousCell = params.previousCellDef;
let suggestedNextCell = params.nextCellDef;

Expand All @@ -36,7 +41,7 @@ export function gw_navigateToNextRow(params) {
case KEY_DOWN:
previousCell = params.previousCellDef;
// set selected cell on current cell + 1
gw_options.api.forEachNode((node) => {
options.api.forEachNode((node) => {
if (previousCell.rowIndex + 1 === node.rowIndex) {
node.setSelected(true);
}
Expand All @@ -45,7 +50,7 @@ export function gw_navigateToNextRow(params) {
case KEY_UP:
previousCell = params.previousCellDef;
// set selected cell on current cell - 1
gw_options.api.forEachNode((node) => {
options.api.forEachNode((node) => {
if (previousCell.rowIndex - 1 === node.rowIndex) {
node.setSelected(true);
}
Expand All @@ -59,8 +64,8 @@ export function gw_navigateToNextRow(params) {
}
}

export function gw_getRowNodeId(data) {
return data[gw_options.__getRowNodeId];
export function gw_getRowNodeId(id, data) {
return data[gw_getGrid(id).options.context.getRowNodeId];
}

export function gw_getNodeChildDetails(rowItem) {
Expand All @@ -80,33 +85,36 @@ export function gw_getNodeChildDetails(rowItem) {
}
}

export function gw_setRowsData(json) {

gw_options.api.setRowData(json);
gw_options.rowData = json;
gw_options.api.refreshClientSideRowModel('group');
export function gw_setRowsData(id, json) {
const options = gw_getGrid(id).options;

options.api.setRowData(json);
options.rowData = json;
options.api.refreshClientSideRowModel('group');
}

export function gw_setRowData(row) {
export function gw_setRowData(id, row) {
const options = gw_getGrid(id).options;

console.log(row)
gw_options.api.updateRowData({update: [row]});
gw_options.api.refreshClientSideRowModel('group');
options.api.updateRowData({ update: [row] });
options.api.refreshClientSideRowModel('group');
}

export function gw_removeRows(indexes) {

export function gw_removeRows(id, indexes) {
const options = gw_getGrid(id).options;
let items = [];
indexes.forEach( index => {
items.push(gw_options.api.getRowNode(index).data);

indexes.forEach(index => {
items.push(options.api.getRowNode(index).data);
});

gw_options.api.updateRowData({remove: items});
gw_options.api.refreshClientSideRowModel('group');
options.api.updateRowData({ remove: items });
options.api.refreshClientSideRowModel('group');
}

export function gw_addRows(index,rows) {

gw_options.api.updateRowData({add: rows, addIndex: index});
gw_options.api.refreshClientSideRowModel('group');
export function gw_addRows(id, index, rows) {
const options = gw_getGrid(id).options;

options.api.updateRowData({ add: rows, addIndex: index });
options.api.refreshClientSideRowModel('group');
}
23 changes: 12 additions & 11 deletions js/src/api/state.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,24 @@
* file that was distributed with this source code.
*/

export function gw_setState(state) {
export function gw_setState(id, state) {
const options = gw_getGrid(id).options;
try {
gw_options.columnApi.setColumnState(state.columns);
gw_options.columnApi.setColumnGroupState(state.groups);
gw_options.api.setSortModel(state.sort);
gw_options.api.setFilterModel(state.filters);
options.columnApi.setColumnState(state.columns);
options.columnApi.setColumnGroupState(state.groups);
options.api.setSortModel(state.sort);
options.api.setFilterModel(state.filters);
} catch (e) {
console.warn('Failed to parse grid state from JSON', e);
}
}

export function gw_getState() {

const columns = gw_options.columnApi.getColumnState();
const groups = gw_options.columnApi.getColumnGroupState();
const sort = gw_options.api.getSortModel();
const filters = gw_options.api.getFilterModel();
export function gw_getState(id) {
const options = gw_getGrid(id).options;
const columns = options.columnApi.getColumnState();
const groups = options.columnApi.getColumnGroupState();
const sort = options.api.getSortModel();
const filters = options.api.getFilterModel();

try {
return JSON.stringify({
Expand Down

0 comments on commit 38fd504

Please sign in to comment.