@covalent/echarts
Version:
Teradata Charts built on echarts
221 lines • 19 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
import { Component, Input, Directive, TemplateRef, ChangeDetectionStrategy, ElementRef, ChangeDetectorRef, ContentChild, ViewChild, } from '@angular/core';
import { TdChartOptionsService, assignDefined, } from '@covalent/echarts/base';
export class TdTooltipContext {
}
if (false) {
/** @type {?} */
TdTooltipContext.prototype.$implicit;
/** @type {?} */
TdTooltipContext.prototype.ticket;
}
export class TdChartTooltipFormatterDirective {
}
TdChartTooltipFormatterDirective.decorators = [
{ type: Directive, args: [{
selector: 'ng-template[tdTooltipFormatter]',
},] }
];
export class TdChartTooltipComponent {
/**
* @param {?} _changeDetectorRef
* @param {?} _elementRef
* @param {?} _optionsService
*/
constructor(_changeDetectorRef, _elementRef, _optionsService) {
this._changeDetectorRef = _changeDetectorRef;
this._elementRef = _elementRef;
this._optionsService = _optionsService;
this._state = {};
this._context = new TdTooltipContext();
this.config = {};
this.show = true;
this.trigger = 'axis';
this.showContent = true;
this.alwaysShowContent = false;
this.triggerOn = 'mousemove|click';
this.showDelay = 0;
this.hideDelay = 0;
this.enterable = false;
this.confine = false;
this.transitionDuration = 0.5;
// series
this.backgroundColor = 'rgba(50,50,50,0.7)'; // series
// series
this.borderColor = '#333'; // series
// series
this.borderWidth = 0; // series
// series
this.padding = 5; // series
// series
this.textStyle = {
// series
color: '#FFF',
};
}
/**
* @return {?}
*/
ngOnChanges() {
this._setOptions();
}
/**
* @return {?}
*/
ngOnDestroy() {
this._removeOption();
}
/**
* @return {?}
*/
_setOptions() {
/** @type {?} */
let config = assignDefined(this._state, {
show: this.show,
trigger: this.trigger,
axisPointer: this.axisPointer,
showContent: this.showContent,
alwaysShowContent: this.alwaysShowContent,
triggerOn: this.triggerOn,
showDelay: this.showDelay,
hideDelay: this.hideDelay,
enterable: this.enterable,
confine: this.confine,
transitionDuration: this.transitionDuration,
position: this.position,
formatter: this.formatter ? this.formatter : (this.formatterTemplate ? this._formatter() : undefined),
backgroundColor: this.backgroundColor,
borderColor: this.borderColor,
borderWidth: this.borderWidth,
padding: this.padding,
textStyle: this.textStyle,
extraCssText: this.extraCssText,
}, this.config ? this.config : {});
// set tooltip configuration in parent chart and render new configurations
this._optionsService.setOption('tooltip', config);
}
/**
* @return {?}
*/
_removeOption() {
this._optionsService.clearOption('tooltip');
}
/**
* @return {?}
*/
_formatter() {
return (params, ticket, callback) => {
this._context = {
$implicit: params,
ticket: ticket,
};
// timeout set since we need to set the HTML at the end of the angular lifecycle when
// the tooltip delay is more than 0
setTimeout(() => {
callback(ticket, ((/** @type {?} */ (this._elementRef.nativeElement))).innerHTML);
});
this._changeDetectorRef.markForCheck();
return ((/** @type {?} */ (this._elementRef.nativeElement))).innerHTML;
};
}
}
TdChartTooltipComponent.decorators = [
{ type: Component, args: [{
selector: 'td-chart-tooltip',
template: "<ng-template #tooltipContent\n [ngTemplateOutlet]=\"formatterTemplate\"\n [ngTemplateOutletContext]=\"_context\">\n</ng-template>",
changeDetection: ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
TdChartTooltipComponent.ctorParameters = () => [
{ type: ChangeDetectorRef },
{ type: ElementRef },
{ type: TdChartOptionsService }
];
TdChartTooltipComponent.propDecorators = {
config: [{ type: Input, args: ['config',] }],
show: [{ type: Input, args: ['show',] }],
trigger: [{ type: Input, args: ['trigger',] }],
axisPointer: [{ type: Input, args: ['axisPointer',] }],
showContent: [{ type: Input, args: ['showContent',] }],
alwaysShowContent: [{ type: Input, args: ['alwaysShowContent',] }],
triggerOn: [{ type: Input, args: ['triggerOn',] }],
showDelay: [{ type: Input, args: ['showDelay',] }],
hideDelay: [{ type: Input, args: ['hideDelay',] }],
enterable: [{ type: Input, args: ['enterable',] }],
renderMode: [{ type: Input, args: ['renderMode',] }],
confine: [{ type: Input, args: ['confine',] }],
transitionDuration: [{ type: Input, args: ['transitionDuration',] }],
position: [{ type: Input, args: ['position',] }],
formatter: [{ type: Input, args: ['formatter',] }],
backgroundColor: [{ type: Input, args: ['backgroundColor',] }],
borderColor: [{ type: Input, args: ['borderColor',] }],
borderWidth: [{ type: Input, args: ['borderWidth',] }],
padding: [{ type: Input, args: ['padding',] }],
textStyle: [{ type: Input, args: ['textStyle',] }],
extraCssText: [{ type: Input, args: ['extraCssText',] }],
formatterTemplate: [{ type: ContentChild, args: [TdChartTooltipFormatterDirective, { read: TemplateRef },] }],
fullTemplate: [{ type: ViewChild, args: ['tooltipContent',] }]
};
if (false) {
/** @type {?} */
TdChartTooltipComponent.prototype._state;
/** @type {?} */
TdChartTooltipComponent.prototype._context;
/** @type {?} */
TdChartTooltipComponent.prototype.config;
/** @type {?} */
TdChartTooltipComponent.prototype.show;
/** @type {?} */
TdChartTooltipComponent.prototype.trigger;
/** @type {?} */
TdChartTooltipComponent.prototype.axisPointer;
/** @type {?} */
TdChartTooltipComponent.prototype.showContent;
/** @type {?} */
TdChartTooltipComponent.prototype.alwaysShowContent;
/** @type {?} */
TdChartTooltipComponent.prototype.triggerOn;
/** @type {?} */
TdChartTooltipComponent.prototype.showDelay;
/** @type {?} */
TdChartTooltipComponent.prototype.hideDelay;
/** @type {?} */
TdChartTooltipComponent.prototype.enterable;
/** @type {?} */
TdChartTooltipComponent.prototype.renderMode;
/** @type {?} */
TdChartTooltipComponent.prototype.confine;
/** @type {?} */
TdChartTooltipComponent.prototype.transitionDuration;
/** @type {?} */
TdChartTooltipComponent.prototype.position;
/** @type {?} */
TdChartTooltipComponent.prototype.formatter;
/** @type {?} */
TdChartTooltipComponent.prototype.backgroundColor;
/** @type {?} */
TdChartTooltipComponent.prototype.borderColor;
/** @type {?} */
TdChartTooltipComponent.prototype.borderWidth;
/** @type {?} */
TdChartTooltipComponent.prototype.padding;
/** @type {?} */
TdChartTooltipComponent.prototype.textStyle;
/** @type {?} */
TdChartTooltipComponent.prototype.extraCssText;
/** @type {?} */
TdChartTooltipComponent.prototype.formatterTemplate;
/** @type {?} */
TdChartTooltipComponent.prototype.fullTemplate;
/** @type {?} */
TdChartTooltipComponent.prototype._changeDetectorRef;
/** @type {?} */
TdChartTooltipComponent.prototype._elementRef;
/** @type {?} */
TdChartTooltipComponent.prototype._optionsService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY292YWxlbnQvZWNoYXJ0cy90b29sdGlwLyIsInNvdXJjZXMiOlsidG9vbHRpcC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFNBQVMsRUFDVCxXQUFXLEVBQ1gsdUJBQXVCLEVBQ3ZCLFVBQVUsRUFDVixpQkFBaUIsRUFFakIsWUFBWSxFQUNaLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGFBQWEsR0FJZCxNQUFNLHdCQUF3QixDQUFDO0FBRWhDLE1BQU0sT0FBTyxnQkFBZ0I7Q0FHNUI7OztJQUZDLHFDQUFlOztJQUNmLGtDQUFlOztBQU1qQixNQUFNLE9BQU8sZ0NBQWdDOzs7WUFINUMsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpQ0FBaUM7YUFDNUM7O0FBU0QsTUFBTSxPQUFPLHVCQUF1Qjs7Ozs7O0lBa0NsQyxZQUFvQixrQkFBcUMsRUFDckMsV0FBdUIsRUFDdkIsZUFBc0M7UUFGdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixvQkFBZSxHQUFmLGVBQWUsQ0FBdUI7UUFsQ2xELFdBQU0sR0FBUSxFQUFFLENBQUM7UUFFekIsYUFBUSxHQUFxQixJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFFbkMsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUVuQixTQUFJLEdBQVksSUFBSSxDQUFDO1FBQ2xCLFlBQU8sR0FBc0IsTUFBTSxDQUFDO1FBRWhDLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBQ3RCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUMzQyxjQUFTLEdBQXVCLGlCQUFpQixDQUFDO1FBQ2xELGNBQVMsR0FBVyxDQUFDLENBQUM7UUFDdEIsY0FBUyxHQUFXLENBQUMsQ0FBQztR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QTBDOztJQUMxQyw0Q0FBK0M7O0lBQy9DLDZDQUFxRDs7SUFDckQsMENBQTJDOztJQUMzQyxxREFBOEQ7O0lBQzlELDJDQUErQzs7SUFDL0MsNENBQWlEOztJQUNqRCxrREFBeUU7O0lBQ3pFLDhDQUFtRDs7SUFDbkQsOENBQThDOztJQUM5QywwQ0FBc0M7O0lBQ3RDLDRDQUVFOztJQUNGLCtDQUE0Qzs7SUFFNUMsb0RBQXlHOztJQUN6RywrQ0FBNEQ7O0lBRWhELHFEQUE2Qzs7SUFDN0MsOENBQStCOztJQUMvQixrREFBOEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBEaXJlY3RpdmUsXG4gIFRlbXBsYXRlUmVmLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgRWxlbWVudFJlZixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE9uQ2hhbmdlcyxcbiAgQ29udGVudENoaWxkLFxuICBWaWV3Q2hpbGQsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIFRkQ2hhcnRPcHRpb25zU2VydmljZSxcbiAgYXNzaWduRGVmaW5lZCxcbiAgVGRUb29sdGlwVHJpZ2dlcixcbiAgVGRUb29sdGlwVHJpZ2dlck9uLFxuICBUZFRvb2x0aXBQb3NpdGlvbixcbn0gZnJvbSAnQGNvdmFsZW50L2VjaGFydHMvYmFzZSc7XG5cbmV4cG9ydCBjbGFzcyBUZFRvb2x0aXBDb250ZXh0IHtcbiAgJGltcGxpY2l0OiBhbnk7XG4gIHRpY2tldDogc3RyaW5nO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVt0ZFRvb2x0aXBGb3JtYXR0ZXJdJyxcbn0pXG5leHBvcnQgY2xhc3MgVGRDaGFydFRvb2x0aXBGb3JtYXR0ZXJEaXJlY3RpdmUge1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZC1jaGFydC10b29sdGlwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rvb2x0aXAuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVGRDaGFydFRvb2x0aXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBfc3RhdGU6IGFueSA9IHt9O1xuXG4gIF9jb250ZXh0OiBUZFRvb2x0aXBDb250ZXh0ID0gbmV3IFRkVG9vbHRpcENvbnRleHQoKTtcblxuICBASW5wdXQoJ2NvbmZpZycpIGNvbmZpZzogYW55ID0ge307XG5cbiAgQElucHV0KCdzaG93Jykgc2hvdzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgndHJpZ2dlcicpIHRyaWdnZXI6IFRkVG9vbHRpcFRyaWdnZXIgPSAgJ2F4aXMnO1xuICBASW5wdXQoJ2F4aXNQb2ludGVyJykgYXhpc1BvaW50ZXI6IGFueTtcbiAgQElucHV0KCdzaG93Q29udGVudCcpIHNob3dDb250ZW50OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCdhbHdheXNTaG93Q29udGVudCcpIGFsd2F5c1Nob3dDb250ZW50OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgndHJpZ2dlck9uJykgdHJpZ2dlck9uOiBUZFRvb2x0aXBUcmlnZ2VyT24gPSAnbW91c2Vtb3ZlfGNsaWNrJztcbiAgQElucHV0KCdzaG93RGVsYXknKSBzaG93RGVsYXk6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgnaGlkZURlbGF5JykgaGlkZURlbGF5OiBudW1iZXIgPSAwO1xuICBASW5wdXQoJ2VudGVyYWJsZScpIGVudGVyYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoJ3JlbmRlck1vZGUnKSByZW5kZXJNb2RlOiAnaHRtbCcgfCAncmljaFRleHQnO1xuICBASW5wdXQoJ2NvbmZpbmUnKSBjb25maW5lOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgndHJhbnNpdGlvbkR1cmF0aW9uJykgdHJhbnNpdGlvbkR1cmF0aW9uOiBudW1iZXIgPSAwLjU7XG4gIEBJbnB1dCgncG9zaXRpb24nKSBwb3NpdGlvbjogVGRUb29sdGlwUG9zaXRpb247IC8vIHNlcmllc1xuICBASW5wdXQoJ2Zvcm1hdHRlcicpIGZvcm1hdHRlcjogc3RyaW5nIHwgRnVuY3Rpb247IC8vIHNlcmllc1xuICBASW5wdXQoJ2JhY2tncm91bmRDb2xvcicpIGJhY2tncm91bmRDb2xvcjogc3RyaW5nID0gJ3JnYmEoNTAsNTAsNTAsMC43KSc7IC8vIHNlcmllc1xuICBASW5wdXQoJ2JvcmRlckNvbG9yJykgYm9yZGVyQ29sb3I6IHN0cmluZyA9ICcjMzMzJzsgLy8gc2VyaWVzXG4gIEBJbnB1dCgnYm9yZGVyV2lkdGgnKSBib3JkZXJXaWR0aDogbnVtYmVyID0gMDsgLy8gc2VyaWVzXG4gIEBJbnB1dCgncGFkZGluZycpIHBhZGRpbmc6IG51bWJlciA9IDU7IC8vIHNlcmllc1xuICBASW5wdXQoJ3RleHRTdHlsZScpIHRleHRTdHlsZTogYW55ID0geyAvLyBzZXJpZXNcbiAgICBjb2xvcjogJyNGRkYnLFxuICB9O1xuICBASW5wdXQoJ2V4dHJhQ3NzVGV4dCcpIGV4dHJhQ3NzVGV4dDogc3RyaW5nOyAvLyBzZXJpZXNcblxuICBAQ29udGVudENoaWxkKFRkQ2hhcnRUb29sdGlwRm9ybWF0dGVyRGlyZWN0aXZlLCB7cmVhZDogVGVtcGxhdGVSZWZ9KSBmb3JtYXR0ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgndG9vbHRpcENvbnRlbnQnKSBmdWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICAgICAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICAgICAgICBwcml2YXRlIF9vcHRpb25zU2VydmljZTogVGRDaGFydE9wdGlvbnNTZXJ2aWNlKSB7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLl9zZXRPcHRpb25zKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9yZW1vdmVPcHRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldE9wdGlvbnMoKTogdm9pZCB7XG4gICAgbGV0IGNvbmZpZzogYW55ID0gYXNzaWduRGVmaW5lZCh0aGlzLl9zdGF0ZSwge1xuICAgICAgc2hvdzogdGhpcy5zaG93LFxuICAgICAgdHJpZ2dlcjogdGhpcy50cmlnZ2VyLFxuICAgICAgYXhpc1BvaW50ZXI6IHRoaXMuYXhpc1BvaW50ZXIsXG4gICAgICBzaG93Q29udGVudDogdGhpcy5zaG93Q29udGVudCxcbiAgICAgIGFsd2F5c1Nob3dDb250ZW50OiB0aGlzLmFsd2F5c1Nob3dDb250ZW50LFxuICAgICAgdHJpZ2dlck9uOiB0aGlzLnRyaWdnZXJPbixcbiAgICAgIHNob3dEZWxheTogdGhpcy5zaG93RGVsYXksXG4gICAgICBoaWRlRGVsYXk6IHRoaXMuaGlkZURlbGF5LFxuICAgICAgZW50ZXJhYmxlOiB0aGlzLmVudGVyYWJsZSxcbiAgICAgIGNvbmZpbmU6IHRoaXMuY29uZmluZSxcbiAgICAgIHRyYW5zaXRpb25EdXJhdGlvbjogdGhpcy50cmFuc2l0aW9uRHVyYXRpb24sXG4gICAgICBwb3NpdGlvbjogdGhpcy5wb3NpdGlvbixcbiAgICAgIGZvcm1hdHRlcjogdGhpcy5mb3JtYXR0ZXIgPyB0aGlzLmZvcm1hdHRlciA6ICh0aGlzLmZvcm1hdHRlclRlbXBsYXRlID8gdGhpcy5fZm9ybWF0dGVyKCkgOiB1bmRlZmluZWQpLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLmJhY2tncm91bmRDb2xvcixcbiAgICAgIGJvcmRlckNvbG9yOiB0aGlzLmJvcmRlckNvbG9yLFxuICAgICAgYm9yZGVyV2lkdGg6IHRoaXMuYm9yZGVyV2lkdGgsXG4gICAgICBwYWRkaW5nOiB0aGlzLnBhZGRpbmcsXG4gICAgICB0ZXh0U3R5bGU6IHRoaXMudGV4dFN0eWxlLFxuICAgICAgZXh0cmFDc3NUZXh0OiB0aGlzLmV4dHJhQ3NzVGV4dCxcbiAgICB9LCB0aGlzLmNvbmZpZyA/IHRoaXMuY29uZmlnIDoge30pO1xuICAgIC8vIHNldCB0b29sdGlwIGNvbmZpZ3VyYXRpb24gaW4gcGFyZW50IGNoYXJ0IGFuZCByZW5kZXIgbmV3IGNvbmZpZ3VyYXRpb25zXG4gICAgdGhpcy5fb3B0aW9uc1NlcnZpY2Uuc2V0T3B0aW9uKCd0b29sdGlwJywgY29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbW92ZU9wdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9vcHRpb25zU2VydmljZS5jbGVhck9wdGlvbigndG9vbHRpcCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZm9ybWF0dGVyKCk6IEZ1bmN0aW9uIHtcbiAgICByZXR1cm4gKHBhcmFtczogYW55LCB0aWNrZXQ6IGFueSwgY2FsbGJhY2s6ICh0aWNrZXQ6IHN0cmluZywgaHRtbDogc3RyaW5nKSA9PiB2b2lkKSA9PiB7XG4gICAgICB0aGlzLl9jb250ZXh0ID0ge1xuICAgICAgICAkaW1wbGljaXQ6IHBhcmFtcyxcbiAgICAgICAgdGlja2V0OiB0aWNrZXQsXG4gICAgICB9O1xuICAgICAgLy8gdGltZW91dCBzZXQgc2luY2Ugd2UgbmVlZCB0byBzZXQgdGhlIEhUTUwgYXQgdGhlIGVuZCBvZiB0aGUgYW5ndWxhciBsaWZlY3ljbGUgd2hlblxuICAgICAgLy8gdGhlIHRvb2x0aXAgZGVsYXkgaXMgbW9yZSB0aGFuIDBcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjYWxsYmFjayh0aWNrZXQsICg8SFRNTEVsZW1lbnQ+dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KS5pbm5lckhUTUwpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHJldHVybiAoPEhUTUxFbGVtZW50PnRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkuaW5uZXJIVE1MO1xuICAgIH07XG4gIH1cblxufVxuIl19