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ő aDataRolesInfo
következőben:export interface DataRolesInfo { //… isDrillDisabled?: boolean; // ----- NEW ----- }
A
setCanDrill
felület metódusaIVisualHost
: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:
Adja hozzá a következő objektumot a capabilities.json fájlhoz:
"DrillMigration": { "displayName": "Drill Migration", "properties": { "isMigrated": { "displayName": "Is Drill Migrated", "type": { "bool": true } } } },
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 } }, ]