mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2025-12-28 13:21:42 +00:00
69 lines
2.4 KiB
TypeScript
69 lines
2.4 KiB
TypeScript
import * as ko from "knockout";
|
|
import * as ViewModels from "../../Contracts/ViewModels";
|
|
import { ContextualPaneBase } from "./ContextualPaneBase";
|
|
|
|
export default class GraphStylingPane extends ContextualPaneBase {
|
|
public graphConfigUIData: ViewModels.GraphConfigUiData;
|
|
private remoteConfig: ViewModels.GraphConfigUiData;
|
|
|
|
constructor(options: ViewModels.PaneOptions) {
|
|
super(options);
|
|
|
|
this.graphConfigUIData = {
|
|
showNeighborType: ko.observable(ViewModels.NeighborType.TARGETS_ONLY),
|
|
nodeProperties: ko.observableArray([]),
|
|
nodePropertiesWithNone: ko.observableArray([]),
|
|
nodeCaptionChoice: ko.observable(null),
|
|
nodeColorKeyChoice: ko.observable(null),
|
|
nodeIconChoice: ko.observable(null),
|
|
nodeIconSet: ko.observable(null),
|
|
};
|
|
|
|
this.graphConfigUIData.nodeCaptionChoice.subscribe((val) => {
|
|
if (this.remoteConfig) {
|
|
this.remoteConfig.nodeCaptionChoice(val);
|
|
}
|
|
});
|
|
this.graphConfigUIData.nodeColorKeyChoice.subscribe((val) => {
|
|
if (this.remoteConfig) {
|
|
this.remoteConfig.nodeColorKeyChoice(val);
|
|
}
|
|
});
|
|
this.graphConfigUIData.nodeIconChoice.subscribe((val) => {
|
|
if (this.remoteConfig) {
|
|
this.remoteConfig.nodeIconChoice(val);
|
|
}
|
|
});
|
|
this.graphConfigUIData.nodeIconSet.subscribe((val) => {
|
|
if (this.remoteConfig) {
|
|
this.remoteConfig.nodeIconSet(val);
|
|
}
|
|
});
|
|
this.graphConfigUIData.showNeighborType.subscribe((val) => {
|
|
if (this.remoteConfig) {
|
|
this.remoteConfig.showNeighborType(val);
|
|
}
|
|
});
|
|
}
|
|
|
|
public setData(config: ViewModels.GraphConfigUiData): void {
|
|
// Update pane ko's with config's ko
|
|
this.graphConfigUIData.nodeIconChoice(config.nodeIconChoice());
|
|
this.graphConfigUIData.nodeIconSet(config.nodeIconSet());
|
|
this.graphConfigUIData.nodeProperties(config.nodeProperties());
|
|
this.graphConfigUIData.nodePropertiesWithNone(config.nodePropertiesWithNone());
|
|
this.graphConfigUIData.showNeighborType(config.showNeighborType());
|
|
// Make sure these two happen *after* setting the options of the dropdown,
|
|
// otherwise, the ko will not get set if the choice is not part of the options
|
|
this.graphConfigUIData.nodeCaptionChoice(config.nodeCaptionChoice());
|
|
this.graphConfigUIData.nodeColorKeyChoice(config.nodeColorKeyChoice());
|
|
|
|
this.remoteConfig = config;
|
|
}
|
|
|
|
public override close() {
|
|
this.remoteConfig = null;
|
|
super.close();
|
|
}
|
|
}
|