powerbi-visuals-utils-dataviewutils
Version:
66 lines • 2.68 kB
JavaScript
import * as DataViewObjects from "./dataViewObjects";
export class DataViewObjectsParser {
static getDefault() {
return new this();
}
static createPropertyIdentifier(objectName, propertyName) {
return {
objectName,
propertyName
};
}
static parse(dataView) {
let dataViewObjectParser = this.getDefault(), properties;
if (!dataView || !dataView.metadata || !dataView.metadata.objects) {
return dataViewObjectParser;
}
properties = dataViewObjectParser.getProperties();
for (let objectName in properties) {
for (let propertyName in properties[objectName]) {
const defaultValue = dataViewObjectParser[objectName][propertyName];
dataViewObjectParser[objectName][propertyName] = DataViewObjects.getCommonValue(dataView.metadata.objects, properties[objectName][propertyName], defaultValue);
}
}
return dataViewObjectParser;
}
static isPropertyEnumerable(propertyName) {
return !DataViewObjectsParser.InnumerablePropertyPrefix.test(propertyName);
}
static enumerateObjectInstances(dataViewObjectParser, options) {
let dataViewProperties = dataViewObjectParser && dataViewObjectParser[options.objectName];
if (!dataViewProperties) {
return [];
}
let instance = {
objectName: options.objectName,
selector: null,
properties: {}
};
for (let key in dataViewProperties) {
if (dataViewProperties.hasOwnProperty(key)) {
instance.properties[key] = dataViewProperties[key];
}
}
return {
instances: [instance]
};
}
getProperties() {
let properties = {}, objectNames = Object.keys(this);
objectNames.forEach((objectName) => {
if (DataViewObjectsParser.isPropertyEnumerable(objectName)) {
let propertyNames = Object.keys(this[objectName]);
properties[objectName] = {};
propertyNames.forEach((propertyName) => {
if (DataViewObjectsParser.isPropertyEnumerable(objectName)) {
properties[objectName][propertyName] =
DataViewObjectsParser.createPropertyIdentifier(objectName, propertyName);
}
});
}
});
return properties;
}
}
DataViewObjectsParser.InnumerablePropertyPrefix = /^_/;
//# sourceMappingURL=dataViewObjectsParser.js.map