具有 Angular rowclick 事件的 AnyChart 8.1 未返回项目或期间信息
AnyChart 8.1 with Angular rowclick event not returning item or period information
我正在为我公司的甘特图项目创建 POC。
我在 Angular 5 网络项目中使用来自 Anychart 8.1.0 版的资源甘特图。
我已经设置了大部分图表,在互联网上查找不同的文档和建议,但我现在卡在了点击事件上。
按照 Anychart 中的示例,我发现以下代码可以监听图表上的事件:
chart.listen("rowClick", function(event) {
var msg = event['item'].get('name');
if (event['period']) msg += '\nPeriod: ' + event['period']['id'];
console.log(msg);
});
如果我们去 to the anychart playground,我们可以为上面提到的片段更改此代码:
chart.listen('rowSelect', function(e) {
e.item.remove();
});
所以在这里我们看到事件获取项目和期间属性。
但是当我在我的 POC 项目中执行此操作时,项目和期间属性丢失:
这是代码片段:
chart: anychart.charts.Gantt;
ngOnInit() {
this.chart = anychart.ganttResource();
}
ngAfterViewInit() {
this.ganttSvc.getGanttData(this.tokenManager.getUserId()).subscribe((values:
GanttDataRow[]) => {
// set data to grid
const treedata = anychart.data.tree(values, 'as-table');
this.chart.data(treedata);
// add to container and draw
this.chart.container(this.container.nativeElement).draw();
// scale
this.chart.zoomTo('day', 1, 'first-date');
// eventlisteners
this.chart.listen('rowSelect', function() {
event.preventDefault();
this.clickedDetail(event);
});
});
clickedDetail(event) {
if (event['period']) {
this.selectedGanttItem = event['period'];
this.toggleSideBar();
}
}
对我做错了什么有什么想法吗?
不幸的是,index.d.ts 中存在与图表侦听器相关的错误。在当前版本的 index.d.ts 文件中,图表侦听器的回调函数不会将事件对象作为参数。这就是缺少 item 和 period 属性的原因。这个问题是已知的,我们的开发团队正在准备修复它,将在 8.2.0 版本发布时提供。当修复可用时,我们将通过此线程通知您。
我们的团队准备了 dev-preview 8.2.1 更新,您可以在您的项目中试用。此更新包括 index.d.ts 的许多错误修复。
要获得此更新,请将“package.json”中的当前 AnyChart 依赖项替换为以下 "anychart":“8.2.1-rc.0”
或者你可以通过 NPM 手动下载它: $ npm install anychart@8.2.1-rc.0
在此更新中,您可以访问侦听器中的 'event' 对象。
this.chart.listen('rowSelect', function(event) {
event.preventDefault();
});
我们的团队很快将提供 public 8.2.1 更新版本。
请尝试下面的代码,这对 anychart@8.2.1-rc.0 完美适用:
chart: anychart.charts.Gantt = null;
ngOnInit() {
const rawData = [
{
'name': 'Activities',
'actualStart': Date.UTC(2007, 0, 25),
'actualEnd': Date.UTC(2007, 2, 14),
'children': [
{
'name': 'Draft plan',
'actualStart': Date.UTC(2007, 0, 25),
'actualEnd': Date.UTC(2007, 1, 3)
},
{
'name': 'Board meeting',
'actualStart': Date.UTC(2007, 1, 4),
'actualEnd': Date.UTC(2007, 1, 4)
},
{
'name': 'Research option',
'actualStart': Date.UTC(2007, 1, 4),
'actualEnd': Date.UTC(2007, 1, 24)
},
{
'name': 'Final plan',
'actualStart': Date.UTC(2007, 1, 24),
'actualEnd': Date.UTC(2007, 2, 14)
}
]
}];
const treeData = anychart.data.tree(rawData, 'as-tree');
this.chart = anychart.ganttProject();
this.chart.data(treeData);
this.chart.listen('rowSelect', function (event) {
console.log(event['item'].get('name'));
});
ngAfterViewInit() {
this.chart.container(this.container.nativeElement);
this.chart.draw();
}
我的问题出在这部分:
this.chart.listen('rowSelect', function (event) {
console.log(event['item'].get('name'));
});
我有以下代码:
this.chart.listen('rowSelect', () => {
this.clickedDetail(event);
});
一旦我将其更改为跟随它就起作用了:
this.chart.listen('rowSelect', (event) => {
this.clickedDetail(event);
});
在我掌握 MouseClickEvent 本身而不是图表发出的事件之前。感谢您提供的示例,它帮助很大。
虽然只是一个小问题。我注意到您使用了 rowSelect,而我之前使用的是 rowClick。他们的行为有很大不同吗?
我正在为我公司的甘特图项目创建 POC。 我在 Angular 5 网络项目中使用来自 Anychart 8.1.0 版的资源甘特图。 我已经设置了大部分图表,在互联网上查找不同的文档和建议,但我现在卡在了点击事件上。 按照 Anychart 中的示例,我发现以下代码可以监听图表上的事件:
chart.listen("rowClick", function(event) {
var msg = event['item'].get('name');
if (event['period']) msg += '\nPeriod: ' + event['period']['id'];
console.log(msg);
});
如果我们去 to the anychart playground,我们可以为上面提到的片段更改此代码:
chart.listen('rowSelect', function(e) {
e.item.remove();
});
所以在这里我们看到事件获取项目和期间属性。 但是当我在我的 POC 项目中执行此操作时,项目和期间属性丢失:
这是代码片段:
chart: anychart.charts.Gantt;
ngOnInit() {
this.chart = anychart.ganttResource();
}
ngAfterViewInit() {
this.ganttSvc.getGanttData(this.tokenManager.getUserId()).subscribe((values:
GanttDataRow[]) => {
// set data to grid
const treedata = anychart.data.tree(values, 'as-table');
this.chart.data(treedata);
// add to container and draw
this.chart.container(this.container.nativeElement).draw();
// scale
this.chart.zoomTo('day', 1, 'first-date');
// eventlisteners
this.chart.listen('rowSelect', function() {
event.preventDefault();
this.clickedDetail(event);
});
});
clickedDetail(event) {
if (event['period']) {
this.selectedGanttItem = event['period'];
this.toggleSideBar();
}
}
对我做错了什么有什么想法吗?
不幸的是,index.d.ts 中存在与图表侦听器相关的错误。在当前版本的 index.d.ts 文件中,图表侦听器的回调函数不会将事件对象作为参数。这就是缺少 item 和 period 属性的原因。这个问题是已知的,我们的开发团队正在准备修复它,将在 8.2.0 版本发布时提供。当修复可用时,我们将通过此线程通知您。
我们的团队准备了 dev-preview 8.2.1 更新,您可以在您的项目中试用。此更新包括 index.d.ts 的许多错误修复。 要获得此更新,请将“package.json”中的当前 AnyChart 依赖项替换为以下 "anychart":“8.2.1-rc.0” 或者你可以通过 NPM 手动下载它: $ npm install anychart@8.2.1-rc.0
在此更新中,您可以访问侦听器中的 'event' 对象。
this.chart.listen('rowSelect', function(event) {
event.preventDefault();
});
我们的团队很快将提供 public 8.2.1 更新版本。
请尝试下面的代码,这对 anychart@8.2.1-rc.0 完美适用:
chart: anychart.charts.Gantt = null;
ngOnInit() {
const rawData = [
{
'name': 'Activities',
'actualStart': Date.UTC(2007, 0, 25),
'actualEnd': Date.UTC(2007, 2, 14),
'children': [
{
'name': 'Draft plan',
'actualStart': Date.UTC(2007, 0, 25),
'actualEnd': Date.UTC(2007, 1, 3)
},
{
'name': 'Board meeting',
'actualStart': Date.UTC(2007, 1, 4),
'actualEnd': Date.UTC(2007, 1, 4)
},
{
'name': 'Research option',
'actualStart': Date.UTC(2007, 1, 4),
'actualEnd': Date.UTC(2007, 1, 24)
},
{
'name': 'Final plan',
'actualStart': Date.UTC(2007, 1, 24),
'actualEnd': Date.UTC(2007, 2, 14)
}
]
}];
const treeData = anychart.data.tree(rawData, 'as-tree');
this.chart = anychart.ganttProject();
this.chart.data(treeData);
this.chart.listen('rowSelect', function (event) {
console.log(event['item'].get('name'));
});
ngAfterViewInit() {
this.chart.container(this.container.nativeElement);
this.chart.draw();
}
我的问题出在这部分:
this.chart.listen('rowSelect', function (event) {
console.log(event['item'].get('name'));
});
我有以下代码:
this.chart.listen('rowSelect', () => {
this.clickedDetail(event);
});
一旦我将其更改为跟随它就起作用了:
this.chart.listen('rowSelect', (event) => {
this.clickedDetail(event);
});
在我掌握 MouseClickEvent 本身而不是图表发出的事件之前。感谢您提供的示例,它帮助很大。
虽然只是一个小问题。我注意到您使用了 rowSelect,而我之前使用的是 rowClick。他们的行为有很大不同吗?