¿Cómo crear un diálogo modal?

Un usuario Pregunto ✅

Dmitry Voronov

¡Hola!

Quería crear un cuadro de diálogo de prueba como se especifica en Microsoft Docs.

Pero, me sale un error:

mySuperWidget09FDE52B7F444CB6B7FC6F644D37B5D7_DEBUG.default.createModalDialog is not a function

en consola Junto con eso, tengo una ventana vacía con dos botones «Aceptar» y «Cancelar». Mi implementación para el cuadro de diálogo no crear.

¿Cómo arreglaría esto? Tal vez si hay algún ejemplo de trabajo?

Dmitry Voronov

En respuesta a brucearthur

¡Hay una solucion! Gracias a AsafMozes

Intente actualizar a powerbi-visuals-webpack-plugin 2.3.0 en el proyecto powerbi-visuals-tools.
(la ubicación de powerbi-visuals-tools generalmente se puede encontrar mediante «npm root -g»)

https://github.com/MicrosoftDocs/powerbi-docs/issues/3138

Esto funciona para mi.

Hola @DmitryVoronov,

Es difícil encontrar la causa del problema en ausencia de scripts y mensajes de error relevantes. ¿Podría explicar las operaciones que realizó y dónde obtuvo el error? Gracias.

Atentamente

Dmitry Voronov

En respuesta a yingyinr

¡Hola @yingyinr!

Siento no haberlo descrito exactamente. Voy a intentarlo:

1. Antes que nada, uso pbiviz 3.2.3, npm 6.14.12, node v14.16.1
2. Creo un nuevo proyecto `pbiviz new testDialogPBI`
3. Actualice apiVersion en `pbiviz.json` a la última versión 3.8.0.

4. Cree el archivo de implementación del cuadro de diálogo como está escrito en la documentación. Quiero renderizar un div simple con texto:

    constructor(options: DialogConstructorOptions, initialState: object) {
        this.host = options.host;
        this.target = options.element;
        // … dialog rendering implementation …
        const div = document.createElement('div');
        div.className="test";
        let text = document.createTextNode('Test');
        div.appendChild(text);
        this.target.appendChild(div);
    }

5. En `visual.ts`, el cuadro de diálogo se invoca haciendo clic en un botón:

export class Visual implements IVisual {
  ........
    constructor(options: VisualConstructorOptions) {
        console.log('Visual constructor', options);
        this.target = options.element;
        this.host = options.host;
        this.updateCount = 0;
        if (document) {
            const button = document.createElement("BUTTON");
            button.innerHTML = "Open Dialog, please";
            button.onclick = () => {
                console.log('Hello!');
                const dialogOptions = {
                    actionButtons: this.dialogActionsButtons,
                };
                this.host.openModalDialog(TestDialog.id, dialogOptions).catch(error => console.log("error:", error));
            };
            this.target.appendChild(button);
        }
    }
  ........
}

6. Inicie el proyecto `npm run start`.

Como resultado, veo un botón. Al hacer clic en él, aparece un cuadro de diálogo con dos botones sin mi diálogo de prueba. En error de consola:

testDialogPBI3CE526641734417E8F5DB8CCB3381F9A_DEBUG.default.createModalDialog is not a function

2.pngen consolaen consola

Empujé este proyecto de prueba a gitHub, si alguien quiere probarlo.

brucearthur

En respuesta a Dmitry Voronov

Encontré el mismo error al intentar usar el diálogo con una imagen personalizada:

brucearthur_1-1624641308342.png

El error se vincula con el siguiente fragmento de código en el código de Power Bi.

brucearthur_0-1624641164199.png

Siento que falta algo en los pasos de documentación o en el código de Power Bi.

Realmente me gustaría usar esta función si alguien puede resolverlo. ¿Se requieren paquetes o versiones adicionales de npm?

Estos son los que estoy usando actualmente:

«powerbi-modelos«: «^1.8.0«,
«powerbi-report-authoring«: «^1.0.0«,
«powerbi-visuals-api«: «^3.8.2«,
«powerbi-visuals-herramientas«: «^3.2.3«,
«powerbi-visuals-utils-dataviewutils«: «^2.4.1«,
«powerbi-visuals-utils-formattingutils«: «4.1.1«,
«powerbi-visuals-utils-interactividadutils«: «^5.7.1«,
«powerbi-visuals-utils-tooltiputils«: «^2.3.0«,
Gracias por cualquier ayuda.

WZorn

En respuesta a brucearthur

@brucearthur, ¿resolviste esto?

Obtengo lo mismo que publicaste arriba sin importar lo que intente.

brucearthur

En respuesta a WZorn

Sí, también funcionó para mí.

Tomé el camino de correr raíz npm -g, eliminado «node_modules» del final y pegado en el siguiente comando.

instalación npm –prefijo powerbi-visuals-webpack-complemento

WZorn

En respuesta a brucearthur

¡Entendido! Gracias. Estaba pensando que era mi nuevo proyecto visual el que necesitaba una actualización. No estaba pensando que era el paquete dentro de powerbi-visuals-tools lo que necesitaba actualizarse.

Dmitry Voronov

En respuesta a brucearthur

¡Hay una solucion! Gracias a AsafMozes

Intente actualizar a powerbi-visuals-webpack-plugin 2.3.0 en el proyecto powerbi-visuals-tools.
(la ubicación de powerbi-visuals-tools generalmente se puede encontrar mediante «npm root -g»)

https://github.com/MicrosoftDocs/powerbi-docs/issues/3138

Esto funciona para mi.

WZorn

En respuesta a Dmitry Voronov

¿Qué se necesitaba hacer exactamente para resolver su problema?

Recibo el mismo mensaje y ventana emergente que tu.

Aquí están mis versiones:

«powerbi-visuals-api»: «~3.8.2»,
«powerbi-visuals-herramientas»: «^2.3.0»,
«powerbi-visuals-utils-dataviewutils»: «2.2.1»,
«powerbi-visuals-webpack-complemento»: «^2.3.0»

En respuesta a Dmitry Voronov

Hola @DmitryVoronov,

Me alegra saber que tu problema se ha resuelto. Y muchas gracias por compartir la solución aquí, ayudará a los demás en la comunidad a encontrar esta solución fácilmente si enfrentan el mismo problema con el suyo. Lamento no haber podido darte una solución aquí…

Atentamente

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *