in web/frontend/src/app/pages/streams/components/stream-view-reverse/stream-view-reverse.component.ts [206:311]
ngOnInit() {
combineLatest([
this.permissionsService.isWriter().pipe(take(1)),
this.appStore.pipe(select(getActiveTab), filter(Boolean)),
]).subscribe(([isWriter, tab]: [boolean, TabModel]) => {
this.reverseStreamOrder = !!tab.reverse;
if (tab.symbol) {
this.tabSymbolFilter = [tab.symbol];
}
this.streamId = tab.stream;
this.streamName = tab.name;
this.tabName = tab.stream + tab.id;
const sendMessageMenu = {
data: (event) => ({
disabled: !event.node || !this.streamId,
name: 'Send Message',
action: () => {
this.bsModalRef = this.modalService.show(ModalSendMessageComponent, {
initialState: {
stream: {
id: this.streamId,
name: this.streamName,
},
formData: (event.node.data as StreamDetailsModel)?.original, // (params.node.data as StreamDetailsModel).$type, //
editMessageMode: false,
},
ignoreBackdropClick: true,
class: 'modal-message scroll-content-modal',
});
},
}),
alias: 'sendMessage',
};
const editMessageMenu = {
data: (event) => ({
disabled: !event.node || !this.streamId,
name: 'Edit Message',
action: () => {
this.bsModalRef = this.modalService.show(ModalSendMessageComponent, {
initialState: {
stream: {
id: this.streamId,
name: this.streamName,
},
formData: (event.node.data as StreamDetailsModel)?.original,
editMessageMode: true,
messageInfo: this.messageInfo,
editingMessageNanoTime: this.editingMessageNanoTime,
},
ignoreBackdropClick: true,
class: 'modal-message scroll-content-modal',
});
},
}),
alias: 'editMessage',
}
const orderBookMenu = {
data: (event: { node: RowNode }) => ({
disabled: true,
name: 'View Oder Book',
action: () => this.messageInfoService.viewOrderBook(event.node.data, event.node.rowIndex),
}),
alias: 'openOrderBook',
};
const items = [];
if (isWriter && !tab.isView) {
typeof tab.space === 'string' ?
items.push(sendMessageMenu) : items.push(sendMessageMenu, editMessageMenu);
}
if (tab.chartType?.includes(ChartTypes.PRICES_L2)) {
items.push(orderBookMenu);
}
this.gridContextMenuService.addCellMenuItems(items);
this.gridContextMenuService.addColumnSizeMenuItems(
() => this.gridStateLS,
() => this.rowData,
this.tabName,
).pipe(takeUntil(this.destroy$)).subscribe(event => {
this.columnsIdVisible = {};
this.columnsVisibleData(event.columnApi, this.rowData);
});
});
this.modalService.onHide
.pipe(takeUntil(this.destroy$))
.subscribe(() => {
this.streamDataService.getRows(this.streamDataService.getRowsParams);
})
this.activeTab = this.appStore.pipe(select(getActiveOrFirstTab));
this.globalFiltersService
.getFilters()
.pipe(takeUntil(this.destroy$))
.subscribe(() => setTimeout(() => this.readyApi?.api.redrawRows(), 0));
this.gridOptions = this.gridDefaults;
}