UNPKG

powerbi-visuals-utils-dataviewutils

Version:
66 lines 2.65 kB
import * as DataViewObjects from "./dataViewObjects"; export class DataViewObjectsParser { static getDefault() { return new this(); } static createPropertyIdentifier(objectName, propertyName) { return { objectName, propertyName }; } static parse(dataView) { const dataViewObjectParser = this.getDefault(); if (!dataView || !dataView.metadata || !dataView.metadata.objects) { return dataViewObjectParser; } const properties = dataViewObjectParser.getProperties(); for (const objectName in properties) { for (const 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) { const dataViewProperties = dataViewObjectParser && dataViewObjectParser[options.objectName]; if (!dataViewProperties) { return []; } const instance = { objectName: options.objectName, selector: null, properties: {} }; for (const key in dataViewProperties) { if (Object.prototype.hasOwnProperty.call(dataViewProperties, key)) { instance.properties[key] = dataViewProperties[key]; } } return { instances: [instance] }; } getProperties() { const properties = {}, objectNames = Object.keys(this); objectNames.forEach((objectName) => { if (DataViewObjectsParser.isPropertyEnumerable(objectName)) { const 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