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 isDrillDisabledDataRolesInfobayrağı:

    export interface DataRolesInfo {
          //…
          isDrillDisabled?: boolean; // ----- NEW -----
      }
    
  • setCanDrill Arabirimindeki IVisualHost 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'adö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:

  1. Capabilities.json dosyasına aşağıdaki nesneyi ekleyin:

    "DrillMigration": {
      "displayName": "Drill Migration",
      "properties": {
          "isMigrated": {
              "displayName": "Is Drill Migrated",
              "type": {
                  "bool": true
              }
          }
      }
    },
    
  2. 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 } },
      ]