Megosztás a következőn keresztül:


Dinamikus részletezés vezérlése

Megjegyzés:

Ez a funkció az API 5.7.0-s verziójából érhető el.

A dinamikus részletezésvezérlési funkció lehetővé teszi, hogy a vizualizáció egy API-hívással dinamikusan engedélyezze vagy tiltsa le a részletezési funkciót. Ha a részletezési funkció engedélyezve van, minden részletezési funkció és kibontási/összecsukási funkció elérhető, beleértve az API-hívásokat, a helyi menüparancsokat, az élőfej részletezési gombjait és a hierarchiaadatok támogatását. Ha le van tiltva, ezek a funkciók nem érhetők el.

Az alábbi képeken egy olyan vizualizáció látható, amelyen engedélyezve és letiltva van a dinamikus részletezési funkció:

A dinamikus részletezésvezérlési funkció a következő API-elemeket tartalmazza:

  • A isDrillDisabled jelölő a DataRolesInfokövetkezőben:

    export interface DataRolesInfo {
          //…
          isDrillDisabled?: boolean; // ----- NEW -----
      }
    
  • A setCanDrill felület metódusa IVisualHost :

      export interface IVisualHost extends extensibility.IVisualHost {
          //…
          setCanDrill: (drillAllowed: boolean) => void; // ----- NEW -----
      }
    

Annak megállapításához, hogy a részletezés le van-e tiltva, használja a isDrillDisabled tulajdonságot a frissítési módszerben:

    private update(options: VisualUpdateOptions) {
      //…
      const isDrillDisabled = options.dataViews[0].metadata.dataRoles.isDrillDisabled;
      //…
    }

Ezután az API-hívással szükség szerint engedélyezze vagy tiltsa le a részletezéseket:

  • Az engedélyezéshez: this.host.setCanDrill(true /* drillAllowed */);

  • Letiltás: this.host.setCanDrill(false /* drillAllowed */);

Dinamikus részletezésvezérlési követelmények

A fúrás alapértelmezés szerint engedélyezve van, de a dinamikus részletezésvezérlési funkció lehetővé teszi a vizualizáció számára, hogy API-hívással engedélyezze vagy tiltsa le a fúrást.

A dinamikus részletezésvezérlési funkcióval rendelkező vizualizációk a következő kóddal rendelkeznek a capabilities.json fájlban:

  • Ha a részletezés alapértelmezés szerint le van tiltva:

        "drilldown": {
            "roles": [
                "Rows",
                "Columns"
            ],
            "canDisableDrill": { 
                "disabledByDefault": true
            }
        },
    
  • Ha a részletezés alapértelmezés szerint engedélyezve van:

        "drilldown": {
            "roles": [
                "Rows",
                "Columns"
            ],
            "canDisableDrill": {}
        },
    

A canDisableDrill tulajdonság azt jelzi, hogy a vizualizáció támogatja ezt a funkciót. E tulajdonság nélkül az API-hívás nem lesz tiszteletben tartva.
A disabledByDefault tulajdonság azt jelzi, hogy alapértelmezés szerint letiltja-e a részletezési funkciót.

Megjegyzés:

A disabledByDefault tulajdonság akkor lép érvénybe, ha a következő műveletek egyikét hajtja végre:

  • Új vizualizáció hozzáadása a vászonhoz
  • Vizualizáció konvertálása olyan vizualizációból, amely nem támogatja ezt a funkciót.

Ha például egy sourceVisual tulajdonságot targetVisual-ra konvertál, a targetVisualdisabledByDefault tulajdonság csak akkor lesz figyelembe véve, ha a sourceVisual nem támogatja ezt a funkciót. Ha a sourceVisual támogatja ezt a funkciót, a célVizual megtartja a sourceVisual állapotát, és nem az alapértelmezettet.

Részletezési támogatás hozzáadása meglévő vizualizáció új verziójához

A részletezési funkció használata kompatibilitástörő változást jelent. Ezért a leggördülékenyebb átmenet érdekében javasoljuk, hogy az új verzióhoz használjon új vizuális GUID azonosítót .

Ha azonban ugyanazt a GUID-t szeretné megtartani, tartsa szem előtt a következő pontokat:

  • Ha nem trillió verzióról új részletezhető verzióra migrál, előfordulhat, hogy egyes adatok nem lesznek megadva a dataView részletezési funkció részeként bevezetett hierarchikus adattámogatás miatt. A dinamikus részletezés-vezérlési funkció nem nyújt automatikus támogatást ehhez a problémához, de használható az áttelepítési folyamat kezelésére.

  • A vizualizáció önmigrálásához a vizualizációnak a következő műveleteket kell végrehajtania:

    • Azonosítsa az új verzió első betöltését a régebbi verzió helyett, és alkalmazza az API-t persistProperties .

    • Tiltsa le a részletezőt az összes adat fogadásához az setCanDrill API használatával.

Az alábbi példa bemutatja, hogyan migrálhat önkiszolgálóan egy régebbi vizualizációt dinamikus részletezési vezérlőt használó vizualizációba:

  1. Adja hozzá a következő objektumot a capabilities.json fájlhoz:

    "DrillMigration": {
      "displayName": "Drill Migration",
      "properties": {
          "isMigrated": {
              "displayName": "Is Drill Migrated",
              "type": {
                  "bool": true
              }
          }
      }
    },
    
  2. Adja hozzá a következőket a visual.ts fájlhoz :

    export class Visual implements IVisual {
        //...
          private isCalledToDisableDrillInMigrationScenario = false;
          private drillMigration = { disabledByDefault: true };
          constructor(options: VisualConstructorOptions) {
           //...
           this.host = options.host;
           //...
          }
          private update(options: VisualUpdateOptions) {
             this.handleSelfDrillMigration(options);
              //...
          }
          private handleSelfDrillMigration(options: VisualUpdateOptions): void {
              if (options && options.dataViews && options.dataViews[0] && options.dataViews[0].metadata) {
                  const metadata = options.dataViews[0].metadata;
                  if (metadata && metadata.dataRoles) {
                      const isDrillDisabled = metadata.dataRoles.isDrillDisabled;
                      if (isDrillDisabled === undefined) {
                          return;
                      }
                      // Continue in case the visual is already migrated
                      if (!metadata.objects?.DrillMigration?.isMigrated) {
                          // Persist the isMigrated property when the drill has the correct state
                          if (this.drillMigration.disabledByDefault === isDrillDisabled) {
                              this.persistMigrationProperty();
                          } else if (!this.isCalledToDisableDrillInMigrationScenario) {
                              // Use the API call only once
                              this.host.setCanDrill(!this.drillMigration.disabledByDefault);
                              this.isCalledToDisableDrillInMigrationScenario = true;
                          }
                      }
                  }
              }
          }
          private persistMigrationProperty(): void {
              let property = {
                  merge: [{
                      objectName: "DrillMigration",
                      properties: {
                          isMigrated: true
                      },
                      selector: null
                  }]
              };
              this.host.persistProperties(property);
          }
      }
    

Amikor a kód hozzáadása után először nyitja meg a vizualizációt, a DrillMigration változó értéke igaz, a vizualizáció pedig az alapértelmezett állapotban nyílik meg.

Szempontok és korlátozások

  • A részletezési állapot nem lesz mentve a részletezés letiltása után. Ha a letiltás után újrakonvertálja a részletezést, csak az első szint jelenik meg, függetlenül attól, hogy mi volt látható a letiltás előtt.

  • A részletezés letiltása után a rendszer nem menti a kibontási/összecsukási állapotot. A részletezés újraéledése után az összes sor összecsukva lesz.

  • Az API-hívás irányítópultok esetében nem támogatott.

  • Adatnézet-leképezési feltételek: A részletezhető szerepkör minden feltételéhez használható "max": 1 , hogy a vizualizáció csak egy mezőt jelenítsen meg, ha a részletezés le van tiltva. Például:

    • Kategorikus adatnézet esetén:

      "conditions": [
           { "category": { "min": 1 }, "measure": { "max": 1 }}
      ]
      
    • Mátrixadat-nézet esetén:

      "conditions": [
          { "Rows": { "max": 0 }, "Columns": { "max": 0 }, "Value": { "min": 1 } },
          { "Rows": { "min": 1 }, "Columns": { "min": 0 }, "Value": { "min": 0 } },
          { "Rows": { "min": 0 }, "Columns": { "min": 1 }, "Value": { "min": 0 } },
      ]