public Report Clone() { Report clone = new Report(Name); clone.Span = Span; clone.Unit = Unit; clone.CompleteUnit = CompleteUnit; clone.Queries = new List<Query>(); // Clone each query foreach (Query query in Queries) clone.Queries.Add(query.Clone()); return clone; }
private static Query loadXmlQuery(Report report, string queryName) { XmlDocument doc = init(reportsFilePath); // Load metrics XmlNodeList xmlNodeList = doc.SelectNodes("/root/Reports/Report[@name='" + report + "']/Queries/Query[@name='"+ queryName + "']/Metrics/Metric"); List<Metric> metrics = new List<Metric>(); foreach (XmlNode metricNode in xmlNodeList) { string metricName = metricNode.Attributes["name"].Value; string metricTag = metricNode.Attributes["tag"].Value; Metric metric = new Metric(metricName, metricTag); metrics.Add(metric); } // Load dimensions xmlNodeList = doc.SelectNodes("/root/Reports/Report[@name='" + report + "']/Queries/Query[@name='" + queryName + "']/Dimensions/Dimension"); List<Dimension> dimensions = new List<Dimension>(); foreach (XmlNode dimensionNode in xmlNodeList) { string dimensionName = dimensionNode.Attributes["name"].Value; string dimensionTag = dimensionNode.Attributes["tag"].Value; Dimension dimension = new Dimension(dimensionName, dimensionTag); dimensions.Add(dimension); } xmlNodeList = doc.SelectNodes("/root/Reports/Report[@name='" + report + "']/Queries/Query[@name='" + queryName + "']/Filters/Filter"); // Load filters List<Filter> filters = new List<Filter>(); foreach (XmlNode filterNode in xmlNodeList) { String parameterTag = filterNode.Attributes["parameter"].Value; String expression = filterNode.InnerText; Operator op = Operator.GetOperator(filterNode.Attributes["operator"].Value); Parameter parameter = new Dimension("", parameterTag); Filter filter = new Filter(parameter, op, expression); filters.Add(filter); } XmlNode segmentNode = doc.SelectSingleNode("/root/Reports/Report[@name='" + report + "']/Queries/Query[@name='" + queryName + "']/Segment"); String segmentName = segmentNode.Attributes["name"].Value; String semgentId = segmentNode.Attributes["id"].Value; AnaliticsAddIn.XML.Objects.ReportQuery.Filter.Segment segment = new AnaliticsAddIn.XML.Objects.ReportQuery.Filter.Segment(segmentName,semgentId); DateTime end = DateTime.Today; DateTime start = end; TimeUnit unit = report.Unit; return new Query(metrics, dimensions, filters, segment, unit, start, end, queryName); }
private static void loadXmlQueries(Report report) { XmlDocument doc = init(reportsFilePath); XmlNode timeNode = doc.SelectSingleNode("/root/Reports/Report[@name='" + report + "']/Time"); switch (timeNode.Attributes["unit"].Value) { case "Month": report.Unit = TimeUnit.Month; break; case "Day": report.Unit = TimeUnit.Day; break; case "Year": report.Unit = TimeUnit.Year; break; case "Week": report.Unit = TimeUnit.Week; break; default: report.Unit = TimeUnit.None; break; } report.CompleteUnit = bool.Parse(timeNode.Attributes["complete"].Value); report.Span = int.Parse(timeNode.Attributes["span"].Value); XmlNodeList xmlNodeList = doc.SelectNodes("/root/Reports/Report[@name='" + report + "']/Queries/Query"); List<Query> list = new List<Query>(); foreach (XmlNode node in xmlNodeList) { string name = node.Attributes["name"].Value; Query query = loadXmlQuery(report,name); list.Add(query); } report.Queries = list; }
public static List<Report> loadXmlReports() { XmlDocument doc = init(reportsFilePath); XmlNodeList xmlNodeList = doc.SelectNodes("/root/Reports/Report"); List<Report> list = new List<Report>(); foreach (XmlNode node in xmlNodeList) { string name = node.Attributes["name"].Value; Report report = new Report(name); loadXmlQueries(report); list.Add(report); } return list; }
private void newReportButton_Click(object sender, EventArgs e) { if (reportNameTextBox.Text == null) { MessageBox.Show("Error - The new report must have a name.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { // Create a new report Report newReport = new Report(reportNameTextBox.Text); // Add it to the pending reports list PendingReports.Add(newReport); // Add it to the comboBox and set it on selection reportComboBox.Items.Add(newReport); reportComboBox.SelectedItem = newReport; // Clear the textBox reportNameTextBox.Clear(); } }