blob: c2f524d9a999dd9576d8e63844e06e96c64208c9 [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import {GraphModel} from './graph_model.js';
/**
* A container containing the page-wide state. This is the single source of
* truth, parts of the container will be observed by Vue components on the page.
*/
class PageModel {
/**
* @param {!GraphModel} graphModel The graph data to visualize.
*/
constructor(graphModel) {
/** @public {!GraphModel} */
this.graphModel = graphModel;
/**
* The data for the selected node details UI component.
* @typedef {Object} SelectedNodeDetailsData
* @property {?Node} selectedNode The selected node, if it exists.
*/
/** @public {!SelectedNodeDetailsData} */
this.selectedNodeDetailsData = {
selectedNode: null,
};
}
/**
* Gets the ids of all the nodes in the graph.
* @return {!Array<string>} An array with the all node ids.
*/
getNodeIds() {
return [...this.graphModel.nodes.keys()];
}
}
export {
PageModel,
};