Προσθήκη υποστήριξης σελιδοδεικτών σε απεικονίσεις σε αναφορές Power BI
Με τους σελιδοδείκτες αναφοράς Power BI, μπορείτε να καταγράψετε και αποθηκεύσετε μια διαμορφωμένη προβολή μιας σελίδας αναφοράς. Στη συνέχεια, μπορείτε να επιστρέψετε στην αποθηκευμένη προβολή γρήγορα και εύκολα όποτε θέλετε. Ο σελιδοδείκτης αποθηκεύει ολόκληρη τη ρύθμιση παραμέτρων, συμπεριλαμβανομένων των επιλογών και φίλτρων.
Για περισσότερες πληροφορίες σχετικά με τους σελιδοδείκτες, ανατρέξτε στο θέμα Χρήση σελιδοδεικτών για την κοινή χρήση πληροφοριών και τη δημιουργία ιστοριών στο Power BI.
Απεικονίσεις που υποστηρίζουν σελιδοδείκτες
Μια απεικόνιση Power BI που υποστηρίζει σελιδοδείκτες πρέπει να μπορεί να αποθηκεύει και να παρέχει τις σωστές πληροφορίες όταν χρειάζεται. Εάν η απεικόνισή σας αλληλεπιδρά με άλλες απεικονίσεις, επιλέγει σημεία δεδομένων ή φιλτράρει άλλες απεικονίσεις, πρέπει να αποθηκεύσετε την κατάσταση με σελιδοδείκτη στις ιδιότητες filterState της απεικόνισης.
Σημείωμα
Η δημιουργία μιας απεικόνισης που υποστηρίζει σελιδοδείκτες απαιτεί:
- Powerbi-visuals-utils-interactivityutils έκδοση 3.0.0 ή νεότερη έκδοση για απεικονίσεις φίλτρου και οποιαδήποτε απεικόνιση που χρησιμοποιεί
InteractivityService
. - Visual API έκδοση 1.11.0 ή νεότερη έκδοση για απεικονίσεις χωρίς φίλτρο που χρησιμοποιούν
SelectionManager
αντί γιαInteractivityService
. - Για να μάθετε ποια έκδοση χρησιμοποιείτε, ελέγξτε το
apiVersion
στο αρχείο pbiviz.json .
Πώς αλληλεπιδρούν οι απεικονίσεις Power BI με το Power BI στους σελιδοδείκτες αναφοράς
Ας υποθέσουμε ότι θέλετε να δημιουργήσετε πολλούς σελιδοδείκτες σε μια σελίδα αναφοράς με κάθε σελιδοδείκτη να έχει διαφορετικά σημεία δεδομένων επιλεγμένα.
Πρώτα, επιλέξτε ένα ή περισσότερα σημεία δεδομένων στην απεικόνισή σας. Η απεικόνιση μεταβιβάζει τις επιλογές σας στον κεντρικό υπολογιστή. Στη συνέχεια, επιλέξτε Προσθήκη στο τμήμα παραθύρου Σελιδοδείκτης. Το Power BI αποθηκεύει τις τρέχουσες επιλογές για τον νέο σελιδοδείκτη.
Κάντε το ίδιο αρκετές φορές για να δημιουργήσετε νέους σελιδοδείκτες. Αφού δημιουργήσετε τους σελιδοδείκτες, μπορείτε να κάνετε εναλλαγή μεταξύ τους.
Κάθε φορά που επιλέγετε έναν σελιδοδείκτη, το Power BI επαναφέρει το αποθηκευμένο φίλτρο ή την κατάσταση επιλογής και το διαβιβάζει στις απεικονίσεις. Οι απεικονίσεις στην αναφορά επισημαίνονται ή φιλτράρονται σύμφωνα με την κατάσταση που είναι αποθηκευμένη στον σελιδοδείκτη. Για να επαναφέρετε τη σωστή κατάσταση, η απεικόνιση πρέπει να διαβιβάσει τη σωστή κατάσταση επιλογής στον κεντρικό υπολογιστή (για παράδειγμα, τα χρώματα των σημείων δεδομένων που αποδόθηκαν).
Η νέα κατάσταση επιλογής (ή φίλτρο) κοινοποιείται μέσω της ιδιότητας options.jsonFilters
στη update
μέθοδο . Η jsonFilters
μπορεί να είναι είτε Advanced Filter
, είτε Tuple Filter
.
- Εάν η απεικόνισή σας περιέχει επιλεγμένα σημεία δεδομένων, επαναφέρετε την επιλογή σε αυτή του επιλεγμένου σελιδοδείκτη χρησιμοποιώντας τη συνάρτηση επιστροφής κλήσης,
registerOnSelectCallback
, στοISelectionManager
. - Εάν η απεικόνισή σας χρησιμοποιεί φίλτρα για την επιλογή δεδομένων, επαναφέρετε τις τιμές φίλτρου στις αντίστοιχες τιμές του επιλεγμένου σελιδοδείκτη.
Απεικονίσεις με επιλογή
Εάν η απεικόνισή σας αλληλεπιδρά με άλλες απεικονίσεις χρησιμοποιώντας την Επιλογή, μπορείτε να προσθέσετε υποστήριξη σελιδοδεικτών με έναν από τους εξής δύο τρόπους:
- Μέσω του InteractivityService για τη διαχείριση επιλογών, χρησιμοποιήστε το
applySelectionFromFilter
. Αυτή είναι η ευκολότερη και προτιμώμενη μέθοδος. - Μέσω της Διαχείρισης επιλογών, εάν η απεικόνισή σας δεν χρησιμοποιεί το InteractivityService.
Χρήση του InteractivityService για την επαναφορά επιλογών σελιδοδεικτών
Εάν η απεικόνισή σας χρησιμοποιεί το InteractivityService, δεν χρειάζεστε άλλες ενέργειες για την υποστήριξη των σελιδοδεικτών στην απεικόνισή σας.
Όταν επιλέγετε έναν σελιδοδείκτη, το βοηθητικό πρόγραμμα χειρίζεται αυτόματα την κατάσταση επιλογής της απεικόνισης.
Χρήση της Διαχείρισης επιλογών για την επαναφορά επιλογών σελιδοδεικτών
Εάν δεν χρησιμοποιείτε το InteractivityService
, μπορείτε να αποθηκεύσετε και να ανακαλέσετε επιλογές σελιδοδεικτών χρησιμοποιώντας τη ISelectionManager.registerOnSelectCallback
μέθοδο ως εξής:
Όταν επιλέγετε έναν σελιδοδείκτη, το Power BI καλεί τη callback
μέθοδο της απεικόνισης με τις αντίστοιχες επιλογές.
this.selectionManager.registerOnSelectCallback(
(ids: ISelectionId[]) => {
//called when a selection was set by Power BI
});
);
Ας υποθέσουμε ότι δημιουργήσατε ένα σημείο δεδομένων στη μέθοδο visualTransform της απεικόνισής σας.
Η datapoints
μοιάζει κάπως έτσι:
visualDataPoints.push({
category: categorical.categories[0].values[i],
color: getCategoricalObjectValue<Fill>(categorical.categories[0], i, 'colorSelector', 'fill', defaultColor).solid.color,
selectionId: host.createSelectionIdBuilder()
.withCategory(categorical.categories[0], i)
.createSelectionId(),
selected: false
});
Τώρα έχετε visualDataPoints
ως σημεία δεδομένων σας και ο ids
πίνακας έχει διαβιβαστεί στη callback
συνάρτηση.
Σε αυτό το σημείο, η απεικόνιση θα πρέπει να συγκρίνει τον ISelectionId[]
πίνακα με τις επιλογές του visualDataPoints
πίνακα και, στη συνέχεια, να επισημαίνει τα αντίστοιχα σημεία δεδομένων καθώς επιλέγονται.
this.selectionManager.registerOnSelectCallback(
(ids: ISelectionId[]) => {
visualDataPoints.forEach(dataPoint => {
ids.forEach(bookmarkSelection => {
if (bookmarkSelection.equals(dataPoint.selectionId)) {
dataPoint.selected = true;
}
});
});
});
);
Αφού ενημερώσετε τα σημεία δεδομένων, θα αντικατοπτρίζουν την τρέχουσα κατάσταση επιλογής που είναι αποθηκευμένη στο filter
αντικείμενο. Στη συνέχεια, όταν αποδίδονται τα σημεία δεδομένων, η κατάσταση επιλογής της προσαρμοσμένης απεικόνισης συμφωνεί με την κατάσταση του σελιδοδείκτη.
Απεικονίσεις με φίλτρο
Για να υποστηρίξετε σελιδοδείκτες σε απεικονίσεις που έχουν φίλτρο, χρησιμοποιήστε InteractivityService
.
Ας υποθέσουμε ότι η απεικόνιση δημιουργεί ένα φίλτρο δεδομένων κατά εύρος ημερομηνιών. Έχετε startDate
τα και endDate
ως τις ημερομηνίες έναρξης και λήξης της περιοχής.
Η απεικόνιση δημιουργεί ένα σύνθετο φίλτρο και καλεί τη μέθοδο applyJsonFilter
κεντρικού υπολογιστή για να φιλτράρει δεδομένα με τις σχετικές συνθήκες.
Ο προορισμός είναι ο πίνακας που χρησιμοποιείται για φιλτράρισμα.
import { AdvancedFilter } from "powerbi-models";
const filter: IAdvancedFilter = new AdvancedFilter(
target,
"And",
{
operator: "GreaterThanOrEqual",
value: startDate
? startDate.toJSON()
: null
},
{
operator: "LessThanOrEqual",
value: endDate
? endDate.toJSON()
: null
});
this.host.applyJsonFilter(
filter,
"general",
"filter",
(startDate && endDate)
? FilterAction.merge
: FilterAction.remove
);
Κάθε φορά που επιλέγετε έναν σελιδοδείκτη, η προσαρμοσμένη απεικόνιση λαμβάνει μια update
κλήση.
update
Στη μέθοδο , η απεικόνιση ελέγχει το φίλτρο στο αντικείμενο:
const filter: IAdvancedFilter = FilterManager.restoreFilter(
&& options.jsonFilters
&& options.jsonFilters[0] as any
) as IAdvancedFilter;
Εάν το filter
αντικείμενο δεν είναι null, η απεικόνιση επαναφέρει τις συνθήκες φιλτραρίσματος από το αντικείμενο:
const jsonFilters: AdvancedFilter = this.options.jsonFilters as AdvancedFilter[];
if (jsonFilters
&& jsonFilters[0]
&& jsonFilters[0].conditions
&& jsonFilters[0].conditions[0]
&& jsonFilters[0].conditions[1]
) {
const startDate: Date = new Date(`${jsonFilters[0].conditions[0].value}`);
const endDate: Date = new Date(`${jsonFilters[0].conditions[1].value}`);
// apply restored conditions
} else {
// apply default settings
}
Μετά από αυτό, η απεικόνιση αλλάζει την εσωτερική της κατάσταση ώστε να ταιριάζει με τις τρέχουσες συνθήκες. Η εσωτερική κατάσταση περιλαμβάνει τα σημεία δεδομένων και αντικείμενα απεικόνισης (γραμμές, ορθογώνια και ούτω καθεξής).
Σημαντικό
Στο παραπάνω σενάριο σελιδοδεικτών αναφοράς, η απεικόνιση δεν θα πρέπει να καλεί applyJsonFilter
το για φιλτράρισμα των άλλων απεικονίσεων. Θα φιλτράρονται ήδη από το Power BI.
Η απεικόνιση Αναλυτή λωρίδας χρόνου αλλάζει τον επιλογέα περιοχής στις αντίστοιχες περιοχές δεδομένων.
Αποθήκευση της κατάστασης φίλτρου της απεικόνισης
Εκτός από την αποθήκευση των συνθηκών του φίλτρου για τον σελιδοδείκτη, μπορείτε επίσης να αποθηκεύσετε άλλες πτυχές του φίλτρου.
Για παράδειγμα, ο Αναλυτής λωρίδας χρόνου αποθηκεύει τις Granularity
τιμές ιδιοτήτων ως κατάσταση φίλτρου. Επιτρέπει στην υποδιαίρεση της λωρίδας χρόνου (ημέρες, μήνες, έτη κ.λπ.) να αλλάζει καθώς αλλάζετε σελιδοδείκτες.
Η filterState
ιδιότητα αποθηκεύει μια πτυχή φίλτρου ως ιδιότητα. Η απεικόνιση μπορεί να αποθηκεύσει διάφορες filterState
τιμές σε σελιδοδείκτες.
Για να αποθηκεύσετε μια τιμή ιδιότητας ως κατάσταση φίλτρου, ορίστε την ιδιότητα αντικειμένου όπως "filterState": true
στο αρχείο capabilities.json .