public enumerateObjectInstances()

in src/visual.ts [149:242]


    public enumerateObjectInstances(
        options: powerbi.EnumerateVisualObjectInstancesOptions,
    ): powerbi.VisualObjectInstanceEnumeration {
        const { objectName } = options;

        const shouldUseContainers: boolean = Object.keys(new SeriesSettings()).indexOf(objectName) !== -1;

        if (shouldUseContainers) {
            const enumerationObject: powerbi.VisualObjectInstanceEnumerationObject = {
                containers: [],
                instances: [],
            };

            this.enumerateSettings(
                enumerationObject,
                objectName,
                this.getSettings.bind(this),
            );

            return enumerationObject;
        }

        let instances: powerbi.VisualObjectInstance[] = this.dataRepresentation
            && this.dataRepresentation.settings
            && this.dataRepresentation.settings.enumerateObjectInstances(options)
            || [];

        switch (options.objectName) {
            case "kpiIndicator": {
                if (this.dataRepresentation
                    && (this.dataRepresentation.variance
                        && isNaN(this.dataRepresentation.variance[0])
                        || (this.dataRepresentation.settings
                            && !this.dataRepresentation.settings.kpiIndicatorValue.show))
                    && instances
                    && instances[0]
                    && instances[0].properties
                ) {
                    delete instances[0].properties.position;
                }

                break;
            }
            case "kpiIndicatorValue": {
                if (this.dataRepresentation
                    && this.dataRepresentation.variance
                    && isNaN(this.dataRepresentation.variance[0])
                ) {
                    instances = [];
                }

                break;
            }
            case "kpiIndicatorLabel": {
                if (this.dataRepresentation
                    && this.dataRepresentation.variance
                    && isNaN(this.dataRepresentation.variance[0])
                    && this.dataRepresentation.series
                    && this.dataRepresentation.series[0]
                    && this.dataRepresentation.series[0].current
                    && isNaN(this.dataRepresentation.series[0].current.kpiIndex)
                ) {
                    instances = [];
                }

                break;
            }
            case "secondKPIIndicatorValue":
            case "secondKPIIndicatorLabel":
            case "secondTooltipVariance": {
                if (!this.dataRepresentation.series
                    || !this.dataRepresentation.variance
                    || isNaN(this.dataRepresentation.variance[1])
                ) {
                    instances = [];
                }

                break;
            }
            case "secondaryYAxis":
            case "secondaryReferenceLineOfYAxis": {
                if (!this.dataRepresentation
                    || !this.dataRepresentation.groups
                    || !this.dataRepresentation.groups[1]
                ) {
                    instances = [];
                }

                break;
            }
        }

        return instances;
    }