Los gráficos Ignite UI for Web Components permiten el desplazamiento panorámico interactivo y el zoom a través del mouse, el teclado y el tacto.
Web Components Ejemplo de navegación de gráficos
El siguiente ejemplo muestra todas las opciones de panorámica y zoom disponibles. Puede interactuar con el ejemplo usando los botones o seleccionar las opciones que desee usando los menús desplegables o las casillas de verificación.
EXAMPLE
DATA
TS
HTML
CSS
exportclassSampleFinancialData{
publicstatic create(items?: number): any[] {
// initial valueslet v = 10000;
let o = 500;
let h = Math.round(o + (Math.random() * 5));
let l = Math.round(o - (Math.random() * 5));
let c = Math.round(l + (Math.random() * (h - l)));
if (items === undefined) {
items = 200;
}
const today = newDate();
const end = newDate(today.getFullYear(), 11, 1);
let time = this.addDays(end, -items);
const data: any[] = [];
for (let i = 0; i < items; i++) {
const date = time.toDateString();
const label = this.getShortDate(time, false);
// adding new data item
data.push({"Time": time, "Date": date, "Label": label, "Close": c, "Open": o, "High": h, "Low": l, "Volume": v});
// generating new valuesconst mod = Math.random() - 0.45;
o = Math.round(o + (mod * 5 * 2));
v = Math.round(v + (mod * 5 * 100));
h = Math.round(o + (Math.random() * 5));
l = Math.round(o - (Math.random() * 5));
c = Math.round(l + (Math.random() * (h - l)));
time = this.addDays(time, 1);
}
return data;
}
publicstatic addDays(dt: Date, days: number): Date {
returnnewDate(dt.getTime() + days * 24 * 60 * 60 * 1000);
}
publicstatic getShortDate(dt: Date, showYear: boolean): string {
const months = [
"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
];
const ind = dt.getMonth();
const day = dt.getDay() + 1;
let label = months[ind] + " " + day;
if (showYear) {
label += " " + dt.getFullYear();
}
return label;
}
}
ts
<!DOCTYPE html><html><head><title>DataChartNavigation</title><metacharset="UTF-8" /><linkrel="shortcut icon"href="https://static.infragistics.com/xplatform/images/browsers/wc.png" ><linkrel="stylesheet"href="https://fonts.googleapis.com/icon?family=Material+Icons" /><linkrel="stylesheet"href="https://fonts.googleapis.com/css?family=Kanit&display=swap" /><linkrel="stylesheet"href="https://fonts.googleapis.com/css?family=Titillium Web" /><linkrel="stylesheet"href="https://static.infragistics.com/xplatform/css/samples/shared.v8.css"type="text/css" /></head><body><divid="root"><divclass="container sample"><divclass="options horizontal"><divclass="options vertical"style="width: 100px"><buttonid="panUp">Pan Up</button><buttonid="panDown">Pan Down</button></div><divclass="options vertical"style="width: 100px"><buttonid="panLeft">Pan Left</button><buttonid="panRight">Pan Right</button></div><divclass="options vertical"style="width: 100px"><buttonid="zoomIn">Zoom In</button><buttonid="zoomOut">Zoom Out</button></div><divclass="options vertical"style="width: 120px; align-self: center"><labelclass="options-label"style="margin: 5px">Pan Modifier:</label><labelclass="options-label"style="margin: 5px">Zoom Modifier:</label></div><divclass="options vertical"style="width: 100px"><selectid="panModSelect"style="margin: 5px"><option>Alt</option><option>Control</option><option>Shift</option><option>Windows</option><option>Apple</option><option>None</option></select><selectid="dragModSelect"style="margin: 5px"><option>Alt</option><option>Control</option><option>Shift</option><option>Windows</option><option>Apple</option><option>None</option></select></div><divclass="options vertical"style="width: 150px; align-self: center"><labelclass="options-label"style="margin: 5px;">Interaction:</label><labelclass="options-label"style="margin: 5px;">Zooming:</label></div><divclass="options vertical"style="width: 100px"><selectid="interactionSelect"style="margin: 5px"><option>DragZoom</option><option>DragPan</option><option>None</option></select><inputid="zoomEnabled"class="options-item"type="checkbox" @onchange="OnEnableZoomingChange"checked="@IsZoomingEnabled" /></div></div><divclass="container vertical"><igc-data-chartid="chart"width="100%"height="100%"subtitle="Stock Prices Series in Candlestick Display Type"subtitle-top-margin="10"is-horizontal-zoom-enabled="true"is-vertical-zoom-enabled="true"pan-modifier="Alt"drag-modifier="Shift"default-interaction="DragPan"><igc-category-x-axisname="xAxis"label="Label"></igc-category-x-axis><igc-numeric-y-axisname="yAxis"title="Amount (in USD)"title-right-margin="10"label-right-margin="10"label-horizontal-alignment="Left"label-location="OutsideRight"></igc-numeric-y-axis><igc-financial-price-seriesx-axis-name="xAxis"y-axis-name="yAxis"display-type="Candlestick"open-member-path="Open"close-member-path="Close"high-member-path="High"low-member-path="Low"volume-member-path="Volume"show-default-tooltip="true"is-transition-in-enabled="true"title="Price"></igc-financial-price-series></igc-data-chart></div></div></div><!-- This script is needed only for parcel and it will be excluded for webpack -->
<% if (false) { %><scriptsrc="src/index.ts"></script><% } %>
</body></html>html
/* shared styles are loaded from: *//* https://static.infragistics.com/xplatform/css/samples */css
¿Te gusta esta muestra? Obtenga acceso a nuestro kit de herramientas de Ignite UI for Web Components completo y comience a crear sus propias aplicaciones en minutos. Descárgalo gratis.
¿Te gusta esta muestra? Obtenga acceso a nuestro kit de herramientas de Web Components completo y comience a crear sus propias aplicaciones en minutos. Descárgalo gratis.
Navegación de gráficos con interacciones del usuario
El hecho de que el zoom esté activado de forma predeterminada depende del gráfico que esté utilizando. Si está utilizando IgcCategoryChartComponent, está activado de forma predeterminada, pero no está en el IgcDataChartComponent. Para habilitar o deshabilitar la navegación en la interfaz de usuario, debe establecer las isHorizontalZoomEnabled propiedades y/o del isVerticalZoomEnabled gráfico, según la dirección en la que desee habilitar o deshabilitar el zoom.
También es posible hacer zoom o desplazarse simplemente haciendo clic con el mouse o usando el tacto. La propiedad defaultInteraction del gráfico de datos determina lo que sucede al hacer clic con el mouse o al tocar eventos. Esta propiedad tiene como valor predeterminado DragZoom y cuando se establece en esta opción con el zoom habilitado, al hacer clic y arrastrar se colocará un rectángulo de vista previa sobre el área del gráfico que se convertirá en el área ampliada del gráfico. Esta propiedad defaultInteraction también se puede establecer en DragPan para permitir la panorámica o None para evitar estas operaciones.
Navegación por cartas con toque, mouse y teclado
La navegación en el gráfico de datos de Web Components puede realizarse con el tacto, el ratón o el teclado. De forma predeterminada, se pueden invocar las siguientes operaciones mediante operaciones táctiles, de ratón o de teclado:
Panorámica: usando las teclas de flecha 🡐 🡒 🡑 🡓 del teclado o manteniendo presionada la tecla Mayús, haciendo clic y arrastrando con el mouse o presionando y moviendo el dedo mediante el tacto.
Acercar: usando la tecla Re Pág del teclado, girando la rueda del mouse hacia arriba o pellizcando para acercar mediante el tacto.
Alejar: use la tecla Av Pág del teclado, gire la rueda del mouse hacia abajo o pellizque para alejar mediante el tacto.
Ajustar al área del gráfico: usando la tecla Inicio en el teclado. No hay operación táctil ni de mouse para esto.
Zoom de área: haga clic y arrastre el mouse dentro del área de trazado con la propiedad defaultInteraction establecida en su valor predeterminado: DragZoom.
Las operaciones de zoom y panorámica también se pueden habilitar mediante el uso de teclas modificadoras configurando las propiedades dragModifier y panModifier, respectivamente. Estas propiedades se pueden configurar con las siguientes teclas modificadoras y, al presionarlas, se ejecutará la operación correspondiente:
Valor del modificador
Clave correspondiente
Shift
Cambio
Control
Control
Windows
Ganar
Apple
Manzana
None
sin llaves
Navegación de gráficos con barras de desplazamiento
Estos se pueden configurar con las siguientes opciones.
Persistent: las barras de desplazamiento siempre permanecen visibles, siempre que el gráfico esté ampliado, y desaparecen cuando se reduce por completo.
Fading: las barras de desplazamiento desaparecen después de su uso y reaparecen cuando el mouse está cerca de su ubicación.
FadeToLine: las barras de desplazamiento se reducen a una línea más delgada cuando no se utiliza el zoom.
None: predeterminado, no se muestran barras de desplazamiento.
El siguiente ejemplo demuestra cómo habilitar las barras de desplazamiento.
EXAMPLE
DATA
TS
HTML
CSS
//begin async dataexportclassMultipleStocksextendsArray<Array<StockItem>> {
publicstaticasync fetch(): Promise<MultipleStocks> {
const dataSources: any[] = [
//await this.getAmazonStock(),awaitthis.getGoogleStock(),
awaitthis.getAmazonStock(),
//await this.getTeslaStock()
];
returnnewPromise<MultipleStocks>((resolve, reject) => {
resolve(dataSources);
});
}
/** gets Amazon stock OHLC prices from a .JSON file */publicstaticasync getAmazonStock(): Promise<StockItem[]> {
let url = "https://static.infragistics.com/xplatform/data/stocks/stockAmazon.json";
let response = await fetch(url);
let jsonData = await response.json();
let stockData = this.convertData(jsonData);
// setting data intent for Series Title, e.g. FinancialChart usage
(stockData asany).__dataIntents = {
close: ["SeriesTitle/Amazon"]
};
// console.log("fetchAmazonStock: ", stockData.length);returnnewPromise<StockItem[]>((resolve, reject) => {
resolve(stockData);
});
}
/** gets Tesla stock OHLC prices from a .JSON file */publicstaticasync getTeslaStock(): Promise<StockItem[]> {
let url = "https://static.infragistics.com/xplatform/data/stocks/stockTesla.json";
let response = await fetch(url);
let jsonData = await response.json();
let stockData = this.convertData(jsonData);
// setting data intent for Series Title, e.g. FinancialChart usage
(stockData asany).__dataIntents = {
close: ["SeriesTitle/Tesla"]
};
returnnewPromise<StockItem[]>((resolve, reject) => {
resolve(stockData);
});
}
/** gets Microsoft stock OHLC prices from a .JSON file */publicstaticasync getMicrosoftStock(): Promise<StockItem[]> {
let url = "https://static.infragistics.com/xplatform/data/stocks/stockMicrosoft.json";
let response = await fetch(url);
let jsonData = await response.json();
let stockData = this.convertData(jsonData);
// setting data intent for Series Title, e.g. FinancialChart usage
(stockData asany).__dataIntents = {
close: ["SeriesTitle/Microsoft"]
};
returnnewPromise<StockItem[]>((resolve, reject) => {
resolve(stockData);
});
}
/** gets Google stock OHLC prices from a .JSON file */publicstaticasync getGoogleStock(): Promise<StockItem[]> {
let url = "https://static.infragistics.com/xplatform/data/stocks/stockGoogle.json";
let response = await fetch(url);
let jsonData = await response.json();
let stockData = this.convertData(jsonData);
// setting data intent for Series Title, e.g. FinancialChart usage
(stockData asany).__dataIntents = {
close: ["SeriesTitle/Google"]
};
returnnewPromise<StockItem[]>((resolve, reject) => {
resolve(stockData);
});
}
publicstatic convertData(jsonData: any[]): StockItem[] {
let stockItems: StockItem[] = [];
for (let json of jsonData) {
let parts = json.date.split("-"); // "2020-01-01"let item = new StockItem();
item.date = newDate(parts[0], parts[1], parts[2],13,0,0);
item.open = json.open;
item.high = json.high;
item.low = json.low;
item.close = json.close;
item.volume = json.volume;
stockItems.push(item);
}
return stockItems;
}
}
exportclassStockItem{
public open?: number;
public close?: number;
public high?: number;
public low?: number;
public volume?: number;
public date?: Date;
}
//end async datats
<!DOCTYPE html><html><head><title>Sample | Ignite UI | Web Components | infragistics</title><metacharset="UTF-8" /><linkrel="shortcut icon"href="https://static.infragistics.com/xplatform/images/browsers/wc.png" ><linkrel="stylesheet"href="https://fonts.googleapis.com/icon?family=Material+Icons" /><linkrel="stylesheet"href="https://fonts.googleapis.com/css?family=Kanit&display=swap" /><linkrel="stylesheet"href="https://fonts.googleapis.com/css?family=Titillium Web" /><linkrel="stylesheet"href="https://static.infragistics.com/xplatform/css/samples/shared.v8.css" /><linkrel="stylesheet"href="/src/index.css"type="text/css" /></head><body><divid="root"><divclass="container sample"><divclass="container fill"><igc-financial-chartname="chart"id="chart"is-toolbar-visible="false"is-vertical-zoom-enabled="true"is-horizontal-zoom-enabled="true"vertical-view-scrollbar-mode="Fading"horizontal-view-scrollbar-mode="Persistent"zoom-slider-type="None"window-rect="0, 0, 0.5, 1"></igc-financial-chart></div></div></div><!-- This script is needed only for parcel and it will be excluded for webpack -->
<% if (false) { %><scriptsrc="src/index.ts"></script><% } %>
</body></html>html
/* shared styles are loaded from: *//* https://static.infragistics.com/xplatform/css/samples */css
Navegación de gráficos a través del código
La navegación por código del gráfico solo se puede utilizar para el control IgcDataChartComponent.
El gráfico de datos Web Components proporciona varias propiedades de navegación que se actualizan cada vez que se realiza una operación de zoom o panorámica en el gráfico. También puede establecer cada una de estas propiedades para acercar o desplazar el gráfico de datos mediante programación. A continuación se muestra una lista de estas propiedades:
windowPositionHorizontal: un valor numérico que describe la porción X del rectángulo de vista de contenido que se muestra en el gráfico de datos.
windowPositionVertical: un valor numérico que describe la parte Y del rectángulo de vista de contenido que se muestra en el gráfico de datos.
windowRect: un objeto Rect que representa un rectángulo que representa la parte del gráfico que está actualmente a la vista. Por ejemplo, un windowRect de "0, 0, 1, 1" sería la totalidad del gráfico de datos.
windowScaleHorizontal: un valor numérico que describe la parte del ancho del rectángulo de vista de contenido que se muestra en el gráfico de datos.
windowScaleVertical: un valor numérico que describe la parte de altura del rectángulo de vista de contenido que se muestra en el gráfico de datos.
Recursos adicionales
Puede encontrar más información sobre las funciones de gráficos relacionadas en estos temas: