Dynamické řízení přechodu k podrobnostem
Poznámka:
Tato funkce je dostupná z rozhraní API verze 5.7.0.
Funkce dynamického řízení podrobností umožňuje vizuálu dynamicky povolit nebo zakázat funkci přechodu k podrobnostem pomocí volání rozhraní API. Když je funkce přechodu k podrobnostem povolená, jsou k dispozici všechny funkce přechodu k podrobnostem a rozbalení/sbalení , včetně volání rozhraní API, příkazů kontextové nabídky, tlačítek pro přechod k podrobnostem záhlaví a podpory pro data hierarchie. Pokud jsou zakázané, tyto funkce nejsou k dispozici.
Následující obrázky ukazují příklad vizuálu s povolenou a zakázanou funkcí dynamického řízení přechodu k podrobnostem:
Funkce dynamického řízení přechodu k podrobnostem obsahuje následující prvky rozhraní API:
Příznak
isDrillDisabled
v :DataRolesInfo
export interface DataRolesInfo { //… isDrillDisabled?: boolean; // ----- NEW ----- }
Metoda
setCanDrill
vIVisualHost
rozhraní:export interface IVisualHost extends extensibility.IVisualHost { //… setCanDrill: (drillAllowed: boolean) => void; // ----- NEW ----- }
Pokud chcete zjistit, jestli je postup zakázán, použijte isDrillDisabled
vlastnost v metodě aktualizace:
private update(options: VisualUpdateOptions) {
//…
const isDrillDisabled = options.dataViews[0].metadata.dataRoles.isDrillDisabled;
//…
}
Pak pomocí volání rozhraní API podle potřeby povolte nebo zakažte přechod k podrobnostem:
Povolení:
this.host.setCanDrill(true /* drillAllowed */);
Zakázání:
this.host.setCanDrill(false /* drillAllowed */);
Požadavky na dynamické řízení přechodu k podrobnostem
Procházení je ve výchozím nastavení povolené, ale funkce dynamického řízení přechodu k podrobnostem umožňuje vizuálu povolit nebo zakázat procházení pomocí volání rozhraní API.
Vizuál s funkcí dynamického řízení přechodu k podrobnostem má v souboru capabilities.json následující kód:
Když je přechod k podrobnostem ve výchozím nastavení zakázaný:
"drilldown": { "roles": [ "Rows", "Columns" ], "canDisableDrill": { "disabledByDefault": true } },
S povoleným přechodem k podrobnostem ve výchozím nastavení:
"drilldown": { "roles": [ "Rows", "Columns" ], "canDisableDrill": {} },
Vlastnost canDisableDrill
označuje, že vizuál tuto funkci podporuje. Bez této vlastnosti se volání rozhraní API nerespektuje.
Tato disabledByDefault
vlastnost určuje, zda má být funkce přechodu k podrobnostem ve výchozím nastavení zakázána.
Poznámka:
Vlastnost disabledByDefault
se projeví, když provedete jednu z následujících akcí:
- Přidání nového vizuálu na plátno
- Převeďte vizuál z vizuálu, který tuto funkci nepodporuje.
Pokud například převedete sourceVisual na targetVisual, vlastnost targetVisual disabledByDefault
se považuje pouze v případě, že sourceVisual tuto funkci nepodporuje. Pokud sourceVisual tuto funkci podporuje, cílovávisual zachová stav sourceVisual, nikoli výchozí.
Přidání podpory přechodu k podrobnostem do nové verze existujícího vizuálu
Použití funkce přechodu k podrobnostem představuje zásadní změnu. Proto pro nejhladší přechod doporučujeme pro novou verzi použít nový identifikátor GUID vizuálu.
Pokud ale chcete zachovat stejný identifikátor GUID, mějte na paměti následující body:
Když migrujete z neořízitelné verze na novou verzi s možností přechodu k podrobnostem, nemusí být některá data v
dataView
důsledku podpory hierarchických dat zavedená jako součást funkce přechodu k podrobnostem. Funkce dynamického řízení přechodu k podrobnostem nenabízí automatickou podporu pro tento problém, ale dá se použít ke správě procesu migrace.Při samoobslužné migraci vizuálu by měl vizuál provést následující akce:
Zjistěte, kdy se nová verze načte poprvé místo starší verze, a použijte
persistProperties
rozhraní API.Zakažte procházení k příjmu všech dat pomocí
setCanDrill
rozhraní API.
Následující příklad ukazuje, jak migrovat starší vizuál do vizuálu, který používá dynamické řízení přechodu k podrobnostem:
Do souboru capabilities.json přidejte následující objekt:
"DrillMigration": { "displayName": "Drill Migration", "properties": { "isMigrated": { "displayName": "Is Drill Migrated", "type": { "bool": true } } } },
Do souboru visual.ts přidejte následující kód:
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); } }
Při prvním otevření vizuálu po přidání tohoto kódu se proměnná DrillMigration nastaví na true a vizuál se otevře ve výchozím stavu.
Úvahy a omezení
Po zakázání přechodu k podrobnostem se stav přechodu k podrobnostem neuloží. Pokud můžete přechod k podrobnostem po zakázání znovu povolit, zobrazí se pouze první úroveň bez ohledu na to, co se zobrazilo předtím, než byla zakázána.
Po zakázání přechodu k podrobnostem se stav rozbalení nebo sbalení neuloží. Po opětovném povolení přechodu k podrobnostem jsou všechny řádky sbalené.
Volání rozhraní API není podporováno pro řídicí panely.
Podmínky mapování zobrazení dat: Slouží
"max": 1
pro všechny podmínky pro roli s možností přechodu k podrobnostem, aby vizuál omezil na zobrazení pouze jednoho pole při zakázání přechodu k podrobnostem. Příklad:Zobrazení dat kategorií:
"conditions": [ { "category": { "min": 1 }, "measure": { "max": 1 }} ]
Zobrazení maticových dat:
"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 } }, ]