/// <summary> /// Initialize the bars. /// </summary> /// <param name="series">The number of series to include in the bar chart</param> /// <param name="type">The type of time series chart</param> /// <param name="barcolors">The colors to use for the series. The number of colors given must corresponds to the number of series</param> /// <param name="barHatchStyles">The hatchstyles to use for the series. The number of styles given must corresponds to the number of series</param> /// <param name="legendTexts">The texts to be shown in the legends. If null, no legends will be shown</paparam> /// <param name="unitCode">The unit code corresponding to the y-axis</param> public void Initialize(int series, StackColumnType type, string unitCode, Color[] barColors, ChartHatchStyle[] barHatchStyles, string[] legendTexts) { if (series != barColors.Length) { throw (new ArgumentException("number of colors must correspond to the number of series")); } if (series != barHatchStyles.Length) { throw (new ArgumentException("number of hatch styles must correspond to the number of series")); } if (legendTexts != null && series != legendTexts.Length) { throw (new ArgumentException("number of legend tetxs must correspond to the number of series")); } //set in view state this.Type = type; setAxisYTitle(LOVResources.UnitName(unitCode)); setFont(); setLegendStyle(type); //add series and legends this.stackcolumn.Series.Clear(); this.stackcolumn.Legends[0].CustomItems.Clear(); for (int i = 0; i < series; i++) { Series bar = this.stackcolumn.Series.Add(i.ToString()); bar.ChartType = SeriesChartType.StackedColumn; bar.Color = barColors[i]; bar.IsVisibleInLegend = false; //use custom legends instead. bar.BackHatchStyle = barHatchStyles[i]; if (legendTexts != null) { LegendItem item = new LegendItem(); item.Name = legendTexts[i]; item.SeriesName = legendTexts[i]; item.BorderColor = Color.Black; item.Color = bar.Color; item.BackHatchStyle = bar.BackHatchStyle; item.ImageStyle = LegendImageStyle.Rectangle; this.stackcolumn.Legends[0].CustomItems.Add(item); } } this.stackcolumn.Legends[0].CustomItems.Reverse(); }
/// <summary> /// Manual insertion of all facility level details into List, which is in turn bound to GridView /// </summary> private void populateDetails(int facilityReportId) { FACILITYDETAIL_DETAIL fac = Facility.GetFacilityDetails(facilityReportId).First(); FACILITYDETAIL_COMPETENTAUTHORITYPARTY authority = Facility.GetFacilityCompetentAuthority(facilityReportId).First(); List <FacilityDetailElement> elements = new List <FacilityDetailElement>(); elements.Add(new FacilityDetailElement( Resources.GetGlobal("Facility", "FacilityDetailsTitle"), String.Empty, true)); elements.Add(new FacilityDetailElement( Resources.GetGlobal("Facility", "ParentCompanyName"), ConfidentialFormat.Format(fac.ParentCompanyName, fac.ConfidentialIndicator))); // Take "Valid" string from FACILITY_DETAIL_DETAIL elements.Add(new FacilityDetailElement( Resources.GetGlobal("Facility", "Coords"), CoordinateFormat.Format(fac.Coordinates, "VALID"))); //NUTS is voluntary. Only add if reported. if (!string.IsNullOrEmpty(fac.NUTSRegionSourceCode)) { //Add both reported and geo-coded value - if they differ. if (fac.NUTSRegionSourceCode != fac.NUTSRegionLevel2Code) { elements.Add(new FacilityDetailElement( Resources.GetGlobal("Facility", "NUTSMap"), LOVResources.NutsRegionName(fac.NUTSRegionLevel2Code))); elements.Add(new FacilityDetailElement( Resources.GetGlobal("Facility", "NUTSReported"), LOVResources.NutsRegionName(fac.NUTSRegionSourceCode))); } else { elements.Add(new FacilityDetailElement( Resources.GetGlobal("Facility", "NUTS"), LOVResources.NutsRegionName(fac.NUTSRegionLevel2Code))); } } //Add both reported and geo-coded value - if they differ. if (fac.RiverBasinDistrictSourceCode != fac.RiverBasinDistrictCode) { elements.Add(new FacilityDetailElement( Resources.GetGlobal("Facility", "RBDMap"), LOVResources.RiverBasinDistrictName(fac.RiverBasinDistrictCode))); elements.Add(new FacilityDetailElement( Resources.GetGlobal("Facility", "RBDReported"), LOVResources.RiverBasinDistrictName(fac.RiverBasinDistrictSourceCode))); } else { elements.Add(new FacilityDetailElement( Resources.GetGlobal("Facility", "RBD"), LOVResources.RiverBasinDistrictName(fac.RiverBasinDistrictCode))); } //NACE code reported on sub-activity level, except for EPER where some is reported on Activity level //string naceCode = !String.IsNullOrEmpty(fac.NACESubActivityCode) ? fac.NACESubActivityCode : fac.NACEActivityCode; string naceCode = !String.IsNullOrEmpty(fac.NACEActivityCode) ? fac.NACEActivityCode : fac.NACESectorCode; elements.Add(new FacilityDetailElement( Resources.GetGlobal("Facility", "NACE"), LOVResources.NaceActivityName(naceCode))); //Production volume is voluntary. Only add if reported. if (fac.ProductionVolumeQuantity != null) { elements.Add(new FacilityDetailElement( Resources.GetGlobal("Facility", "ProductionV"), String.Format("{0} {1} {2}", fac.ProductionVolumeProductName, NumberFormat.Format(fac.ProductionVolumeQuantity), LOVResources.UnitName(fac.ProductionVolumeUnitCode)))); } //No. of IPPC installations is voluntary. Only add if reported. if (fac.TotalIPPCInstallationQuantity != null) { elements.Add(new FacilityDetailElement( Resources.GetGlobal("Facility", "IPPC"), NumberFormat.Format(fac.TotalIPPCInstallationQuantity))); } //No. of emplyees is voluntary. Only add if reported. if (fac.TotalEmployeeQuantity != null) { elements.Add(new FacilityDetailElement( Resources.GetGlobal("Facility", "Employ"), NumberFormat.Format(fac.TotalEmployeeQuantity))); } //Operating hours is voluntary. Only add if reported. if (fac.OperatingHours != null) { elements.Add(new FacilityDetailElement( Resources.GetGlobal("Facility", "OperationHours"), String.Format("{0}", fac.OperatingHours))); } //Website is voluntary. Only add if reported. if (!string.IsNullOrEmpty(fac.WebsiteCommunication)) { elements.Add(new FacilityDetailElement( Resources.GetGlobal("Facility", "WebSite"), String.Format("{0}", fac.WebsiteCommunication))); } if (fac.ConfidentialIndicatorCode != null) { elements.Add(new FacilityDetailElement( Resources.GetGlobal("Pollutant", "ConfidentialityReason"), LOVResources.ConfidentialityReason(fac.ConfidentialIndicatorCode))); } elements.Add(new FacilityDetailElement( Resources.GetGlobal("Common", "NationalID") + ":", FacilityDetailsFormat.FormatNationalId(fac))); // This is not the most elegant way to obtain a spacing spacing elements.Add(new FacilityDetailElement(String.Empty, String.Empty)); string updatedDateString = authority.CALastUpdate == null ? Resources.GetGlobal("Facility", "LastUpdatedUnknown") : authority.CALastUpdate.Format(); elements.Add(new FacilityDetailElement( Resources.GetGlobal("Facility", "CompetentA"), String.Format(Resources.GetGlobal("Facility", "LastUpdated"), updatedDateString), true)); elements.Add(new FacilityDetailElement( Resources.GetGlobal("Facility", "Name"), String.Format(authority.CAName))); if (authority.CAAddress != null) { elements.Add(new FacilityDetailElement( Resources.GetGlobal("Facility", "Address"), AddressFormat.Format(authority.CAAddress, authority.CACity, authority.CAPostalCode, false))); } if (authority.CATelephoneCommunication != null) { elements.Add(new FacilityDetailElement( Resources.GetGlobal("Facility", "Phone"), String.Format(authority.CATelephoneCommunication))); } if (authority.CAFaxCommunication != null) { elements.Add(new FacilityDetailElement( Resources.GetGlobal("Facility", "Fax"), String.Format(authority.CAFaxCommunication))); } elements.Add(new FacilityDetailElement( Resources.GetGlobal("Facility", "Email"), String.Format(authority.CAEmailCommunication))); if (authority.CAContactPersonName != null) { elements.Add(new FacilityDetailElement( Resources.GetGlobal("Facility", "CPerson"), String.Format(authority.CAContactPersonName))); } // data binding facilityreportDetails.DataSource = elements; facilityreportDetails.DataBind(); }