UNPKG

powerbi-visuals-utils-dataviewutils

Version:
66 lines 2.68 kB
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