DataViewUtils
DataViewUtils
เป็นชุดฟังก์ชันและคลาสเพื่อลดความซับซ้อนของการปรับใช้ของออบเจ็กต์ DataView สําหรับวิชวล Power BI
การติดตั้ง
หากต้องการติดตั้งแพคเกจ ให้เรียกใช้คําสั่งต่อไปนี้ในไดเรกทอรีด้วยวิชวลแบบกําหนดเองปัจจุบันของคุณ:
npm install powerbi-visuals-utils-dataviewutils --save
คําสั่งนี้จะติดตั้งแพคเกจและเพิ่มแพคเกจเป็นการขึ้นต่อกันกับไฟล์ของคุณpackage.json
DataViewWildcard
DataViewWildcard
createDataViewWildcardSelector
มีฟังก์ชันเพื่อสนับสนุนการจัดรูปแบบตามเงื่อนไขของคุณสมบัติ
createDataViewWildcardSelector
แสดงตัวเลือกที่จําเป็นสําหรับการกําหนดวิธีการใช้รายการการจัดรูปแบบตามเงื่อนไขในบานหน้าต่างรูปแบบ โดยยึดตามdataviewWildcardMatchingOption (InstancesAndTotals (default), InstancesOnly, TotalsOnly)
ตัวอย่าง:
import { dataViewWildcard } from "powerbi-visuals-utils-dataviewutils";
let selector = dataViewWildcard.createDataViewWildcardSelector(dataViewWildcard.DataViewWildcardMatchingOption.InstancesAndTotals);
// returns {data: [{dataViewWildcard:{matchingOption: 0}}]};
DataRoleHelper
DataRoleHelper
มีฟังก์ชันในการตรวจสอบบทบาทของวัตถุ dataView
โมดูลมอบฟังก์ชันต่อไปนี้:
getMeasureIndexOfRole
ฟังก์ชันนี้จะค้นหาหน่วยวัดตามชื่อบทบาทและส่งกลับดัชนี
function getMeasureIndexOfRole(grouped: DataViewValueColumnGroup[], roleName: string): number;
ตัวอย่าง:
import powerbi from "powerbi-visuals-api";
import DataViewValueColumnGroup = powerbi.DataViewValueColumnGroup;
import { dataRoleHelper } from "powerbi-visuals-utils-dataviewutils";
// ...
// This object is actually a part of the dataView object.
let columnGroup: DataViewValueColumnGroup[] = [{
values: [
{
source: {
displayName: "Microsoft",
roles: {
"company": true
}
},
values: []
},
{
source: {
displayName: "Power BI",
roles: {
"product": true
}
},
values: []
}
]
}];
dataRoleHelper.getMeasureIndexOfRole(columnGroup, "product");
// returns: 1
getCategoryIndexOfRole
ฟังก์ชันนี้จะค้นหาประเภทตามชื่อบทบาทและส่งกลับดัชนี
function getCategoryIndexOfRole(categories: DataViewCategoryColumn[], roleName: string): number;
ตัวอย่าง:
import powerbi from "powerbi-visuals-api";
import DataViewCategoryColumn = powerbi.DataViewCategoryColumn;
import { dataRoleHelper } from "powerbi-visuals-utils-dataviewutils";
// ...
// This object is actually a part of the dataView object.
let categoryGroup: DataViewCategoryColumn[] = [
{
source: {
displayName: "Microsoft",
roles: {
"company": true
}
},
values: []
},
{
source: {
displayName: "Power BI",
roles: {
"product": true
}
},
values: []
}
];
dataRoleHelper.getCategoryIndexOfRole(categoryGroup, "product");
// returns: 1
hasRole
ฟังก์ชันนี้จะตรวจสอบว่ามีการกําหนดบทบาทที่ให้ไว้ในเมตาดาต้าหรือไม่
function hasRole(column: DataViewMetadataColumn, name: string): boolean;
ตัวอย่าง:
import powerbi from "powerbi-visuals-api";
import DataViewMetadataColumn = powerbi.DataViewMetadataColumn;
import { dataRoleHelper } from "powerbi-visuals-utils-dataviewutils";
// This object is actually a part of the dataView object.
let metadata: DataViewMetadataColumn = {
displayName: "Microsoft",
roles: {
"company": true
}
};
DataRoleHelper.hasRole(metadata, "company");
// returns: true
hasRoleInDataView
ฟังก์ชันนี้จะตรวจสอบว่ามีการกําหนดบทบาทที่ให้ไว้ใน dataView หรือไม่
function hasRoleInDataView(dataView: DataView, name: string): boolean;
ตัวอย่าง:
import powerbi from "powerbi-visuals-api";
import DataView = powerbi.DataView;
import { dataRoleHelper } from "powerbi-visuals-utils-dataviewutils";
// This object is actually a part of the dataView object.
let dataView: DataView = {
metadata: {
columns: [
{
displayName: "Microsoft",
roles: {
"company": true
}
},
{
displayName: "Power BI",
roles: {
"product": true
}
}
]
}
};
DataRoleHelper.hasRoleInDataView(dataView, "product");
// returns: true
hasRoleInValueColumn
ฟังก์ชันนี้จะตรวจสอบว่ามีการกําหนดบทบาทที่ให้ไว้ในคอลัมน์ค่าหรือไม่
function hasRoleInValueColumn(valueColumn: DataViewValueColumn, name: string): boolean;
ตัวอย่าง:
import powerbi from "powerbi-visuals-api";
import DataViewValueColumn = powerbi.DataViewValueColumn;
import { dataRoleHelper } from "powerbi-visuals-utils-dataviewutils";
// This object is actually a part of the dataView object.
let valueColumn: DataViewValueColumn = {
source: {
displayName: "Microsoft",
roles: {
"company": true
}
},
values: []
};
dataRoleHelper.hasRoleInValueColumn(valueColumn, "company");
// returns: true
DataViewObjects
DataViewObjects
มีฟังก์ชันในการแยกค่าของวัตถุ
โมดูลมอบฟังก์ชันต่อไปนี้:
getValue
ฟังก์ชันนี้คืนค่าของวัตถุที่ระบุ
function getValue<T>(objects: DataViewObjects, propertyId: DataViewObjectPropertyIdentifier, defaultValue?: T): T;
ตัวอย่าง:
import powerbi from "powerbi-visuals-api";
import DataViewObjectPropertyIdentifier = powerbi.DataViewObjectPropertyIdentifier;
import { dataViewObjects } from "powerbi-visuals-utils-dataviewutils";
let property: DataViewObjectPropertyIdentifier = {
objectName: "microsoft",
propertyName: "bi"
};
// This object is actually a part of the dataView object.
let objects: powerbi.DataViewObjects = {
"microsoft": {
"windows": 5,
"bi": "Power"
}
};
dataViewObjects.getValue(objects, property);
// returns: Power
getObject
ฟังก์ชันนี้คืนค่าวัตถุจากวัตถุที่ระบุ
function getObject(objects: DataViewObjects, objectName: string, defaultValue?: IDataViewObject): IDataViewObject;
ตัวอย่าง:
import { dataViewObjects } from "powerbi-visuals-utils-dataviewutils";
// This object is actually a part of the dataView object.
let objects: powerbi.DataViewObjects = {
"microsoft": {
"windows": 5,
"bi": "Power"
}
};
dataViewObjects.getObject(objects, "microsoft");
/* returns: {
"bi": "Power",
"windows": 5
}*/
getFillColor
ฟังก์ชันนี้ส่งกลับสีทึบของวัตถุ
function getFillColor(objects: DataViewObjects, propertyId: DataViewObjectPropertyIdentifier, defaultColor?: string): string;
ตัวอย่าง:
import powerbi from "powerbi-visuals-api";
import DataViewObjectPropertyIdentifier = powerbi.DataViewObjectPropertyIdentifier;
import { dataViewObjects } from "powerbi-visuals-utils-dataviewutils";
let property: DataViewObjectPropertyIdentifier = {
objectName: "power",
propertyName: "fillColor"
};
// This object is actually part of the dataView object.
let objects: powerbi.DataViewObjects = {
"power": {
"fillColor": {
"solid": {
"color": "yellow"
}
},
"bi": "Power"
}
};
dataViewObjects.getFillColor(objects, property);
// returns: yellow
getCommonValue
ฟังก์ชันสากลนี้จะดึงสีหรือค่าของวัตถุที่เฉพาะเจาะจง
function getCommonValue(objects: DataViewObjects, propertyId: DataViewObjectPropertyIdentifier, defaultValue?: any): any;
ตัวอย่าง:
import powerbi from "powerbi-visuals-api";
import DataViewObjectPropertyIdentifier = powerbi.DataViewObjectPropertyIdentifier;
import { dataViewObjects } from "powerbi-visuals-utils-dataviewutils";
let colorProperty: DataViewObjectPropertyIdentifier = {
objectName: "power",
propertyName: "fillColor"
};
let biProperty: DataViewObjectPropertyIdentifier = {
objectName: "power",
propertyName: "bi"
};
// This object is actually part of the dataView object.
let objects: powerbi.DataViewObjects = {
"power": {
"fillColor": {
"solid": {
"color": "yellow"
}
},
"bi": "Power"
}
};
dataViewObjects.getCommonValue(objects, colorProperty); // returns: yellow
dataViewObjects.getCommonValue(objects, biProperty); // returns: Power
DataViewObject
DataViewObject
มีฟังก์ชันในการแยกค่าของวัตถุ
โมดูลมอบฟังก์ชันต่อไปนี้:
getValue
ฟังก์ชันนี้คืนค่าของวัตถุตามชื่อคุณสมบัติ
function getValue<T>(object: IDataViewObject, propertyName: string, defaultValue?: T): T;
ตัวอย่าง:
import { dataViewObject } from "powerbi-visuals-utils-dataviewutils";
// This object is actually a part of the dataView object.
let object: powerbi.DataViewObject = {
"windows": 5,
"microsoft": "Power BI"
};
dataViewObject.getValue(object, "microsoft");
// returns: Power BI
getFillColorByPropertyName
ฟังก์ชันนี้ส่งกลับสีทึบของวัตถุตามชื่อคุณสมบัติ
function getFillColorByPropertyName(object: IDataViewObject, propertyName: string, defaultColor?: string): string;
ตัวอย่าง:
import { dataViewObject } from "powerbi-visuals-utils-dataviewutils";
// This object is actually a part of the dataView object.
let object: powerbi.DataViewObject = {
"windows": 5,
"fillColor": {
"solid": {
"color": "green"
}
}
};
dataViewObject.getFillColorByPropertyName(object, "fillColor");
// returns: green
converterHelper
converterHelper
มีฟังก์ชันในการตรวจสอบคุณสมบัติของ dataView
โมดูลมอบฟังก์ชันต่อไปนี้:
categoryIsAlsoSeriesRole
ฟังก์ชันนี้จะตรวจสอบว่าประเภทเป็นชุดข้อมูลหรือไม่
function categoryIsAlsoSeriesRole(dataView: DataViewCategorical, seriesRoleName: string, categoryRoleName: string): boolean;
ตัวอย่าง:
import powerbi from "powerbi-visuals-api";
import DataViewCategorical = powerbi.DataViewCategorical;
import { converterHelper } from "powerbi-visuals-utils-dataviewutils";
// ...
// This object is actually part of the dataView object.
let categorical: DataViewCategorical = {
categories: [{
source: {
displayName: "Microsoft",
roles: {
"power": true,
"bi": true
}
},
values: []
}]
};
converterHelper.categoryIsAlsoSeriesRole(categorical, "power", "bi");
// returns: true
getSeriesName
ฟังก์ชันนี้ส่งกลับชื่อของชุดข้อมูล
function getSeriesName(source: DataViewMetadataColumn): PrimitiveValue;
ตัวอย่าง:
import powerbi from "powerbi-visuals-api";
import DataViewMetadataColumn = powerbi.DataViewMetadataColumn;
import { converterHelper } from "powerbi-visuals-utils-dataviewutils";
// This object is actually a part of the dataView object.
let metadata: DataViewMetadataColumn = {
displayName: "Microsoft",
roles: {
"power": true,
"bi": true
},
groupName: "Power BI"
};
converterHelper.getSeriesName(metadata);
// returns: Power BI
isImageUrlColumn
ฟังก์ชันนี้จะตรวจสอบว่าคอลัมน์มี URL ของรูปหรือไม่
function isImageUrlColumn(column: DataViewMetadataColumn): boolean;
ตัวอย่าง:
import powerbi from "powerbi-visuals-api";
import DataViewMetadataColumn = powerbi.DataViewMetadataColumn;
import { converterHelper } from "powerbi-visuals-utils-dataviewutils";
// This object is actually a part of the dataView object.
let metadata: DataViewMetadataColumn = {
displayName: "Microsoft",
type: {
misc: {
imageUrl: true
}
}
};
converterHelper.isImageUrlColumn(metadata);
// returns: true
isWebUrlColumn
ฟังก์ชันนี้จะตรวจสอบว่าคอลัมน์มี URL ของเว็บหรือไม่
function isWebUrlColumn(column: DataViewMetadataColumn): boolean;
ตัวอย่าง:
import powerbi from "powerbi-visuals-api";
import DataViewMetadataColumn = powerbi.DataViewMetadataColumn;
import { converterHelper } from "powerbi-visuals-utils-dataviewutils";
// This object is actually a part of the dataView object.
let metadata: DataViewMetadataColumn = {
displayName: "Microsoft",
type: {
misc: {
webUrl: true
}
}
};
converterHelper.isWebUrlColumn(metadata);
// returns: true
hasImageUrlColumn
ฟังก์ชันนี้ตรวจสอบว่า dataView มีคอลัมน์ที่มี URL ของรูปภาพหรือไม่
function hasImageUrlColumn(dataView: DataView): boolean;
ตัวอย่าง:
import DataView = powerbi.DataView;
import converterHelper = powerbi.extensibility.utils.dataview.converterHelper;
// This object is actually part of the dataView object.
let dataView: DataView = {
metadata: {
columns: [
{
displayName: "Microsoft"
},
{
displayName: "Power BI",
type: {
misc: {
imageUrl: true
}
}
}
]
}
};
converterHelper.hasImageUrlColumn(dataView);
// returns: true
DataViewObjectsParser
DataViewObjectsParser
มีวิธีที่ง่ายที่สุดในการแยกวิเคราะห์คุณสมบัติของแผงการจัดรูปแบบ
คลาส มีวิธีต่อไปนี้:
getDefault
วิธีการแบบคงที่นี้จะส่งกลับอินสแตนซ์ของ DataViewObjectsParser
static getDefault(): DataViewObjectsParser;
ตัวอย่าง:
import { dataViewObjectsParser } from "powerbi-visuals-utils-dataviewutils";
// ...
dataViewObjectsParser.getDefault();
// returns: an instance of the DataViewObjectsParser
แยก วิเคราะห์
วิธีนี้แยกวิเคราะห์คุณสมบัติของแผงการจัดรูปแบบและส่งกลับอินสแตนซ์ของDataViewObjectsParser
static parse<T extends DataViewObjectsParser>(dataView: DataView): T;
ตัวอย่าง:
import powerbi from "powerbi-visuals-api";
import IVisual = powerbi.extensibility.IVisual;
import VisualUpdateOptions = powerbi.extensibility.visual.VisualUpdateOptions;
import { dataViewObjectsParser } from "powerbi-visuals-utils-dataviewutils";
/**
* This class describes formatting panel properties.
* Name of the property should match its name described in the capabilities.
*/
class DataPointProperties {
public fillColor: string = "red"; // This value is a default value of the property.
}
class PropertiesParser extends dataViewObjectsParser.DataViewObjectsParser {
/**
* This property describes a group of properties.
*/
public dataPoint: DataPointProperties = new DataPointProperties();
}
export class YourVisual extends IVisual {
// implementation of the IVisual.
private propertiesParser: PropertiesParser;
public update(options: VisualUpdateOptions): void {
// Parses properties.
this.propertiesParser = PropertiesParser.parse<PropertiesParser>(options.dataViews[0]);
// You can use the properties after parsing
console.log(this.propertiesParser.dataPoint.fillColor); // returns "red" as default value, it will be updated automatically after any change of the formatting panel.
}
}
enumerateObjectInstances
สำคัญ
enumerateObjectInstances
ไม่สนับสนุนใน API เวอร์ชัน 5.1 ซึ่งถูกแทนที่ด้วย getFormattingModel
นอกจากนี้ โปรดดู ยูทิลิตี้การจัดรูปแบบ Model
วิธีการแบบคงที่นี้จะระบุคุณสมบัติและแสดงอินสแตนซ์ของVisualObjectInstanceEnumeration
ดําเนินการใน enumerateObjectInstances
วิธีการ ของวิชวล
static enumerateObjectInstances(dataViewObjectParser: dataViewObjectsParser.DataViewObjectsParser, options: EnumerateVisualObjectInstancesOptions): VisualObjectInstanceEnumeration;
ตัวอย่าง:
import powerbi from "powerbi-visuals-api";
import IVisual = powerbi.extensibility.IVisual;
import EnumerateVisualObjectInstancesOptions = powerbi.EnumerateVisualObjectInstancesOptions;
import VisualObjectInstanceEnumeration = powerbi.VisualObjectInstanceEnumeration;
import VisualUpdateOptions = powerbi.extensibility.visual.VisualUpdateOptions;
import { dataViewObjectsParser } from "powerbi-visuals-utils-dataviewutils";
/**
* This class describes formatting panel properties.
* Name of the property should match its name described in the capabilities.
*/
class DataPointProperties {
public fillColor: string = "red";
}
class PropertiesParser extends dataViewObjectsParser.DataViewObjectsParser {
/**
* This property describes a group of properties.
*/
public dataPoint: DataPointProperties = new DataPointProperties();
}
export class YourVisual extends IVisual {
// implementation of the IVisual.
private propertiesParser: PropertiesParser;
public update(options: VisualUpdateOptions): void {
// Parses properties.
this.propertiesParser = PropertiesParser.parse<PropertiesParser>(options.dataViews[0]);
}
/**
* This method will be executed only if the formatting panel is open.
*/
public enumerateObjectInstances(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstanceEnumeration {
return PropertiesParser.enumerateObjectInstances(this.propertiesParser, options);
}
}