/// <summary> /// Search, fill data into summery /// </summary> public void Populate(int facilityReportId, int searchYear, string pollutantCode, MediumFilter.Medium medium) { FacilityBasic = Facility.GetFacilityBasic(facilityReportId); PollutantCode = pollutantCode; ViewState[FACILITY_REPORTID] = facilityReportId; CurrentMedium = medium; ViewState[SEARCH_YEAR] = searchYear; // reset viewstate data ViewState[TIMESERIES_AIR] = null; ViewState[TIMESERIES_WATER] = null; ViewState[TIMESERIES_SOIL] = null; showContent(TrendReleaseContent.TimeSeries.ToString()); // set the year according to search. Include EPER List <int> years = ListOfValues.ReportYearsSeries().ToList(); if (medium == MediumFilter.Medium.Soil) { years = ListOfValues.ReportYears(showEPER).ToList(); } this.ucYearCompareSeries.Initialize(years, searchYear); }
/// <summary> /// /// </summary> public void PopulateMediumRadioButtonList( MediumFilter filter, MediumFilter.Medium selected, PollutantReleases.FacilityCountObject counts) { List <string> items = addButtons(filter, counts); if (selected == MediumFilter.Medium.Air && filter.ReleasesToAir && items.Contains(getRadioButtonValue(MediumFilter.Medium.Air))) { rblMediumSelector.SelectedValue = getRadioButtonValue(MediumFilter.Medium.Air); OnMediumSelected(new MediumSelectedEventArgs(rblMediumSelector.SelectedValue)); } else if (selected == MediumFilter.Medium.Water && filter.ReleasesToWater && items.Contains(getRadioButtonValue(MediumFilter.Medium.Water))) { rblMediumSelector.SelectedValue = getRadioButtonValue(MediumFilter.Medium.Water); OnMediumSelected(new MediumSelectedEventArgs(rblMediumSelector.SelectedValue)); } else if (selected == MediumFilter.Medium.Soil && filter.ReleasesToSoil && items.Contains(getRadioButtonValue(MediumFilter.Medium.Soil))) { rblMediumSelector.SelectedValue = getRadioButtonValue(MediumFilter.Medium.Soil); OnMediumSelected(new MediumSelectedEventArgs(rblMediumSelector.SelectedValue)); } else { // medium not supported by this control, select default if (this.rblMediumSelector.Items.Count > 0) { rblMediumSelector.SelectedIndex = 0; OnMediumSelected(new MediumSelectedEventArgs(rblMediumSelector.SelectedValue)); } } }
private void setMapList(MediumFilter.Medium medium) { string sectorId = ""; if (MediumFilter.Medium.Air == medium) { sectorId = this.ddlSelectSector.SelectedValue; } DiffuseSources.Map[] maps = DiffuseSources.GetMaps(medium, sectorId); if (maps.Length > 0) { divAvailableLayers.Visible = true; rblMaps.Items.Clear(); foreach (DiffuseSources.Map map in maps) { rblMaps.Items.Add(new ListItem(map.GetTitleShort(), map.LayerId)); } } else if (MediumFilter.Medium.Water == medium) { //if no maps hide radiobuttons and map ((MasterSearchPage)this.Master).HideSearchForm(); ((MasterSearchPage)this.Master).HideMap(); this.divEnlarge.Visible = false; } else { divAvailableLayers.Visible = false; } }
private void toggleExpanded(int rowindex) { List <AreaOverview.AOPollutantTreeListRow> data = ViewState[COLDATA] as List <AreaOverview.AOPollutantTreeListRow>; AreaOverview.AOPollutantTreeListRow row = data[rowindex]; //toggle expansion row.IsExpanded = !row.IsExpanded; //Load data from database, if not already loaded if (row.HasChildren && row.IsExpanded && !data.Any(r => r.Level == row.Level + 1 && r.ParentCode == row.Code)) { List <string> pollutantCodes = getOrderedPollutantCodes(); MediumFilter.Medium medium = this.ucMediumSelector.SelectedMedium; int pollutantGroupID = Convert.ToInt32(this.cbPollutantGroup.SelectedValue); if (row.Level == 0) { var activities = QueryLayer.AreaOverview.GetPollutantReleaseActivities(SearchFilter, medium, pollutantGroupID, new List <string> { row.SectorCode }, pollutantCodes); addToData(activities); } else if (row.Level == 1) { var subactivities = QueryLayer.AreaOverview.GetPollutantReleaseSubActivities(SearchFilter, medium, pollutantGroupID, new List <string> { row.ActivityCode }, pollutantCodes); addToData(subactivities); } } populateList(false); //do not restart paging }
public MediumFilter(MediumFilter.Medium medium) { ReleasesToAir = false; ReleasesToWater = false; ReleasesToSoil = false; TransferToWasteWater = false; switch (medium) { case MediumFilter.Medium.Air: { ReleasesToAir = true; break; } case MediumFilter.Medium.Water: { ReleasesToWater = true; break; } case MediumFilter.Medium.Soil: { ReleasesToSoil = true; break; } case MediumFilter.Medium.WasteWater: { TransferToWasteWater = true; break; } } }
protected void UpdateSortColumnNames(MediumFilter.Medium selectedMedium) { switch (selectedMedium) { case MediumFilter.Medium.Air: { ViewState["QuantityTotalColumnName"] = "QuantityAir"; ViewState["QuantityAccidentalColumnName"] = "QuantityAccidentalAir"; ViewState["PercentageAccidentalColumnName"] = "PercentAccidentalAir"; break; } case MediumFilter.Medium.Water: { ViewState["QuantityTotalColumnName"] = "QuantityWater"; ViewState["QuantityAccidentalColumnName"] = "QuantityAccidentalWater"; ViewState["PercentageAccidentalColumnName"] = "PercentAccidentalWater"; break; } case MediumFilter.Medium.Soil: { ViewState["QuantityTotalColumnName"] = "QuantitySoil"; ViewState["QuantityAccidentalColumnName"] = "QuantityAccidentalSoil"; ViewState["PercentageAccidentalColumnName"] = "PercentAccidentalSoil"; break; } } }
//create pollutant headers, order by name and save in view state private void preparePollutantHeaders(AreaOverviewSearchFilter filter, MediumFilter.Medium medium, int pollutantGroupID) { List <LOV_POLLUTANT> orderedPollutants = getOrderedPollutants(filter, medium, pollutantGroupID); Dictionary <string, string> pollutantHeaders = new Dictionary <string, string>(); foreach (LOV_POLLUTANT p in orderedPollutants) { pollutantHeaders.Add(p.Code, LOVResources.PollutantNameShort(p.Code)); } ViewState[COLHEADER] = pollutantHeaders; }
public void PopulateMaps(MediumFilter.Medium medium) { if (MediumFilter.Medium.Air == medium) { litSector.Visible = true; populateSectors(); } else { litSector.Visible = false; } setMapList(medium); }
/// <summary> /// returns a dictionary with sheet headers <key, value> for pollutant releases time series search /// </summary> public static Dictionary <string, string> GetTsPollutantReleasesSearchHeader( PollutantReleasesTimeSeriesFilter filter, MediumFilter.Medium currentMedium, bool confidentialityAffected) { Dictionary <string, string> header = makeHeader(); addArea(header, filter.AreaFilter); addActivity(header, filter.ActivityFilter); addPollutant(header, filter.PollutantFilter); addMedium(header, currentMedium); addConfidentiality(header, confidentialityAffected); return(header); }
/// <summary> /// returns a dictionary with sheet headers <key, value> for Area overview search /// </summary> public static Dictionary <string, string> GetAreaoverviewPollutantReleaseSearchHeader( AreaOverviewSearchFilter filter, int pollutantGroupID, MediumFilter.Medium medium, bool confidentialityAffected) { Dictionary <string, string> header = makeHeader(); addLegalRegulation(header, filter.YearFilter.Year); addYear(header, filter.YearFilter); addArea(header, filter.AreaFilter); addPollutantGroup(header, pollutantGroupID); addMedium(header, medium); addConfidentiality(header, confidentialityAffected); return(header); }
public void Populate(PollutantReleasesTimeSeriesFilter filter, MediumFilter.Medium medium) { SearchFilter = filter; var counts = PollutantReleaseTrend.GetFacilityCounts(filter); this.ucMediumSelector.PopulateMediumRadioButtonList(filter.MediumFilter, medium, counts); // check that any relases are selected if (!filter.MediumFilter.ReleasesToAir && !filter.MediumFilter.ReleasesToSoil && !filter.MediumFilter.ReleasesToWater) { dataFound(false); return; } }
/// <summary> /// returns a dictionary with csv headers <key, value> for pollutant release search /// </summary> public static Dictionary <string, string> GetPollutantReleaseSearchHeader( PollutantReleaseSearchFilter filter, MediumFilter.Medium medium, bool confidentialityAffected) { Dictionary <string, string> header = makeHeader(); addPollutant(header, filter.PollutantFilter); addMedium(header, medium); addYear(header, filter.YearFilter); addArea(header, filter.AreaFilter); addConfidentiality(header, confidentialityAffected); return(header); }
private void showContent(PollutantReleasesTimeSeriesFilter filter, MediumFilter.Medium medium) { CurrentMedium = medium; //examine if there exists any confidential data for the medium given bool hasConfidentialInformationMedium = PollutantReleaseTrend.IsAffectedByConfidentiality(filter, medium); this.divConfidentialityInformation.Visible = hasConfidentialInformationMedium; this.divNoConfidentialityInformation.Visible = !hasConfidentialInformationMedium; if (hasConfidentialInformationMedium) { this.lvConfidentiality.DataSource = PollutantReleaseTrend.GetConfidentialTimeSeries(filter, medium); this.lvConfidentiality.DataBind(); } }
public void DoSaveCSV(object sender, EventArgs e) { CultureInfo csvCulture = CultureResolver.ResolveCsvCulture(Request); CSVFormatter csvformat = new CSVFormatter(csvCulture); // Create Header var filter = SearchFilter; int pollutantGroupID = getPollutantGroupID(); List <string> pollutantCodes = getOrderedPollutantCodes(); MediumFilter.Medium medium = this.ucMediumSelector.SelectedMedium; bool isConfidentialityAffected = AreaOverview.IsPollutantReleaseAffectedByConfidentiality(filter, medium, pollutantGroupID); Dictionary <string, string> header = EPRTR.HeaderBuilders.CsvHeaderBuilder.GetAreaoverviewPollutantReleaseSearchHeader(filter, pollutantGroupID, medium, isConfidentialityAffected); // Create Body List <AreaOverview.AOPollutantTreeListRow> rows = AreaOverview.GetPollutantReleaseActivityTree(filter, medium, pollutantGroupID, pollutantCodes).ToList(); sortData(rows); // dump to file string topheader = csvformat.CreateHeader(header); string pollutantinfoHeader = csvformat.GetAreaOverviewPollutantInfoHeader(getOrderedPollutants(filter, medium, pollutantGroupID)); string rowHeader = csvformat.GetAreaOverviewPollutantDataHeader(getOrderedPollutants(filter, medium, pollutantGroupID)); Response.WriteUtf8FileHeader("EPRTR_Areaoverview_PollutantReleases_List"); Response.Write(topheader + pollutantinfoHeader + rowHeader); foreach (var item in rows) { string row = csvformat.GetAreaOverviewPollutantsRow(item); if (AreaOverview.AOPollutantTreeListRow.CODE_TOTAL.Equals(item.Code)) { Response.Write(rowHeader); } Response.Write(row); } Response.End(); }
// Loads data. Resets paging and expansion of activity rows. private void loadData() { MediumFilter.Medium medium = this.ucMediumSelector.SelectedMedium; int pollutantGroupID = getPollutantGroupID(); //prepare headers preparePollutantHeaders(SearchFilter, medium, pollutantGroupID); //get data and save in viewstate List <string> pollutantCodes = getOrderedPollutantCodes(); List <AreaOverview.AOPollutantTreeListRow> data = AreaOverview.GetPollutantReleaseSectors(SearchFilter, medium, pollutantGroupID, pollutantCodes); sortData(data); ViewState[COLDATA] = data; //fill list and restart paging populateList(true); }
/// <summary> /// Returns true if the filter includes the medium given. /// </summary> public bool InludesMedium(MediumFilter.Medium medium) { switch (medium) { case Medium.Air: return(ReleasesToAir); case Medium.Water: return(ReleasesToWater); case Medium.Soil: return(ReleasesToSoil); case Medium.WasteWater: return(TransferToWasteWater); default: throw new ArgumentOutOfRangeException("Unknown medium"); } }
private Color[] getColors(MediumFilter.Medium medium) { Color[] colors = null; switch (medium) { case MediumFilter.Medium.Air: colors = new Color[] { Global.ColorAirAccidental, Global.ColorAirTotal }; break; case MediumFilter.Medium.Soil: colors = new Color[] { Global.ColorSoilAccidental, Global.ColorSoilTotal }; break; case MediumFilter.Medium.Water: colors = new Color[] { Global.ColorWaterAccidental, Global.ColorWaterTotal }; break; } return(colors); }
/// <summary> /// update piechat /// </summary> /// <param name="value"></param> private void updatePieChart(MediumFilter.Medium medium) { //The name and path of the .swf file. string swfFile = EPRTR.Charts.ChartsUtils.PollutantTransferPieChart; if (medium.Equals(MediumFilter.Medium.Air)) { List <Summary.Quantity> air = ViewState[DATA_AIR] as List <Summary.Quantity>; DisplayChart(swfFile, air); } else if (medium.Equals(MediumFilter.Medium.Water)) { List <Summary.Quantity> water = ViewState[DATA_WATER] as List <Summary.Quantity>; DisplayChart(swfFile, water); } else if (medium.Equals(MediumFilter.Medium.Soil)) { List <Summary.Quantity> soil = ViewState[DATA_SOIL] as List <Summary.Quantity>; DisplayChart(swfFile, soil); } }
public void Populate(int facilityid, string pollutantCode, MediumFilter.Medium medium) { PollutantCode = pollutantCode; //set parentcode LOV_POLLUTANT pollutant = ListOfValues.GetPollutant(pollutantCode); ParentCode = null; if (pollutant != null && pollutant.ParentID != null) { LOV_POLLUTANT pollutantGroup = ListOfValues.GetPollutant(pollutant.ParentID.Value); ParentCode = pollutantGroup != null ? pollutantGroup.Code : null; } List <TimeSeriesClasses.ConfidentialityPollutant> data = PollutantReleaseTrend.GetConfidentialTimeSeries(facilityid, pollutantCode, medium); bool hasConfidentialInformation = data.Any(); this.divConfidentialityInformation.Visible = hasConfidentialInformation; this.divNoConfidentialityInformation.Visible = !hasConfidentialInformation; this.lvConfidentiality.Visible = true; this.lvConfidentiality.DataSource = data; this.lvConfidentiality.DataBind(); }
public static Func <POLLUTANTRELEASE, double?> QuantityTotal(MediumFilter.Medium medium) { Expression <Func <POLLUTANTRELEASE, double?> > func; switch (medium) { case MediumFilter.Medium.Air: func = z => z.QuantityAir; break; case MediumFilter.Medium.Soil: func = z => z.QuantitySoil; break; case MediumFilter.Medium.Water: func = z => z.QuantityWater; break; default: throw new ArgumentOutOfRangeException("medium", String.Format("Illegal medium:{0}", medium.ToString())); } return(func.Compile()); }
private void onItemCommand(object sender, ListViewCommandEventArgs e, MediumFilter.Medium medium) { ListView listView = (ListView)sender; // get rowindex ListViewDataItem dataItem = e.Item as ListViewDataItem; if (dataItem == null) { return; //safe check } int rowindex = dataItem.DataItemIndex; if (rowindex >= 0 && rowindex < listView.Items.Count) { string command = e.CommandName; if (command.Equals("toggletimeseries")) { // get pollutant for db lookup string pollutantcode = e.CommandArgument.ToString(); ucFacilityPollutantReleasesTrendSheet timeseries = (ucFacilityPollutantReleasesTrendSheet)listView.Items[rowindex].FindControl("timeSeries"); timeseries.Visible = !timeseries.Visible; Control div = listView.Items[rowindex].FindControl("subsheet"); div.Visible = !div.Visible; if (timeseries.Visible) { // create time series int facilityReportId = (int)ViewState[FACILITYREPORTID]; int searchYear = (int)ViewState[SEARCH_YEAR]; timeseries.Populate(facilityReportId, searchYear, pollutantcode, medium); } } } }
public void Populate(PollutantReleasesTimeSeriesFilter filter, bool hasConfidentialInformation, MediumFilter.Medium medium) { SearchFilter = filter; LOV_POLLUTANT pollutant = ListOfValues.GetPollutant(filter.PollutantFilter.PollutantID); PollutantCode = pollutant != null ? pollutant.Code : null; //set parentcode ParentCode = null; if (pollutant != null && pollutant.ParentID != null) { LOV_POLLUTANT pollutantGroup = ListOfValues.GetPollutant(pollutant.ParentID.Value); ParentCode = pollutantGroup != null ? pollutantGroup.Code : null; } this.ucMediumSelector.Visible = hasConfidentialInformation; if (hasConfidentialInformation) { var count = PollutantReleaseTrend.GetFacilityCounts(filter); this.ucMediumSelector.PopulateMediumRadioButtonList(filter.MediumFilter, medium, count); } }
//D30 END 16/05/2013 /// <summary> /// Get pollutant releases for a specific facility report and medium /// </summary> public static IEnumerable <FACILITYDETAIL_POLLUTANTRELEASE> GetPollutantReleases(int reportID, MediumFilter.Medium medium) { string pollutantTo = EnumUtil.GetStringValue(medium); DataClassesFacilityDataContext db = getDataContext(); IEnumerable <FACILITYDETAIL_POLLUTANTRELEASE> data = db.FACILITYDETAIL_POLLUTANTRELEASEs.Where(p => p.FacilityReportID == reportID && p.PollutantTo.Equals(pollutantTo)).OrderBy(x => x.PollutantCode); return(data); }
/// <summary> /// updateTimeSeries /// </summary> private void updateCompareChart(PollutantReleasesTimeSeriesFilter filter, MediumFilter.Medium medium) { CurrentMedium = medium; // view everything, user may select other years to compare dataFound(true); // init year combo boxes int year1 = this.ucYearCompare.Year1; int year2 = this.ucYearCompare.Year2; // get compare result compare char TimeSeriesClasses.ComparisonPollutant result = PollutantReleaseTrend.GetComparisonTimeSeries(filter, year1, year2, medium); bool foundData = (result.QuantityFrom != null || result.QuantityTo != null); if (foundData) { Color[] colors = new Color[] { }; // create compare chart and table if (medium.Equals(MediumFilter.Medium.Air)) { colors = new Color[] { Global.ColorAirTotal, Global.ColorAirTotal }; } else if (medium.Equals(MediumFilter.Medium.Water)) { // get report data colors = new Color[] { Global.ColorWaterTotal, Global.ColorWaterTotal }; } else if (medium.Equals(MediumFilter.Medium.Soil)) { colors = new Color[] { Global.ColorSoilTotal, Global.ColorSoilTotal }; } ChartHatchStyle[] hatchStyles = new ChartHatchStyle[] { Global.HatchStyleBothYears, Global.HatchStyleTotal }; string[] legendTexts = new string[] { Resources.GetGlobal("Common", "FacilitiesBothYears"), Resources.GetGlobal("Common", "AllFacilities") }; this.ucStackColumnCompare.Initialize(colors.Length, StackColumnType.Comparison, PollutantReleaseTrend.CODE_KG, colors, hatchStyles, legendTexts); TimeSeriesUtils.BarData dataFrom = new TimeSeriesUtils.BarData { Year = result.YearFrom, Values = new double?[] { TimeSeriesUtils.RangeValue(result.BothQuantityFrom), TimeSeriesUtils.RangeValue(result.QuantityFrom) - TimeSeriesUtils.RangeValue(result.BothQuantityFrom) }, }; TimeSeriesUtils.BarData dataTo = new TimeSeriesUtils.BarData { Year = result.YearTo, Values = new double?[] { TimeSeriesUtils.RangeValue(result.BothQuantityTo), TimeSeriesUtils.RangeValue(result.QuantityTo) - TimeSeriesUtils.RangeValue(result.BothQuantityTo) }, }; // from and to bar this.ucStackColumnCompare.Add(new List <TimeSeriesUtils.BarData>() { dataFrom, dataTo }); // update sinle table updateTable(result); } else { dataFound(false); } }
/// <summary> /// Update flash graph /// foreach (PollutantReleases.AreaComparison item in list) // Debug.WriteLine(String.Format("Area:{0} Quantity:{1} Percent:{2}", item.Area, item.Quantity, item.Percent)); /// </summary> private void updateGraph(PollutantReleaseSearchFilter filter, MediumFilter.Medium medium) { string title = LOVResources.MediumName(EnumUtil.GetStringValue(medium)); string swfFile = EPRTR.Charts.ChartsUtils.PolluntantReleaseAreaComparisonChart; EPRTR.Charts.ChartsUtils.AreaType?chartType = null; List <PollutantReleases.AreaComparison> list = null; if (medium.Equals(MediumFilter.Medium.Air)) { if (ViewState[DATA_AIR] != null) { list = ViewState[DATA_AIR] as List <PollutantReleases.AreaComparison>; } else { list = PollutantReleases.GetAreaComparison(filter, MediumFilter.Medium.Air); translateArea(filter.AreaFilter, list); ViewState[DATA_AIR] = list; } chartType = EPRTR.Charts.ChartsUtils.AreaType.Air; } else if (medium.Equals(MediumFilter.Medium.Water)) { if (ViewState[DATA_WATER] != null) { list = ViewState[DATA_WATER] as List <PollutantReleases.AreaComparison>; } else { list = PollutantReleases.GetAreaComparison(filter, MediumFilter.Medium.Water); translateArea(filter.AreaFilter, list); ViewState[DATA_WATER] = list; } chartType = EPRTR.Charts.ChartsUtils.AreaType.Water; } else if (medium.Equals(MediumFilter.Medium.Soil)) { if (ViewState[DATA_SOIL] != null) { list = ViewState[DATA_SOIL] as List <PollutantReleases.AreaComparison>; } else { list = PollutantReleases.GetAreaComparison(filter, MediumFilter.Medium.Soil); translateArea(filter.AreaFilter, list); ViewState[DATA_SOIL] = list; } chartType = EPRTR.Charts.ChartsUtils.AreaType.Soil; } bool hasData = list != null && list.Count != 0; this.NoDataReturned.Visible = !hasData; if (hasData) { DisplayChart(title, swfFile, list, chartType.Value); } }
/// <summary> /// Create trend sheet /// </summary> private void createTrendSheet(TrendReleaseContent type, int facilityid, MediumFilter.Medium medium) { this.ucStackColumnTime.Visible = false; this.ucStackColumnCompare.Visible = false; this.ucYearCompareEPER.Visible = false; this.compareTable.Visible = false; // Get time series data, used by all sub sheets List <TimeSeriesClasses.PollutantReleases> data = getTimeSeriesData(facilityid, medium); // comparison if (type == TrendReleaseContent.Comparison) { ViewState[CONTENT_TYPE] = TrendReleaseContent.Comparison; if (data != null && data.Count > 0) { this.compareTable.Visible = true; // Create chart this.ucStackColumnCompare.Visible = true; Color[] colors = getColors(medium); string[] labelTexts = new string[] { "", Resources.GetGlobal("Common", "ControlledEPER") }; //, Resources.GetGlobal("Common", "Accidental") }; // init year combo boxes // this.ucYearCompareEPER.Visible = true; int year1 = this.ucYearCompareEPER.Year1; int year2 = this.ucYearCompareEPER.Year2; // reset resetLabels(); TimeSeriesClasses.PollutantReleases data1 = data.Where(d => d.Year == year1).DefaultIfEmpty(new TimeSeriesClasses.PollutantReleases(year1)).Single(); TimeSeriesClasses.PollutantReleases data2 = data.Where(d => d.Year == year2).DefaultIfEmpty(new TimeSeriesClasses.PollutantReleases(year2)).Single(); bool dataFound = data1 != null || data2 != null; if (data1.Quantity >= 100000) { this.ucStackColumnCompare.Initialize(colors.Length, StackColumnTypeEPER.Comparison, "TNE", colors, labelTexts); } else { this.ucStackColumnCompare.Initialize(colors.Length, StackColumnTypeEPER.Comparison, PollutantReleaseTrend.CODE_KG, colors, labelTexts); } if (dataFound) { TimeSeriesUtils.BarData dataFrom = new TimeSeriesUtils.BarData { Year = year1 }; TimeSeriesUtils.BarData dataTo = new TimeSeriesUtils.BarData { Year = year2 }; if (data1 != null) { dataFrom.Values = new double?[] { data1.QuantityAccidental, data1.Quantity - data1.QuantityAccidental }; } if (data2 != null) { dataTo.Values = new double?[] { data2.QuantityAccidental, data2.Quantity - data2.QuantityAccidental }; } // from and to bar this.ucStackColumnCompare.Add(new List <TimeSeriesUtils.BarData>() { dataFrom, dataTo }); updateTableLabels(data1, data2); } // display that no data found for the selected years this.lbNoDataForSelectedYears.Visible = !dataFound; } } }
/// <summary> /// getTimeSeriesData /// </summary> private List <TimeSeriesClasses.PollutantReleases> getTimeSeriesData(int facilityid, MediumFilter.Medium medium) { List <TimeSeriesClasses.PollutantReleases> data = null; // look in viewstate first if (medium == MediumFilter.Medium.Air) { data = ViewState[TIMESERIES_AIR] as List <TimeSeriesClasses.PollutantReleases>; } else if (medium == MediumFilter.Medium.Water) { data = ViewState[TIMESERIES_WATER] as List <TimeSeriesClasses.PollutantReleases>; } else if (medium == MediumFilter.Medium.Soil) { data = ViewState[TIMESERIES_SOIL] as List <TimeSeriesClasses.PollutantReleases>; } // if no data in viewstate or id has changed, query db if ((data == null || data.Count() == 0)) { data = PollutantReleaseTrend.GetTimeSeries(facilityid, PollutantCode, medium); if (medium == MediumFilter.Medium.Air) { ViewState[TIMESERIES_AIR] = data; } else if (medium == MediumFilter.Medium.Water) { ViewState[TIMESERIES_WATER] = data; } else if (medium == MediumFilter.Medium.Soil) { ViewState[TIMESERIES_SOIL] = data; } } return(data); }
/// <summary> /// Create trend sheet /// </summary> private void createTrendSheet(TrendReleaseContent type, int facilityid, MediumFilter.Medium medium) { this.ucStackColumnTime.Visible = false; this.ucStackColumnCompare.Visible = false; this.ucYearCompareSeries.Visible = false; this.compareTable.Visible = false; // Get time series data, used by all sub sheets List <TimeSeriesClasses.PollutantReleases> data = getTimeSeriesData(facilityid, medium); // Time series sheet if (type == TrendReleaseContent.TimeSeries) { ViewState[CONTENT_TYPE] = TrendReleaseContent.TimeSeries; if (data != null && data.Count > 0) { this.ucStackColumnTime.Visible = true; // initialize chart Color[] colors = getColors(medium); string[] labelTexts = new string[] { Resources.GetGlobal("Common", "Accidental"), Resources.GetGlobal("Common", "Controlled") }; ChartHatchStyle[] hatchStyles = new ChartHatchStyle[] { ChartHatchStyle.None, ChartHatchStyle.None }; this.ucStackColumnTime.Initialize(colors.Length, StackColumnType.TimeSeries, PollutantReleaseTrend.CODE_KG, colors, hatchStyles, labelTexts); List <TimeSeriesUtils.BarData> bars = new List <TimeSeriesUtils.BarData>(); foreach (var v in data) { string[] tip = new string[] { String.Format("{0}: {1}", Resources.GetGlobal("Common", "Year"), v.Year), String.Format("{0}: {1}", Resources.GetGlobal("Pollutant", "ReleasesTotal"), QuantityFormat.Format(v.Quantity, v.QuantityUnit)), String.Format("{0}: {1}", Resources.GetGlobal("Pollutant", "ReleasesAccidentalReleases"), QuantityFormat.Format(v.QuantityAccidental, v.QuantityAccidentalUnit)), (v.AccidentalPercent > 0.0) ? String.Format("{0}: {1:F5}%", Resources.GetGlobal("Pollutant", "ReleasesAccidentalPercentValue"), v.AccidentalPercent) : String.Format("{0}: 0%", Resources.GetGlobal("Pollutant", "ReleasesAccidentalPercentValue")) }; TimeSeriesUtils.BarData cd = new TimeSeriesUtils.BarData { Year = v.Year, Values = new double?[] { TimeSeriesUtils.RangeValue(v.QuantityAccidental), TimeSeriesUtils.RangeValue(v.Quantity) - TimeSeriesUtils.RangeValue(v.QuantityAccidental) }, ToolTip = ToolTipFormatter.FormatLines(tip) }; bars.Add(cd); } if ((medium == MediumFilter.Medium.Air) || (medium == MediumFilter.Medium.Water)) { this.ucStackColumnTime.Add(TimeSeriesUtils.InsertMissingYears(bars, showEPER)); } if (medium == MediumFilter.Medium.Soil) { this.ucStackColumnTime.Add(TimeSeriesUtils.InsertMissingYearsTimeSeries(bars, showEPER)); } } } // comparison if (type == TrendReleaseContent.Comparison) { ViewState[CONTENT_TYPE] = TrendReleaseContent.Comparison; if (data != null && data.Count > 0) { this.compareTable.Visible = true; // Create chart this.ucStackColumnCompare.Visible = true; Color[] colors = getColors(medium); ChartHatchStyle[] hatchStyles = new ChartHatchStyle[] { ChartHatchStyle.None, ChartHatchStyle.None }; string[] labelTexts = new string[] { Resources.GetGlobal("Common", "Accidental"), Resources.GetGlobal("Common", "Controlled") }; this.ucStackColumnCompare.Initialize(colors.Length, StackColumnType.Comparison, PollutantReleaseTrend.CODE_KG, colors, hatchStyles, labelTexts); //this.ucStackColumnCompare.Initialize(colors.Length, StackColumnType.Comparison, PollutantReleaseTrend.CODE_TNE, colors, labelTexts); // init year combo boxes this.ucYearCompareSeries.Visible = true; int year1 = this.ucYearCompareSeries.Year1; int year2 = this.ucYearCompareSeries.Year2; // reset resetLabels(); TimeSeriesClasses.PollutantReleases data1 = data.Where(d => d.Year == year1).DefaultIfEmpty(new TimeSeriesClasses.PollutantReleases(year1)).Single(); TimeSeriesClasses.PollutantReleases data2 = data.Where(d => d.Year == year2).DefaultIfEmpty(new TimeSeriesClasses.PollutantReleases(year2)).Single(); bool dataFound = data1 != null || data2 != null; if (dataFound) { TimeSeriesUtils.BarData dataFrom = new TimeSeriesUtils.BarData { Year = year1 }; TimeSeriesUtils.BarData dataTo = new TimeSeriesUtils.BarData { Year = year2 }; if (data1 != null) { dataFrom.Values = new double?[] { data1.QuantityAccidental, data1.Quantity - data1.QuantityAccidental }; } if (data2 != null) { dataTo.Values = new double?[] { data2.QuantityAccidental, data2.Quantity - data2.QuantityAccidental }; } // from and to bar this.ucStackColumnCompare.Add(new List <TimeSeriesUtils.BarData>() { dataFrom, dataTo }); updateTableLabels(data1, data2); } // display that no data found for the selected years this.lbNoDataForSelectedYears.Visible = !dataFound; } } }
/// <summary> /// updateTimeSeries /// </summary> private void updateTimeSeries(PollutantReleasesTimeSeriesFilter filter, MediumFilter.Medium medium) { CurrentMedium = medium; // assume data is found dataFound(true); // result from qyerylayer List <TimeSeriesClasses.PollutantReleases> data = PollutantReleaseTrend.GetTimeSeries(filter, medium);; if (data == null || data.Count == 0) { dataFound(false); return; } // set report data to table this.lvTimeSeriesTable.DataSource = data; this.lvTimeSeriesTable.DataBind(); Color[] colors = new Color[] {}; string[] legendTexts = new string[] { Resources.GetGlobal("Common", "Accidental"), Resources.GetGlobal("Common", "Controlled") }; // init chart. Must be done after table databinding, because missing years are added. if (medium.Equals(MediumFilter.Medium.Air)) { colors = new Color[] { Global.ColorAirAccidental, Global.ColorAirTotal }; } else if (medium.Equals(MediumFilter.Medium.Water)) { colors = new Color[] { Global.ColorWaterAccidental, Global.ColorWaterTotal }; } else if (medium.Equals(MediumFilter.Medium.Soil)) { colors = new Color[] { Global.ColorSoilAccidental, Global.ColorSoilTotal }; } ChartHatchStyle[] hatchStyles = new ChartHatchStyle[] { ChartHatchStyle.None, ChartHatchStyle.None }; this.ucStackColumnTime.Initialize(colors.Length, StackColumnType.TimeSeries, PollutantReleaseTrend.CODE_KG, colors, hatchStyles, legendTexts); //this.ucStackColumnTime.Initialize(colors.Length, StackColumnType.TimeSeries, PollutantReleaseTrend.CODE_TNE, colors, legendTexts); List <TimeSeriesUtils.BarData> bars = new List <TimeSeriesUtils.BarData>(); foreach (var v in data) { string[] tip = new string[] { String.Format("{0}: {1}", Resources.GetGlobal("Common", "Year"), v.Year), String.Format("{0}: {1}", Resources.GetGlobal("Common", "Facilities"), v.Facilities), String.Format("{0}: {1}", Resources.GetGlobal("Pollutant", "ReleasesTotal"), QuantityFormat.Format(v.Quantity, v.QuantityUnit)), String.Format("{0}: {1}", Resources.GetGlobal("Pollutant", "ReleasesAccidentalReleases"), QuantityFormat.Format(v.QuantityAccidental, v.QuantityAccidentalUnit)), (v.AccidentalPercent > 0.0) ? String.Format("{0}: {1:F5}%", Resources.GetGlobal("Pollutant", "ReleasesAccidentalPercentValue"), v.AccidentalPercent) : String.Format("{0}: 0%", Resources.GetGlobal("Pollutant", "ReleasesAccidentalPercentValue")) }; TimeSeriesUtils.BarData cd = new TimeSeriesUtils.BarData { Year = v.Year, Values = new double?[] { TimeSeriesUtils.RangeValue(v.QuantityAccidental), TimeSeriesUtils.RangeValue(v.Quantity) - TimeSeriesUtils.RangeValue(v.QuantityAccidental) }, ToolTip = ToolTipFormatter.FormatLines(tip) }; bars.Add(cd); } this.ucStackColumnTime.Add(TimeSeriesUtils.InsertMissingYearsTimeSeries(bars, false)); }
private List <LOV_POLLUTANT> getOrderedPollutants(AreaOverviewSearchFilter filter, MediumFilter.Medium medium, int pollutantGroupID) { List <string> pollutantCodes = AreaOverview.GetPollutantReleasePollutantCodes(filter, medium, pollutantGroupID); IEnumerable <LOV_POLLUTANT> pollutants = ListOfValues.Pollutants(pollutantGroupID).Where(p => pollutantCodes.Contains(p.Code)); //sort by short name List <LOV_POLLUTANT> orderedPollutants = pollutants.OrderBy(p => LOVResources.PollutantNameShort(p.Code)).ToList(); //Add confidential in group to the end of the list. LOV_POLLUTANT confPollutant = ListOfValues.GetPollutant(pollutantGroupID); if (pollutantCodes.Contains(confPollutant.Code)) { orderedPollutants.Add(confPollutant); } return(orderedPollutants); }