@@ -182,7 +182,7 @@ const columnDefs: ColDef[] = [
182
182
183
183
184
184
interface ParentOrderBlotterState {
185
- selectedOrders : Array < Order >
185
+ selectedOrderViews : Array < OrderView >
186
186
}
187
187
188
188
interface ParentOrderBlotterProps {
@@ -256,7 +256,7 @@ export default class ParentOrderBlotter extends React.Component<ParentOrderBlott
256
256
257
257
258
258
let blotterState : ParentOrderBlotterState = {
259
- selectedOrders : new Array < Order > ( ) ,
259
+ selectedOrderViews : new Array < OrderView > ( ) ,
260
260
}
261
261
262
262
this . state = blotterState ;
@@ -411,57 +411,70 @@ export default class ParentOrderBlotter extends React.Component<ParentOrderBlott
411
411
412
412
onSelectionChanged ( ) {
413
413
414
- let selectedOrders = new Array < Order > ( )
414
+ let selectedOrders = new Array < OrderView > ( )
415
415
if ( this . gridApi ) {
416
416
var selectedRows = this . gridApi . getSelectedRows ( ) ;
417
417
418
418
selectedRows . forEach ( function ( selectedRow , index ) {
419
419
420
420
let orderView : OrderView = selectedRow
421
421
422
- selectedOrders . push ( orderView . getOrder ( ) )
422
+ selectedOrders . push ( orderView )
423
423
424
424
} ) ;
425
425
426
426
}
427
427
428
428
let newState : ParentOrderBlotterState = {
429
429
...this . state , ...{
430
- selectedOrders : selectedOrders ,
430
+ selectedOrderViews : selectedOrders ,
431
431
}
432
432
}
433
433
434
434
this . setState ( newState )
435
435
436
436
} ;
437
437
438
- getCancellableOrders ( orders : Array < Order > ) : Array < Order > {
438
+ getCancellableOrders ( orders : Array < OrderView > ) : Array < Order > {
439
439
440
440
let result = new Array < Order > ( )
441
441
for ( let order of orders ) {
442
- if ( order . getStatus ( ) === OrderStatus . LIVE ) {
443
- result . push ( order )
442
+ if ( order . getOrder ( ) . getStatus ( ) === OrderStatus . LIVE ) {
443
+ result . push ( order . getOrder ( ) )
444
444
}
445
445
}
446
446
447
447
return result
448
448
}
449
449
450
+ getModifiableOrder ( views : Array < OrderView > ) : Order | undefined {
451
+
452
+ if ( views . length === 1 ) {
453
+ let view = views [ 0 ]
454
+ if ( view . getOrder ( ) . getDestination ( ) === view ?. getListing ( ) ?. getMarket ( ) ?. getMic ( ) &&
455
+ view . getOrder ( ) . getDestination ( ) !== Destinations . SMARTROUTER ) {
456
+ return view . getOrder ( )
457
+ }
458
+ }
459
+
460
+ return undefined
461
+ }
462
+
450
463
451
464
452
465
public render ( ) {
453
466
454
- let selectedOrders = this . state . selectedOrders
455
- let cancelleableOrders = this . getCancellableOrders ( this . state . selectedOrders )
467
+ let selectedOrders = this . state . selectedOrderViews . map ( v => v . getOrder ( ) )
468
+ let cancelleableOrders = this . getCancellableOrders ( this . state . selectedOrderViews )
469
+ let modifiableOrder = this . getModifiableOrder ( this . state . selectedOrderViews )
456
470
457
471
458
472
return (
459
473
< div style = { { width : "100%" , height : "100%" , display : 'flex' , flexDirection : 'column' , alignItems : "centre" } } >
460
474
< div className = "bp3-dark" style = { { display : 'flex' , flexDirection : 'row' , paddingTop : 0 , alignItems : "left" } } >
461
475
< div style = { { flexGrow : 1 } } >
462
476
< Button minimal = { true } icon = "delete" text = "Cancel Orders" onClick = { ( ) => this . cancelOrder ( cancelleableOrders ) } disabled = { cancelleableOrders . length === 0 } />
463
- < Button minimal = { true } icon = "edit" text = "Modify Order" onClick = { ( ) => this . modifyOrder ( cancelleableOrders [ 0 ] ) } disabled = { cancelleableOrders . length !== 1 ||
464
- cancelleableOrders [ 0 ] . getOwnerid ( ) === Destinations . VWAP || cancelleableOrders [ 0 ] . getOwnerid ( ) === Destinations . SMARTROUTER } />
477
+ < Button minimal = { true } icon = "edit" text = "Modify Order" onClick = { ( ) => this . modifyOrder ( cancelleableOrders [ 0 ] ) } disabled = { ! modifiableOrder } />
465
478
< Button minimal = { true } icon = "fork" text = "Child Orders" onClick = { ( ) => this . showChildOrders ( selectedOrders . values ( ) ) } disabled = { selectedOrders . length !== 1 } />
466
479
< Button minimal = { true } icon = "bring-data" text = "Order History" onClick = { ( ) => this . showOrderHistory ( selectedOrders . values ( ) ) } disabled = { selectedOrders . length !== 1 } />
467
480
< Button minimal = { true } icon = "tick" text = "Executions" onClick = { ( ) => this . showExecutions ( selectedOrders . values ( ) ) } disabled = { selectedOrders . length !== 1 } />
0 commit comments