Skip to content

Commit

Permalink
Merge pull request #254 from AUS-DOH-Safety-and-Quality/setting-valid…
Browse files Browse the repository at this point in the history
…ation

Implement PBI settings validValues API
  • Loading branch information
andrjohns authored Mar 10, 2024
2 parents 8a4dea5 + 3f4ccc9 commit f21c6db
Show file tree
Hide file tree
Showing 3 changed files with 187 additions and 134 deletions.
23 changes: 15 additions & 8 deletions src/Classes/settingsClass.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ type VisualObjectInstance = powerbi.default.VisualObjectInstance;
type VisualObjectInstanceContainer = powerbi.default.VisualObjectInstanceContainer;
import { dataViewWildcard } from "powerbi-visuals-utils-dataviewutils";
import { extractConditionalFormatting } from "../Functions";
import { default as defaultSettings, settingsPaneGroupings, settingsPaneToggles } from "../defaultSettings";
import { default as defaultSettings, type settingsValueTypes, settingsPaneGroupings, settingsPaneToggles } from "../defaultSettings";
import derivedSettingsClass from "./derivedSettingsClass";

export type defaultSettingsType = typeof defaultSettings;
export type defaultSettingsType = settingsValueTypes;
export type defaultSettingsKey = keyof defaultSettingsType;
export type settingsScalarTypes = number | string | boolean;

Expand Down Expand Up @@ -42,7 +42,7 @@ export default class settingsClass {
// use those to extract and update the relevant values
const settingNames: string[] = Object.keys(this.settings[settingGroup]);
settingNames.forEach(settingName => {
this.settings[settingGroup][settingName] = condFormatting ? condFormatting[settingName] : defaultSettings[settingGroup][settingName]
this.settings[settingGroup][settingName] = condFormatting ? condFormatting[settingName] : defaultSettings[settingGroup][settingName]["default"]
})
})

Expand All @@ -63,12 +63,12 @@ export default class settingsClass {
const paneGroupings: Record<string, string[]>
= settingsGrouped ? JSON.parse(JSON.stringify(settingsPaneGroupings[settingGroupName]))
: { "all": settingNames };

if (Object.keys(settingsPaneToggles).includes(settingGroupName)) {
const toggledSettings: Record<string, Record<string, string[]>>
= settingsGrouped ? settingsPaneToggles[settingGroupName]
: { "all": settingsPaneToggles[settingGroupName]};

Object.keys(toggledSettings).forEach(toggleGroup => {
const possibleSettings: string[] = paneGroupings[toggleGroup];
let settingsToRemove: string[] = new Array<string>();
Expand All @@ -80,7 +80,7 @@ export default class settingsClass {
paneGroupings[toggleGroup] = possibleSettings.filter(setting => !settingsToRemove.includes(setting))
})
}

const rtnInstances = new Array<VisualObjectInstance>();
const rtnContainers = new Array<VisualObjectInstanceContainer>();

Expand All @@ -105,7 +105,10 @@ export default class settingsClass {
objectName: settingGroupName,
properties: props,
propertyInstanceKind: Object.fromEntries(propertyKinds),
selector: dataViewWildcard.createDataViewWildcardSelector(dataViewWildcard.DataViewWildcardMatchingOption.InstancesAndTotals)
selector: dataViewWildcard.createDataViewWildcardSelector(dataViewWildcard.DataViewWildcardMatchingOption.InstancesAndTotals),
validValues: Object.fromEntries(Object.keys(defaultSettings[settingGroupName]).map((settingName) => {
return [settingName, defaultSettings[settingGroupName][settingName]?.["valid"]]
}))
})

if (currKey !== "all") {
Expand All @@ -118,7 +121,11 @@ export default class settingsClass {
}

constructor() {
this.settings = JSON.parse(JSON.stringify(defaultSettings));
this.settings = Object.fromEntries(Object.keys(defaultSettings).map((settingGroupName) => {
return [settingGroupName, Object.fromEntries(Object.keys(defaultSettings[settingGroupName]).map((settingName) => {
return [settingName, defaultSettings[settingGroupName][settingName]];
}))];
})) as settingsValueTypes;
this.derivedSettings = new derivedSettingsClass();
}
}
2 changes: 1 addition & 1 deletion src/Functions/extractConditionalFormatting.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export default function extractConditionalFormatting<T extends SettingsTypes>(ca
dataViewObjects.getCommonValue(
(inputCategories.objects ? inputCategories.objects[idx] : null) as powerbi.DataViewObjects,
{ objectName: name, propertyName: settingName },
defaultSettings[name][settingName]
defaultSettings[name][settingName]["default"]
)
]
})
Expand Down
Loading

0 comments on commit f21c6db

Please sign in to comment.