From f97f88fa97fc9503aad4ca35ef58e8ca18501bc4 Mon Sep 17 00:00:00 2001 From: Jakub Kupsik Date: Tue, 23 Apr 2024 09:00:40 -0700 Subject: [PATCH] Added tags column to TradeService and ColumnFilteringPanel grid --- client-app/src/core/columns/Trades.ts | 13 ++++++++++++- .../desktop/tabs/grids/ColumnFilteringPanelModel.ts | 7 +++++-- .../services/io/xh/toolbox/data/TradeService.groovy | 4 +++- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/client-app/src/core/columns/Trades.ts b/client-app/src/core/columns/Trades.ts index bf00dacf6..5c6cbf218 100644 --- a/client-app/src/core/columns/Trades.ts +++ b/client-app/src/core/columns/Trades.ts @@ -1,4 +1,4 @@ -import {ExcelFormat, localDateCol} from '@xh/hoist/cmp/grid'; +import {ExcelFormat, localDateCol, tags} from '@xh/hoist/cmp/grid'; import {dateRenderer, millionsRenderer, numberRenderer, fmtNumberTooltip} from '@xh/hoist/format'; import {ColumnSpec} from '@xh/hoist/cmp/grid'; @@ -56,6 +56,17 @@ export const tradeDateCol: ColumnSpec = { chooserDescription: 'Date of last trade (including related derivatives)' }; +export const tagsCol: ColumnSpec = { + ...tags, + field: { + name: 'tags', + type: 'tags', + displayName: 'Tags' + }, + width: 210, + chooserDescription: 'Tags associated with this trade' +}; + export const dayOfWeekCol: ColumnSpec = { field: { name: 'trade_date', diff --git a/client-app/src/desktop/tabs/grids/ColumnFilteringPanelModel.ts b/client-app/src/desktop/tabs/grids/ColumnFilteringPanelModel.ts index e59f7feb9..b8849a8b4 100644 --- a/client-app/src/desktop/tabs/grids/ColumnFilteringPanelModel.ts +++ b/client-app/src/desktop/tabs/grids/ColumnFilteringPanelModel.ts @@ -7,6 +7,7 @@ import { cityCol, companyCol, profitLossCol, + tagsCol, tradeDateCol, tradeVolumeCol } from '../../../core/columns'; @@ -54,7 +55,8 @@ export class ColumnFilteringPanelModel extends HoistModel { cityCol, tradeVolumeCol, profitLossCol, - tradeDateCol + tradeDateCol, + tagsCol ] }); } @@ -72,7 +74,8 @@ export class ColumnFilteringPanelModel extends HoistModel { { field: 'trade_volume', valueRenderer: millionsRenderer({precision: 1, label: true}) - } + }, + 'tags' ] }); } diff --git a/grails-app/services/io/xh/toolbox/data/TradeService.groovy b/grails-app/services/io/xh/toolbox/data/TradeService.groovy index 95b23ff60..2b280d217 100644 --- a/grails-app/services/io/xh/toolbox/data/TradeService.groovy +++ b/grails-app/services/io/xh/toolbox/data/TradeService.groovy @@ -26,13 +26,15 @@ class TradeService extends BaseService { try { def mockData = applicationContext.getResource('classpath:MockTradesData.json'), trades = JSONParser.parseArray(mockData.inputStream), - dateRange = 30 + dateRange = 30, + tagRange = 5 trades.each {it -> it.profit_loss = Math.round(it.profit_loss * Math.random()) it.trade_volume = it.trade_volume * 1000000 it.active = it.trade_volume.toBigInteger() % 6 == 0 it.trade_date = LocalDate.now().minusDays(Math.round(dateRange * Math.random())) + it.tags = (0..Math.floor(tagRange * Math.random())).findAll { it > 0 }.collect { 'tag' + it} } ret = [