|
536 | 536 | ipc.removeListener('request-action', this.__rah);
|
537 | 537 | ipc.removeListener('command', this.__ch);
|
538 | 538 | },
|
539 |
| - |
| 539 | + /** |
| 540 | + * Handler for the `navigate` custom event. Updates a route depending on |
| 541 | + * passed data. |
| 542 | + * |
| 543 | + */ |
540 | 544 | _navigateHandler: function(e) {
|
541 | 545 | var params = e.detail;
|
542 | 546 | var url;
|
| 547 | + var screenName = '[unknown]'; |
543 | 548 | switch (params.base) {
|
544 |
| - case 'default': url = '/request/latest/0'; break; |
545 |
| - case 'history': url = '/history'; break; |
546 |
| - case 'settings': url = '/settings'; break; |
547 |
| - case 'about': url = '/about'; break; |
548 |
| - case 'socket': url = '/socket'; break; |
549 |
| - case 'saved': url = '/saved'; break; |
550 |
| - case 'dataimport': url = '/dataimport'; break; |
| 549 | + case 'default': |
| 550 | + url = '/request/latest/0'; |
| 551 | + screenName = 'Request - latest'; |
| 552 | + break; |
| 553 | + case 'history': |
| 554 | + url = '/history'; |
| 555 | + screenName = 'History'; |
| 556 | + break; |
| 557 | + case 'settings': |
| 558 | + url = '/settings'; |
| 559 | + screenName = 'Settings'; |
| 560 | + break; |
| 561 | + case 'about': |
| 562 | + url = '/about'; |
| 563 | + screenName = 'About'; |
| 564 | + break; |
| 565 | + case 'socket': |
| 566 | + url = '/socket'; |
| 567 | + screenName = 'Socket'; |
| 568 | + break; |
| 569 | + case 'saved': |
| 570 | + url = '/saved'; |
| 571 | + screenName = 'Saved'; |
| 572 | + break; |
| 573 | + case 'dataimport': |
| 574 | + url = '/dataimport'; |
| 575 | + screenName = 'Data import / export'; |
| 576 | + break; |
551 | 577 | case 'project':
|
552 | 578 | if (params.id) {
|
553 | 579 | url = '/project/' + params.id;
|
| 580 | + screenName = 'Project details'; |
554 | 581 | }
|
555 |
| - break; |
| 582 | + break; |
556 | 583 | case 'request':
|
| 584 | + screenName = 'Request - '; |
557 | 585 | let type = params.type || 'latest';
|
558 | 586 | let id = params.id || '0';
|
| 587 | + screenName += type; |
559 | 588 | url = '/request/' + type + '/' + encodeURIComponent(id);
|
560 |
| - break; |
| 589 | + break; |
561 | 590 | case 'drive':
|
562 | 591 | url = '/drive';
|
563 |
| - break; |
| 592 | + screenName = 'Drive selector'; |
| 593 | + break; |
564 | 594 | }
|
565 | 595 | if (url) {
|
566 | 596 | this.set('route.path', url);
|
| 597 | + this.fire('send-analytics', { |
| 598 | + type: 'screenview', |
| 599 | + name: screenName |
| 600 | + }); |
567 | 601 | } else {
|
| 602 | + this.fire('send-analytics', { |
| 603 | + type: 'exception', |
| 604 | + description: 'Route not handled' + JSON.stringify(params), |
| 605 | + fatal: false |
| 606 | + }); |
568 | 607 | throw new Error('The route is not handled correctly', params);
|
569 | 608 | }
|
570 | 609 | },
|
|
0 commit comments