@grptx/ng-canvas-gauges
Version:
Angular 14+ component wrapper for the canvas-gauges lib written by @Mikhus
128 lines (127 loc) • 5.2 kB
TypeScript
/*!
* The MIT License (MIT)
*
* Copyright (c) 2017 Vlad Martynenko <vladimir.martynenko.work@gmail.com>
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
import { NgZone, ElementRef, OnInit, AfterViewInit } from '@angular/core';
import * as CanvasGauges from 'canvas-gauges';
import * as i0 from "@angular/core";
/**
* Base gauge component for the Gauges rendering
* T - Type of the Gauge to be rendered (Currently RadialGauge, LinearGauge from the original library)
* T2 - Type of config options used by the particular gauge (RadialGaugeOptions, LinearGaugeOptions)
*/
export declare abstract class BaseGauge<T extends CanvasGauges.BaseGauge, T2 extends CanvasGauges.GenericOptions> implements OnInit, AfterViewInit {
private el;
zone: NgZone;
/**
* Canvas element on the template used by the library to draw gauge element
*/
protected canvas: ElementRef;
/**
* A gauge instance responsible for rendering and updates on the canvas.
* Subclasses should initialize in their ngOnInit implementation.
*/
protected gauge: T;
/**
* Flag indicating that OnViewInit life-cycle has completed
*/
private isInited;
/**
* value property of gauge prior to component view initialization
*/
private preInitValue;
/**
* options property of gauge prior to component view initialization
*/
private preInitOptions;
/**
* Listen for attribute changes, i.e., options properties that are stored
* as attributes on this ElementRef
*/
private domListener;
/**
*
* @param el - reference to the element of the whole component, used to scrape options declared on the component itself
* @param zone - required to redraw gauge outside of Angular, due to animation lags caused by the ovewritten function of the ngZone
*/
constructor(el: ElementRef, zone: NgZone);
/**
* Subclasses should instantiate the CanvasGauge object in the child component
*/
abstract ngOnInit(): void;
/**
* Returns gauges properties as an options object.
* Option properties consist of the attribute-based properties and those
* explicitly set.
* @returns <T2>
*/
get options(): T2;
/**
* Assign gauge options at anytime in the lifecycle.
* @param newOptions - assign the style and size properties
*/
set options(newOptions: T2);
/**
* Assign the value of the gauge visual indicator such as a needle or pointer
* @param newValue the guage new value
*/
set value(newValue: number);
/**
* Update the gauge options. Do not use until after OnViewInit() before using.
*
* Special implementation note - options.properties are maintained as
* attribute name->value on this component's elementRef. Thus this method
* maps each newOptions property onto the property's corresponding attribute.
* The attribute update triggers a DOM mutation event which "this" listens for.
* See #listenForDOMEvents()
*
* @param newOptions - the options to update the gauge
*/
update(newOptions: T2 | {}): void;
/**
* Perform gauge initialization.
* Subclasses that override this method must this super version
* for proper operation.
*/
ngAfterViewInit(): void;
/**
* Listen for attribute-change events that are created when updating
* the options of this gauge.
*/
protected listenForDOMEvents(): void;
/**
* Discontinue listening for attribute change events.
*/
protected stopListeningForDOMEvents(): void;
/**
* Initalize the gauge with all options defined by attributes and
* parent component options.
*/
protected initGauge(): void;
/**
* Performs the gauge update using the current options
* @param options The options for the guage
*/
protected basicUpdate(options: T2): void;
static ɵfac: i0.ɵɵFactoryDeclaration<BaseGauge<any, any>, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<BaseGauge<any, any>, never, never, { "options": "options"; "value": "value"; }, {}, never, never, false>;
}