Skip to content

Commit

Permalink
Integrate createIndex method and Fix #55
Browse files Browse the repository at this point in the history
  • Loading branch information
hyyan committed Jul 31, 2018
1 parent 65642f9 commit 108d01c
Show file tree
Hide file tree
Showing 6 changed files with 175 additions and 19 deletions.
16 changes: 12 additions & 4 deletions BBjGridExWidget.bbj
Expand Up @@ -574,6 +574,7 @@ REM fi
wend
fi

#RS!.createIndex()
#TREE! = null()
#URL$=""
#SelectedRowsMap!.clear()
Expand Down Expand Up @@ -646,6 +647,7 @@ REM fi
wend
fi

#RS!.createIndex()
#TREE! = null()
#URL$=""
#SelectedRowsMap!.clear()
Expand All @@ -661,8 +663,7 @@ REM fi
method public void setRowData(BBjNumber index!,DataRow row!)
if #RS!.count() <> 0 then
#RS!.setItem(index!,row!)
row!.setFieldValue("__ROW_INDEX",str(index!))
#executeScript("gw_setRowData(" + row!.toJson() +")")
#executeScript("gw_setRowData(" + row!.toJson("__ROW_INDEX") +")")
fi
methodend
rem /**
Expand All @@ -674,7 +675,7 @@ REM fi
method public void addRow(BBjNumber index!,DataRow row!)
#RS!.add(index! , row!)
parser! = new JsonParser()
#executeScript("gw_addRows("+ str(index!) +",[" + parser!.parse(row!.toJson()).getAsJsonArray().get(0).toString() +"])")
#executeScript("gw_addRows("+ str(index!) +",[" + parser!.parse(row!.toJson("__ROW_INDEX")).getAsJsonArray().get(0).toString() +"])")
methodend
rem /**
rem * Remove row from grid by index
Expand All @@ -683,8 +684,14 @@ REM fi
rem */
method public void removeRow(BBjNumber index!)
if #RS!.count() <> 0 then
if #RowNodeId$ <> "__ROW_INDEX" then
value! = #RS!.getItem(index!).getFieldAsString(#RowNodeId$)
else
value! = #RS!.getItem(index!).getRowKey()
fi

#RS!.remove(index!)
#executeScript("gw_removeRow(" + str(index!) +")")
#executeScript("gw_removeRows(['" + str(value!) +"'])")
rem print #RS!.getItem(index!)
rem escape
fi
Expand All @@ -694,6 +701,7 @@ REM fi
rem */
method public void clearRowsData()
#RS! = new ResultSet()
#RS!.createIndex()
#TREE! = null()
#URL$=""
#SelectedRowsMap!.clear()
Expand Down
2 changes: 1 addition & 1 deletion Demo/DataUpdateDemo.bbj
Expand Up @@ -44,7 +44,7 @@ process_events
fillGrid:
sbc! = new SqlQueryBC(BBjAPI().getJDBCConnection("CDStore"))
rs! = sbc!.retrieve("SELECT * FROM CDINVENTORY ")
grid!.setData(rs!,"CDNUMBER")
grid!.setData(rs!)
return

restoreOrginialRS:
Expand Down
150 changes: 150 additions & 0 deletions Demo/OrderEntryDemo.bbj
@@ -0,0 +1,150 @@
use ::BBjGridExWidget/BBjGridExWidget.bbj::BBjGridExWidget
use com.basiscomponents.bc.SqlQueryBC
use com.basiscomponents.db.DataRow
use com.basiscomponents.db.ResultSet
use java.sql.Types

? 'HIDE'

declare auto BBjTopLevelWindow wnd!
declare BBjGridExWidget grid!

x=0
y=0
w=800
h=600

wnd! = BBjAPI().openSysGui("X0").addWindow(10,10,800,600,"Data Entry Demo")
wnd! .setCallback(BBjAPI.ON_CLOSE,"byebye")
wnd! .setCallback(BBjAPI.ON_RESIZE,"resize")

grid! = new BBjGridExWidget(wnd!,100,x,y,w,h)
grid!.setEditable(1)
grid!.setSingleClickEdit(1)
rem grid!.setCallback(grid!.ON_GRID_CELL_EDITING_STARTED(),"cellEditingStarted")
grid!.setCallback(grid!.ON_GRID_CELL_EDITING_STOPPED(),"cellEditingStopped")

gosub fillGrid

process_events

fillGrid:
row! = new DataRow()

row!.setFieldValue("ITEM_NO",java.sql.Types.VARCHAR,"")
row!.setFieldAttribute("ITEM_NO","EDITABLE","1")

row!.setFieldValue("DESC",java.sql.Types.VARCHAR,"")

row!.setFieldValue("QTY",java.sql.Types.INTEGER,"")
row!.setFieldAttribute("QTY","EDITABLE","1")

row!.setFieldValue("ITEM_PRICE",java.sql.Types.INTEGER,"")
row!.setFieldValue("LINE_PRICE",java.sql.Types.INTEGER,"")
row!.setFieldValue("__DIRTY",java.sql.Types.INTEGER,"0")

rs! = new ResultSet()
rs!.add(row!)

grid!.setData(rs!)

rem THIS WILL NOT WORK
rem grid!.setData(rs!,"ITEM_NO")
return

cellEditingStarted:
return

cellEditingStopped:

ev! = BBjAPI().getLastEvent()
ev! = ev!.getObject()
column! = ev!.getColumn()
switch column!
case "ITEM_NO"
gosub onItemNoChanged
break
case "QTY"
gosub onQtyChanged
break
swend
return

onItemNoChanged:

ev! = BBjAPI().getLastEvent()
ev! = ev!.getObject()
value$ = ev!.getValue()

sbc! = new SqlQueryBC(BBjAPI().getJDBCConnection("ChileCompany"))
rs! = sbc!.retrieve("SELECT * FROM ITEM where ITEM_NUM = '" + value$ + "'")

gridRow! = ev!.getRow()
dataRow! = gridRow!.asDataRow()

if rs!.count() = 0 then
dataRow!.setFieldValue("ITEM_NO",java.sql.Types.VARCHAR,"")
dataRow!.setFieldValue("DESC",java.sql.Types.VARCHAR,"")
dataRow!.setFieldValue("QTY",java.sql.Types.INTEGER,"")
dataRow!.setFieldValue("ITEM_PRICE",java.sql.Types.INTEGER,"")
dataRow!.setFieldValue("LINE_PRICE",java.sql.Types.INTEGER,"")
dataRow!.setFieldValue("__DIRTY",java.sql.Types.INTEGER,"1")
else
rsRow! = rs!.get(0)

dataRow!.setFieldValue("ITEM_NO",java.sql.Types.VARCHAR,value$)
dataRow!.setFieldValue("DESC",java.sql.Types.VARCHAR,rsRow!.getFieldAsString("DESCRIPTION"))
dataRow!.setFieldValue("QTY",java.sql.Types.INTEGER, "1")
dataRow!.setFieldValue("ITEM_PRICE",java.sql.Types.INTEGER,rsRow!.getFieldAsNumber("PRICE"))
dataRow!.setFieldValue("LINE_PRICE",java.sql.Types.INTEGER,rsRow!.getFieldAsNumber("PRICE"))

if len(dataRow!.getFieldAsString("ITEM_NO")) > 0 and dataRow!.getFieldAsNumber("__DIRTY") = 0 then

row! = new DataRow()

row!.setFieldValue("ITEM_NO",java.sql.Types.VARCHAR,"")
row!.setFieldValue("DESC",java.sql.Types.VARCHAR,"")
row!.setFieldValue("QTY",java.sql.Types.INTEGER,"")
row!.setFieldValue("ITEM_PRICE",java.sql.Types.INTEGER,"")
row!.setFieldValue("LINE_PRICE",java.sql.Types.INTEGER,"")
row!.setFieldValue("__DIRTY",java.sql.Types.INTEGER,"0")
rem THIS IS A HACK
row!.setFieldValue("__ROW_INDEX",java.sql.Types.INTEGER,str(gridRow!.getIndex() + 1))

grid!.addRow(gridRow!.getIndex() + 1,row!)
fi

dataRow!.setFieldValue("__DIRTY",java.sql.Types.INTEGER,"1")
fi

grid!.setRowData(gridRow!.getIndex(),dataRow!)
return

onQtyChanged:

ev! = BBjAPI().getLastEvent()
ev! = ev!.getObject()
value! = num(ev!.getValue())
if value! < 1 then
value! = 1
fi

gridRow! = ev!.getRow()
dataRow! = gridRow!.asDataRow()
linePrice! = dataRow!.getFieldAsNumber("ITEM_PRICE") * value!

dataRow!.setFieldValue("QTY",java.sql.Types.INTEGER, str(value!))
dataRow!.setFieldValue("LINE_PRICE",java.sql.Types.INTEGER, str(linePrice!))

grid!.setRowData(gridRow!.getIndex(),dataRow!)
return

resize:
ev! = BBjAPI().getLastEvent()
w=ev!.getWidth()
h=ev!.getHeight()
grid!.setSize(w,h)
return

byebye:
bye
2 changes: 1 addition & 1 deletion 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.

22 changes: 10 additions & 12 deletions js/src/api/rows.js
Expand Up @@ -60,14 +60,8 @@ export function gw_navigateToNextRow(params) {
}

export function gw_getRowNodeId(data) {

let id;
if (gw_options.hasOwnProperty('__getRowNodeId')) {
id = data[gw_options.__getRowNodeId];
}

id = id ? id : data.__ROW_INDEX;
return id;
console.log(data ,data[gw_options.__getRowNodeId]);
return data[gw_options.__getRowNodeId];
}

export function gw_getNodeChildDetails(rowItem) {
Expand Down Expand Up @@ -97,15 +91,19 @@ export function gw_setRowsData(json) {
export function gw_setRowData(row) {

const data = row[0];
const key = gw_options.__getRowNodeId.length === 0 ? "__ROW_INDEX" : gw_options.__getRowNodeId;
const key = gw_options.__getRowNodeId;
gw_options.api.getRowNode(data[key]).setData(data);
gw_options.api.refreshClientSideRowModel('group');
}

export function gw_removeRow(index) {
export function gw_removeRows(indexes) {

gw_options.rowData.splice(Number(index), 1);
gw_options.api.setRowData(gw_options.rowData);
let items = [];
indexes.forEach( index => {
items.push(gw_options.api.getRowNode(index).data);
});

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

Expand Down

0 comments on commit 108d01c

Please sign in to comment.