Dinamik detay denetimi
Dekont
Bu özellik API 5.7.0 sürümünde kullanılabilir.
Dinamik detaylandırma denetimi özelliği, görselin bir API çağrısı kullanarak detaylandırma özelliğini dinamik olarak etkinleştirmesine veya devre dışı bırakmasına olanak tanır. Detaylandırma özelliği etkinleştirildiğinde API çağrıları, bağlam menüsü komutları, üst bilgi detaylandırma düğmeleri ve hiyerarşi verileri desteği dahil olmak üzere tüm detaya gitme işlevleri ve genişletme/daraltma özellikleri kullanılabilir. Devre dışı bırakıldığında bu işlevler kullanılamaz.
Aşağıdaki görüntülerde dinamik detay denetimi özelliği etkin ve devre dışı bırakılmış bir görsel örneği gösterilmektedir:
Dinamik detay denetimi özelliği aşağıdaki API öğelerini içerir:
içindeki
isDrillDisabled
DataRolesInfo
bayrağı:export interface DataRolesInfo { //… isDrillDisabled?: boolean; // ----- NEW ----- }
setCanDrill
ArabirimindekiIVisualHost
yöntemi:export interface IVisualHost extends extensibility.IVisualHost { //… setCanDrill: (drillAllowed: boolean) => void; // ----- NEW ----- }
Detayın devre dışı bırakılıp bırakılmadığını belirlemek için güncelleştirme yöntemindeki özelliğini kullanın isDrillDisabled
:
private update(options: VisualUpdateOptions) {
//…
const isDrillDisabled = options.dataViews[0].metadata.dataRoles.isDrillDisabled;
//…
}
Ardından gerektiğinde detaylandırmayı etkinleştirmek veya devre dışı bırakmak için API çağrısını kullanın:
Etkinleştirmek için:
this.host.setCanDrill(true /* drillAllowed */);
Devre dışı bırakmak için:
this.host.setCanDrill(false /* drillAllowed */);
Dinamik detay denetimi gereksinimleri
Detaylandırma varsayılan olarak etkindir, ancak dinamik detaylandırma denetimi özelliği görselin BIR API çağrısı kullanarak detaylandırmayı etkinleştirmesine veya devre dışı bırakmasına olanak tanır.
Dinamik detay denetimi özelliğine sahip bir görsel, capabilities.json dosyasında aşağıdaki koda sahiptir:
Detaylandırma varsayılan olarak devre dışı bırakılmıştır:
"drilldown": { "roles": [ "Rows", "Columns" ], "canDisableDrill": { "disabledByDefault": true } },
Detaylandırma varsayılan olarak etkinken:
"drilldown": { "roles": [ "Rows", "Columns" ], "canDisableDrill": {} },
canDisableDrill
özelliği, görselin bu özelliği desteklediğini gösterir. Bu özellik olmadan API çağrısına uyulmaz.
özelliği, disabledByDefault
detay özelliğinin varsayılan olarak devre dışı bırakılıp bırakılmayacağını belirtir.
Dekont
disabledByDefault
Özelliği, aşağıdaki eylemlerden birini yaptığınızda geçerlilik kazanır:
- Tuvale yeni görsel ekleme
- Bu özelliği desteklemeyen bir görseli dönüştürün.
Örneğin, bir sourceVisual öğesini targetVisual'a dönüştürürseniz, targetVisual'ın disabledByDefault
özelliği yalnızca sourceVisual bu özelliği desteklemiyorsa kabul edilir. sourceVisual bu özelliği destekliyorsa targetVisual varsayılan değil sourceVisual'ın durumunu korur.
Mevcut görselin yeni sürümüne detaya gitme desteği ekleme
Detaya gitme özelliğinin kullanılması hataya neden olan bir değişikliği temsil eder. Bu nedenle, en sorunsuz geçiş için yeni sürüm için yeni bir görsel GUID kullanmanızı öneririz.
Bununla birlikte, aynı GUID'yi korumak istiyorsanız aşağıdaki noktaları göz önünde bulundurun:
Atanamaz bir sürümden yeni bir detaylanabilir sürüme geçiş yaptığınızda, detaylandırma özelliğinin
dataView
bir parçası olarak sunulan hiyerarşik veri desteği nedeniyle bazı veriler içinde sağlanmayabilir. Dinamik detay denetimi özelliği bu sorun için otomatik destek sunmaz, ancak geçiş işlemini yönetmek için kullanılabilir.Görselin kendi kendine geçişi için görsel aşağıdaki eylemleri gerçekleştirmelidir:
Eski sürüm yerine yeni sürümün ilk kez yüklendiğini belirleyin ve API'yi
persistProperties
uygulayın.API kullanarak tüm verileri almak için detayı
setCanDrill
devre dışı bırakın.
Aşağıdaki örnekte, eski bir görseli dinamik detay denetimi kullanan bir görsele kendi kendine geçirme gösterilmektedir:
Capabilities.json dosyasına aşağıdaki nesneyi ekleyin:
"DrillMigration": { "displayName": "Drill Migration", "properties": { "isMigrated": { "displayName": "Is Drill Migrated", "type": { "bool": true } } } },
Visual.ts dosyasına aşağıdakileri ekleyin:
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); } }
Bu kod eklendikten sonra görsel ilk kez açıldığında DrillMigration değişkeni true olarak ayarlanır ve görsel varsayılan durumda açılır.
Dikkat edilecekler ve sınırlamalar
Detaylandırma devre dışı bırakıldıktan sonra detay durumu kaydedilmez. Devre dışı bırakıldıktan sonra detayı yeniden kullanılabilir hale getirirseniz, devre dışı bırakılmadan önce görüntülenenlerden bağımsız olarak yalnızca ilk düzey görüntülenir.
Genişletme/daraltma durumu, detay devre dışı bırakıldıktan sonra kaydedilmez. Detay yeniden etkinleştirildikten sonra tüm satırlar daraltılır.
API çağrısı panolar için desteklenmez.
Veri görünümü eşleme koşulları: Detaylandırılabilir rolün tüm koşulları için, detaylandırma devre dışı bırakıldığında görseli yalnızca bir alanla sınırlamak için kullanın
"max": 1
. Örneğin:Kategorik veri görünümü için:
"conditions": [ { "category": { "min": 1 }, "measure": { "max": 1 }} ]
Matris veri görünümü için:
"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 } }, ]