Поделиться через


Использование SVG

SVGUtils — это набор функций и классов для упрощения манипуляций SVG для визуальных элементов Power BI.

Установка

Чтобы установить пакет, выполните следующую команду в каталоге с текущим визуальным элементом:

npm install powerbi-visuals-utils-svgutils --save

CssConstants

Модуль CssConstants предоставляет специальную функцию и интерфейс для работы с селекторами классов.

Модуль powerbi.extensibility.utils.svg.CssConstants предоставляет следующую функцию и интерфейс:

ClassAndSelector

Этот интерфейс описывает общие свойства селектора классов.

interface ClassAndSelector {
  class: string;
  selector: string;
}

createClassAndSelector

Эта функция создает экземпляр ClassAndSelector с именем класса.

function createClassAndSelector(className: string): ClassAndSelector;

Пример:

import { CssConstants } from "powerbi-visuals-utils-svgutils";
import createClassAndSelector = CssConstants.createClassAndSelector;
import ClassAndSelector = CssConstants.ClassAndSelector;

let divSelector: ClassAndSelector = createClassAndSelector("sample-block");

divSelector.selector === ".sample-block"; // returns: true
divSelector.class === "sample-block"; // returns: true

манипуляция

Этот manipulation метод предоставляет некоторые специальные функции для создания строк, которые можно использовать со свойством преобразования SVG.

Модуль предоставляет следующие функции:

translate

Эта функция создает строку перевода для использования со свойством преобразования SVG.

function translate(x: number, y: number): string;

Пример:

import { manipulation } from "powerbi-visuals-utils-svgutils";
// ...

manipulation.translate(100, 100);

// returns: translate(100,100)

translateXWithPixels

Эта функция создает строку translateX для использования со свойством преобразования SVG.

function translateXWithPixels(x: number): string;

Пример:

import { manipulation } from "powerbi-visuals-utils-svgutils";
// ...

manipulation.translateXWithPixels(100);

// returns: translateX(100px)

translateWithPixels

Эта функция создает строку перевода для использования со свойством преобразования SVG.

function translateWithPixels(x: number, y: number): string;

Пример:

import { manipulation } from "powerbi-visuals-utils-svgutils";
// ...

manipulation.translateWithPixels(100, 100);

// returns: translate(100px,100px)

translateAndRotate

Эта функция создает строку преобразования преобразования для использования со свойством преобразования SVG.

function translateAndRotate(
  x: number,
  y: number,
  px: number,
  py: number,
  angle: number
): string;

Пример:

import { manipulation } from "powerbi-visuals-utils-svgutils";
// ...

manipulation.translateAndRotate(100, 100, 50, 50, 35);

// returns: translate(100,100) rotate(35,50,50)

scale

Эта функция создает строку масштабирования для использования в свойстве преобразования CSS.

function scale(scale: number): string;

Пример:

import { manipulation } from "powerbi-visuals-utils-svgutils";
// ...

manipulation.scale(50);

// returns: scale(50)

преобразованиеOrigin

Эта функция создает строку источника преобразования для использования в свойстве преобразования преобразования CSS.

function transformOrigin(xOffset: string, yOffset: string): string;

Пример:

import { manipulation } from "powerbi-visuals-utils-svgutils";
// ...

manipulation.transformOrigin(5, 5);

// returns: 5 5

flushAllD3Transitions

Эта функция заставляет каждый переход D3 завершить.

function flushAllD3Transitions(): void;

Пример:

import { manipulation } from "powerbi-visuals-utils-svgutils";
// ...

manipulation.flushAllD3Transitions();

// forces every transition of D3 to complete

parseTranslateTransform

Эта функция анализирует строку преобразования со значением "translate(x,y)".

function parseTranslateTransform(input: string): { x: string; y: string };

Пример:

import { manipulation } from "powerbi-visuals-utils-svgutils";
// ...

manipulation.parseTranslateTransform("translate(100px,100px)");

// returns: { "x":"100px", "y":"100px" }

createArrow

Эта функция создает стрелку.

function createArrow(
  width: number,
  height: number,
  rotate: number
): { path: string; transform: string };

Пример:

import { manipulation } from "powerbi-visuals-utils-svgutils";
// ...

manipulation.createArrow(10, 20, 5);

/* returns: {
    "path": "M0 0L0 20L10 10 Z",
    "transform": "rotate(5 5 10)"
}*/

Rect

Модуль Rect предоставляет некоторые специальные функции для управления прямоугольниками.

Модуль предоставляет следующие функции:

getOffset

Эта функция возвращает смещение прямоугольника.

function getOffset(rect: IRect): IPoint;

Пример:

import { shapes } from "powerbi-visuals-utils-svgutils";
import Rect = shapes.Rect;
// ...

Rect.getOffset({ left: 25, top: 25, width: 100, height: 100 });

/* returns: {
    x: 25,
    y: 25
}*/

getSize

Эта функция возвращает размер прямоугольника.

function getSize(rect: IRect): ISize;

Пример:

import { shapes } from "powerbi-visuals-utils-svgutils";
import Rect = shapes.Rect;
// ...

Rect.getSize({ left: 25, top: 25, width: 100, height: 100 });

/* returns: {
    width: 100,
    height: 100
}*/

setSize

Эта функция изменяет размер прямоугольника.

function setSize(rect: IRect, value: ISize): void;

Пример:

import { shapes } from "powerbi-visuals-utils-svgutils";
import Rect = shapes.Rect;
// ...

let rectangle = { left: 25, top: 25, width: 100, height: 100 };

Rect.setSize(rectangle, { width: 250, height: 250 });

// rectangle === { left: 25, top: 25, width: 250, height: 250 }

Эта функция возвращает правое положение прямоугольника.

function right(rect: IRect): number;

Пример:

import { shapes } from "powerbi-visuals-utils-svgutils";
import Rect = shapes.Rect;
// ...

Rect.right({ left: 25, top: 25, width: 100, height: 100 });

// returns: 125

Снизу

Эта функция возвращает нижнее положение прямоугольника.

function bottom(rect: IRect): number;

Пример:

import { shapes } from "powerbi-visuals-utils-svgutils";
import Rect = shapes.Rect;
// ...

Rect.bottom({ left: 25, top: 25, width: 100, height: 100 });

// returns: 125

topLeft

Эта функция возвращает верхнюю левую позицию прямоугольника.

function topLeft(rect: IRect): IPoint;

Пример:

import { shapes } from "powerbi-visuals-utils-svgutils";
import Rect = shapes.Rect;
// ...

Rect.topLeft({ left: 25, top: 25, width: 100, height: 100 });

// returns: { x: 25, y: 25 }

topRight

Эта функция возвращает правое верхнее положение прямоугольника.

function topRight(rect: IRect): IPoint;

Пример:

import { shapes } from "powerbi-visuals-utils-svgutils";
import Rect = shapes.Rect;
// ...

Rect.topRight({ left: 25, top: 25, width: 100, height: 100 });

// returns: { x: 125, y: 25 }

bottomLeft

Эта функция возвращает левое нижнее положение прямоугольника.

function bottomLeft(rect: IRect): IPoint;

Пример:

import { shapes } from "powerbi-visuals-utils-svgutils";
import Rect = shapes.Rect;
// ...

Rect.bottomLeft({ left: 25, top: 25, width: 100, height: 100 });

// returns: { x: 25, y: 125 }

нижний Райт

Эта функция возвращает правое нижнее положение прямоугольника.

function bottomRight(rect: IRect): IPoint;

Пример:

import { shapes } from "powerbi-visuals-utils-svgutils";
import Rect = shapes.Rect;
// ...

Rect.bottomRight({ left: 25, top: 25, width: 100, height: 100 });

// returns: { x: 125, y: 125 }

clone

Эта функция создает копию прямоугольника.

function clone(rect: IRect): IRect;

Пример:

import { shapes } from "powerbi-visuals-utils-svgutils";
import Rect = shapes.Rect;
// ...

Rect.clone({ left: 25, top: 25, width: 100, height: 100 });

/* returns: {
    left: 25, top: 25, width: 100, height: 100}
*/

toString

Эта функция преобразует прямоугольник в строку.

function toString(rect: IRect): string;

Пример:

import { shapes } from "powerbi-visuals-utils-svgutils";
import Rect = shapes.Rect;
// ...

Rect.toString({ left: 25, top: 25, width: 100, height: 100 });

// returns: {left:25, top:25, width:100, height:100}

offset

Эта функция применяет смещение к прямоугольнику.

function offset(rect: IRect, offsetX: number, offsetY: number): IRect;

Пример:

import { shapes } from "powerbi-visuals-utils-svgutils";
import Rect = shapes.Rect;
// ...

Rect.offset({ left: 25, top: 25, width: 100, height: 100 }, 50, 50);

/* returns: {
    left: 75,
    top: 75,
    width: 100,
    height: 100
}*/

add

Эта функция добавляет первый прямоугольник во второй прямоугольник.

function add(rect: IRect, rect2: IRect): IRect;

Пример:

import { shapes } from "powerbi-visuals-utils-svgutils";
import Rect = shapes.Rect;
// ...

Rect.add(
  { left: 25, top: 25, width: 100, height: 100 },
  { left: 50, top: 50, width: 75, height: 75 }
);

/* returns: {
    left: 75,
    top: 75,
    height: 175,
    width: 175
}*/

getClosestPoint

Эта функция возвращает ближайшую точку прямоугольника к определенной точке.

function getClosestPoint(rect: IRect, x: number, y: number): IPoint;

Пример:

import { shapes } from "powerbi-visuals-utils-svgutils";
import Rect = shapes.Rect;
// ...

Rect.getClosestPoint({ left: 0, top: 0, width: 100, height: 100 }, 50, 50);

/* returns: {
    x: 50,
    y: 50
}*/

равно

Эта функция сравнивает прямоугольники и возвращает значение true, если они одинаковы.

function equal(rect1: IRect, rect2: IRect): boolean;

Пример:

import { shapes } from "powerbi-visuals-utils-svgutils";
import Rect = shapes.Rect;
// ...

Rect.equal(
  { left: 0, top: 0, width: 100, height: 100 },
  { left: 50, top: 50, width: 100, height: 100 }
);

// returns: false

equalWithPrecision

Эта функция сравнивает прямоугольники, учитывая точность значений.

function equalWithPrecision(rect1: IRect, rect2: IRect): boolean;

Пример:

import { shapes } from "powerbi-visuals-utils-svgutils";
import Rect = shapes.Rect;
// ...

Rect.equalWithPrecision(
  { left: 0, top: 0, width: 100, height: 100 },
  { left: 50, top: 50, width: 100, height: 100 }
);

// returns: false

isEmpty

Эта функция проверяет, пуст ли прямоугольник.

function isEmpty(rect: IRect): boolean;

Пример:

import { shapes } from "powerbi-visuals-utils-svgutils";
import Rect = shapes.Rect;
// ...

Rect.isEmpty({ left: 0, top: 0, width: 0, height: 0 });

// returns: true

containsPoint

Эта функция проверяет, содержит ли прямоугольник определенную точку.

function containsPoint(rect: IRect, point: IPoint): boolean;

Пример:

import { shapes } from "powerbi-visuals-utils-svgutils";
import Rect = shapes.Rect;
// ...

Rect.containsPoint(
  { left: 0, top: 0, width: 100, height: 100 },
  { x: 50, y: 50 }
);

// returns: true

isIntersecting

Эта функция проверяет, пересекаются ли прямоугольники.

function isIntersecting(rect1: IRect, rect2: IRect): boolean;

Пример:

import { shapes } from "powerbi-visuals-utils-svgutils";
import Rect = shapes.Rect;
// ...

Rect.isIntersecting(
  { left: 0, top: 0, width: 100, height: 100 },
  { left: 0, top: 0, width: 50, height: 50 }
);

// returns: true

пересечение

Эта функция возвращает пересечение прямоугольников.

function intersect(rect1: IRect, rect2: IRect): IRect;

Пример:

import { shapes } from "powerbi-visuals-utils-svgutils";
import Rect = shapes.Rect;
// ...

Rect.intersect(
  { left: 0, top: 0, width: 100, height: 100 },
  { left: 0, top: 0, width: 50, height: 50 }
);

/* returns: {
    left: 0,
    top: 0,
    width: 50,
    height: 50
}*/

combine

Эта функция объединяет прямоугольники.

function combine(rect1: IRect, rect2: IRect): IRect;

Пример:

import { shapes } from "powerbi-visuals-utils-svgutils";
import Rect = shapes.Rect;
// ...

Rect.combine(
  { left: 0, top: 0, width: 100, height: 100 },
  { left: 0, top: 0, width: 50, height: 120 }
);

/* returns: {
    left: 0,
    top: 0,
    width: 100,
    height: 120
}*/

getCentroid

Эта функция возвращает центральную точку прямоугольника.

function getCentroid(rect: IRect): IPoint;

Пример:

import { shapes } from "powerbi-visuals-utils-svgutils";
import Rect = shapes.Rect;
// ...

Rect.getCentroid({ left: 0, top: 0, width: 100, height: 100 });

/* returns: {
    x: 50,
    y: 50
}*/