in src/lib/calcUpdateType.ts [184:224]
function hasDataViewChanged(dv1: powerbi.DataView, dv2: powerbi.DataView, options: ICalcUpdateTypeOptions) {
'use strict';
let cats1 = (dv1.categorical && dv1.categorical.categories) || [];
let cats2 = (dv2.categorical && dv2.categorical.categories) || [];
let vals1 = (dv1.categorical && dv1.categorical.values) || <powerbi.DataViewValueColumns>[];
let vals2 = (dv2.categorical && dv2.categorical.values) || <powerbi.DataViewValueColumns>[];
let cols1 = (dv1.metadata && dv1.metadata.columns) || [];
let cols2 = (dv2.metadata && dv2.metadata.columns) || [];
if (cats1.length !== cats2.length ||
cols1.length !== cols2.length ||
vals1.length !== vals2.length) {
return true;
}
if (options.ignoreCategoryOrder) {
cols1 = cols1.sort((a, b) => a.queryName.localeCompare(b.queryName));
cols2 = cols2.sort((a, b) => a.queryName.localeCompare(b.queryName));
}
for (let i = 0; i < cols1.length; i++) {
// The underlying column has changed, or if the roles have changed
if (!ldIsEqual(pickProps(cols1[i]), pickProps(cols2[i]))) {
return true;
}
}
for (let i = 0; i < cats1.length; i++) {
if (hasCategoryChanged(cats1[i], cats2[i])) {
return true;
}
}
if (options.checkHighlights) {
for (let i = 0; i < vals1.length; i++) {
if (hasHighlightsChanged(vals1[i], vals2[i])) {
return true;
}
}
}
return false;
}