public DisplayMetricChart TryGetChart(string chartName) { string me = whoami(); DisplayMetricChart chart = _metricManager.GetChart(chartName); if (chart != null) { MembershipHelper.CheckMembership(chart.GroupID, me); return(chart); } else { //check chart name format if (string.IsNullOrEmpty(chartName)) { return(null); } string[] split = chartName.Split('_'); string group = split[0]; string category = split.Length > 1 ? split[1] : null; string counter = split.Length > 2 ? split[2] : null; string instance = split.Length > 3 ? split[3] : null; MembershipHelper.CheckMembership(group, me); //Try create chart if not exist List <MetricDataSet> datasets = _metricManager.QueryDataSet(group, category, counter, instance); if (datasets.Count == 0) { return(null); } chart = _metricManager.CreateChart(chartName, group, chartName); foreach (var dataset in datasets) { _metricManager.AddDataSet(chartName, dataset.Id, dataset.Instance, "line"); } chart = _metricManager.GetChart(chartName); } return(chart); }