Esempio n. 1
0
        // --------------------------------------------------------------------------------------------------------------------
        // PollutantReleasesTimeSeries Filter
        // --------------------------------------------------------------------------------------------------------------------
        #region PollutantReleasesTimeSeriesFilter


        public static string SerializeToUrl(PollutantReleasesTimeSeriesFilter filter)
        {
            string result = String.Empty;

            if (filter != null)
            {
                // Area
                result += SerializeToUrl(filter.AreaFilter);

                // Year
                result += SerializeToUrl(filter.PeriodFilter);

                // Pollutant
                result += SerializeToUrl(filter.PollutantFilter);

                // Medium
                result += SerializeToUrl(filter.MediumFilter);

                // Activity
                result += SerializeToUrl(filter.ActivityFilter);
            }

            result = result.Remove(result.Length - 1);
            return(result);
        }
Esempio n. 2
0
        private static PollutantReleasesTimeSeriesFilter createConfidentialFilter(PollutantReleasesTimeSeriesFilter filter)
        {
            PollutantReleasesTimeSeriesFilter filterConf = filter.Clone() as PollutantReleasesTimeSeriesFilter;

            filterConf.PollutantFilter.PollutantID = filter.PollutantFilter.PollutantGroupID;

            return(filterConf);
        }
Esempio n. 3
0
 /// <summary>
 /// Populate charts. Selected year in compare dropdown will be searchyear
 /// </summary>
 public void Populate(PollutantReleasesTimeSeriesFilter filter, int?searchYear)
 {
     SearchFilter = filter;
     SearchYear   = searchYear;
     initializeContentLinks();
     //Only determine once and store in viewstate
     ConfidentialityAffected = PollutantReleaseTrend.IsAffectedByConfidentiality(filter);
     // show timeseries as default
     showContent(Sheets.TimeSeries.TimeSeries.ToString());
 }
Esempio n. 4
0
        /// <summary>
        /// return true if confidentiality might effect result
        /// </summary>
        public static bool IsAffectedByConfidentiality(PollutantReleasesTimeSeriesFilter filter, MediumFilter.Medium medium)
        {
            //create new filter with confidential within group instead of pollutant itself
            PollutantReleasesTimeSeriesFilter filterConf = createConfidentialFilter(filter);

            Expression <Func <POLLUTANTRELEASE, bool> > lambda = getLambdaExpression(filterConf, medium);
            DataClassesPollutantReleaseDataContext      db     = getDataContext();

            return(db.POLLUTANTRELEASEs.Any(lambda));
        }
Esempio n. 5
0
    /// <summary>
    /// Search
    /// </summary>
    protected void btnSearch_Click(object sender, EventArgs e)
    {
        if (InvokeSearch != null)
        {
            PollutantReleasesTimeSeriesFilter filter = PopulateFilter();

            // start the search
            InvokeSearch.Invoke(filter, e);
        }
    }
 /// <summary>
 /// load completed, perserve scroll
 /// </summary>
 protected override void OnLoadComplete(EventArgs e)
 {
     base.OnLoadComplete(e);
     if (!IsPostBack)
     {
         //if filter is in request, search will be invoked from the start
         if (LinkSearchBuilder.HasPollutantReleasesTimeSeriesFilter(Request))
         {
             PollutantReleasesTimeSeriesFilter filter = this.ucSearchOptions.PopulateFilter();
             doSearch(filter, EventArgs.Empty);
         }
     }
 }
    /// <summary>
    /// query data to be displayed in the facility resul listview
    /// </summary>
    private void doSearch(object sender, EventArgs e)
    {
        ((MasterSearchPage)this.Master).UpdateMode(true);
        ((MasterSearchPage)this.Master).ShowResultArea();

        PollutantReleasesTimeSeriesFilter filter = sender as PollutantReleasesTimeSeriesFilter;

        if (filter != null)
        {
            this.ucTsPollutantReleasesSheet.Populate(filter);
            updateJavaScriptMap(filter);
        }
    }
Esempio n. 8
0
        /// <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);
        }
Esempio n. 9
0
        // ---------------------------------------------------------------------------------------------------
        // Map filter
        // ---------------------------------------------------------------------------------------------------
        #region Map

        /// <summary>
        /// returns the MapFilter (sql and layers) corresponding to the filter.
        /// </summary>
        public static MapFilter GetMapFilter(PollutantReleasesTimeSeriesFilter filter)
        {
            //parameter must be "p" to match map config file
            ParameterExpression param = Expression.Parameter(typeof(POLLUTANTRELEASE), "p");
            Expression          exp   = LinqExpressionBuilder.GetLinqExpressionPollutantReleases(filter, param);
            Expression <Func <POLLUTANTRELEASE, bool> > lambda = Expression.Lambda <Func <POLLUTANTRELEASE, bool> >(exp, param);

            // create sql and sectors to map. Do not remove parameter prefix.
            MapFilter mapFilter = new MapFilter();

            mapFilter.SqlWhere = LinqExpressionBuilder.GetSQL(lambda.Body, null);
            mapFilter.SetLayers(filter.ActivityFilter);

            return(mapFilter);
        }
    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();
        }
    }
Esempio n. 11
0
    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;
        }
    }
Esempio n. 12
0
    public PollutantReleasesTimeSeriesFilter PopulateFilter()
    {
        PollutantReleasesTimeSeriesFilter filter = new PollutantReleasesTimeSeriesFilter();

        filter.PeriodFilter           = new PeriodFilter();
        filter.PeriodFilter.StartYear = 2007; //EPER years are not included.

        filter.AreaFilter      = this.ucAreaSearchOption.PopulateFilter();
        filter.PollutantFilter = this.ucPollutantSearchOption.PopulateFilter();
        filter.MediumFilter    = this.ucMediumSearchOption.PopulateFilter();
        filter.ActivityFilter  = this.ucAdvancedActivitySearchOption.PopulateFilter();

        // store settings in cookies
        CookieStorage.SetFilter(Response, filter.AreaFilter);

        return(filter);
    }
Esempio n. 13
0
    private void toggleTimeseries(ListViewCommandEventArgs e, int rowindex)
    {
        ucTsPollutantReleasesSheet control = (ucTsPollutantReleasesSheet)this.lvPollutantReleasesArea.Items[rowindex].FindControl("ucTsPollutantReleasesSheet");

        closeAllSubSheets(); // only allow 1 sheet open

        control.Visible = !control.Visible;
        Control div = this.lvPollutantReleasesArea.Items[rowindex].FindControl("subsheet");

        div.Visible = !div.Visible;

        if (control.Visible)
        {
            // create search filter and change area filter
            PollutantReleasesTimeSeriesFilter filter = FilterConverter.ConvertToPollutantReleasesTimeSeriesFilter(SearchFilter);
            filter.AreaFilter = getAreaFilter(e);
            control.Populate(filter, SearchFilter.YearFilter.Year);
        }
    }
Esempio n. 14
0
        // ---------------------------------------------------------------------------------------------------
        // Facility couting
        // ---------------------------------------------------------------------------------------------------
        #region Facility counting
        /// <summary>
        /// Returns the number of facilities for each medium type.
        /// </summary>
        public static PollutantReleases.FacilityCountObject GetFacilityCounts(PollutantReleasesTimeSeriesFilter tsFilter)
        {
            // removes all year span information
            var filter = FilterConverter.ConvertToPollutantReleaseSearchFilter(tsFilter);

            ParameterExpression param = Expression.Parameter(typeof(POLLUTANTRELEASE), "POLLUTANTRELEASE");
            Expression          exp   = LinqExpressionBuilder.GetLinqExpressionPollutantReleases(filter, param);

            // Exclude EPER reporting years
            Expression prop    = Expression.Property(param, "ReportingYear");
            Expression val     = Expression.Constant(2007);
            Expression yearExp = Expression.GreaterThanOrEqual(prop, val);

            exp = Expression.AndAlso(yearExp, exp);

            Expression <Func <POLLUTANTRELEASE, bool> > lambda = Expression.Lambda <Func <POLLUTANTRELEASE, bool> >(exp, param);

            return(PollutantReleases.GetFacilityCounts(lambda, filter.MediumFilter));
        }
Esempio n. 15
0
        /// <summary>
        /// Get confidential data for timeseries on aggregated level. If no confidentiality claims is found the list will be empty.
        /// </summary>
        public static List <TimeSeriesClasses.ConfidentialityPollutant> GetConfidentialTimeSeries(PollutantReleasesTimeSeriesFilter filter, MediumFilter.Medium medium)
        {
            //Find data for confidential in the group of the pollutant
            PollutantReleasesTimeSeriesFilter filterConf = filter.Clone() as PollutantReleasesTimeSeriesFilter;

            filterConf.PollutantFilter.PollutantID = filter.PollutantFilter.PollutantGroupID;

            List <TimeSeriesClasses.PollutantReleases> confidentialData = GetTimeSeries(filterConf, medium);

            if (confidentialData.Count() > 0)
            {
                //Find data for pollutant
                List <TimeSeriesClasses.PollutantReleases> pollutantData = GetTimeSeries(filter, medium);

                //merge the two lists and return.
                return(mergeList(pollutantData, confidentialData));
            }

            return(new List <TimeSeriesClasses.ConfidentialityPollutant>());
        }
Esempio n. 16
0
        //public static string CODE_TNE = EnumUtil.GetStringValue(QuantityUnit.Tonnes);


        // ---------------------------------------------------------------------------------------------------
        // Time series
        // ---------------------------------------------------------------------------------------------------
        #region timeseries


        /// <summary>
        /// Get timeseries on aggregated level
        /// </summary>
        public static List <TimeSeriesClasses.PollutantReleases> GetTimeSeries(PollutantReleasesTimeSeriesFilter filter, MediumFilter.Medium medium)
        {
            // apply filter
            Expression <Func <POLLUTANTRELEASE, bool> > lambda = getLambdaExpression(filter, medium);

            DataClassesPollutantReleaseDataContext db = getDataContext();

            // get data and group by year (which get assigned to x.Key by link)
            IQueryable <IGrouping <int, POLLUTANTRELEASE> > group = db.POLLUTANTRELEASEs.Where(lambda).GroupBy(p => p.ReportingYear).OrderBy(p => p.Key);

            // lookup medium
            IEnumerable <TimeSeriesClasses.PollutantReleases> data = null;

            switch (medium)
            {
            case MediumFilter.Medium.Air:
                data = group.Select(x => new TimeSeriesClasses.PollutantReleases(x.Key, x.Count(), x.Sum(p => p.QuantityAir), x.Sum(p => p.QuantityAccidentalAir)));
                break;

            case MediumFilter.Medium.Soil:
                data = group.Select(x => new TimeSeriesClasses.PollutantReleases(x.Key, x.Count(), x.Sum(p => p.QuantitySoil), x.Sum(p => p.QuantityAccidentalSoil)));
                break;

            case MediumFilter.Medium.Water:
                data = group.Select(x => new TimeSeriesClasses.PollutantReleases(x.Key, x.Count(), x.Sum(p => p.QuantityWater), x.Sum(p => p.QuantityAccidentalWater)));
                break;

            default:
                throw new ArgumentOutOfRangeException("medium", String.Format("Illegal medium: {0}", medium.ToString()));
            }

            IEnumerable <Facility.ReportingCountries> years = Facility.GetReportingCountries(filter.AreaFilter).ToList();

            IEnumerable <TimeSeriesClasses.PollutantReleases> res = from l in data.ToList()
                                                                    join r in years on l.Year equals r.Year
                                                                    select new TimeSeriesClasses.PollutantReleases(l.Year, l.Facilities, l.Quantity, l.QuantityAccidental, r.Countries);

            return(res.OrderBy(p => p.Year).ToList());
        }
    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);
        }
    }
Esempio n. 18
0
        /// <summary>
        /// returns a dictionary with sheet headers for time series pollutant release search
        /// </summary>
        public static Dictionary <string, string> GetTimeSeriesPollutantReleaseHeader(PollutantReleasesTimeSeriesFilter filter)
        {
            Dictionary <string, string> header = new Dictionary <string, string>();

            addArea(header, filter.AreaFilter);
            addActivity(header, filter.ActivityFilter);
            addPollutant(header, filter.PollutantFilter);
            addMedium(header, filter.MediumFilter);
            return(header);
        }
Esempio n. 19
0
        // ---------------------------------------------------------------------------------------------------
        // Comparison
        // ---------------------------------------------------------------------------------------------------
        #region comparison
        /// <summary>
        /// GetComparisonTimeSeries
        /// </summary>
        public static TimeSeriesClasses.ComparisonPollutant GetComparisonTimeSeries(PollutantReleasesTimeSeriesFilter filter, int yearFrom, int yearTo, MediumFilter.Medium medium)
        {
            // Create lambda with pollutant release filter
            DataClassesPollutantReleaseDataContext db = getDataContext();
            ParameterExpression param = Expression.Parameter(typeof(POLLUTANTRELEASE), "s");
            Expression          exp   = LinqExpressionBuilder.GetLinqExpressionPollutantReleases(filter, param);
            // apply medium
            Expression expMedium = LinqExpressionBuilder.GetLinqExpressionMediumRelease(medium, param);

            if (exp != null && expMedium != null)
            {
                exp = Expression.And(exp, expMedium);
            }
            Expression <Func <POLLUTANTRELEASE, bool> > lambda = Expression.Lambda <Func <POLLUTANTRELEASE, bool> >(exp, param);

            // group by reporting year, get from and to data
            IQueryable <IGrouping <int, POLLUTANTRELEASE> > groupFrom = db.POLLUTANTRELEASEs.Where(lambda).Where(p => p.ReportingYear == yearFrom).GroupBy(p => p.ReportingYear);
            IQueryable <IGrouping <int, POLLUTANTRELEASE> > groupTo   = db.POLLUTANTRELEASEs.Where(lambda).Where(p => p.ReportingYear == yearTo).GroupBy(p => p.ReportingYear);

            // Facility IDs when year is 'yearTo'
            var vTo = db.POLLUTANTRELEASEs.Where(lambda).Where(p => p.ReportingYear == yearTo).Select(p => p.FacilityID).Distinct();
            IQueryable <IGrouping <int, POLLUTANTRELEASE> > groupDataFromBoth = db.POLLUTANTRELEASEs.Where(lambda).Where(p => p.ReportingYear == yearFrom && vTo.Contains(p.FacilityID)).GroupBy(p => p.ReportingYear);

            // Facility IDs when year is 'yearFrom'
            var vFrom = db.POLLUTANTRELEASEs.Where(lambda).Where(p => p.ReportingYear == yearFrom).Select(p => p.FacilityID).Distinct();
            IQueryable <IGrouping <int, POLLUTANTRELEASE> > groupDataToBoth = db.POLLUTANTRELEASEs.Where(lambda).Where(p => p.ReportingYear == yearTo && vFrom.Contains(p.FacilityID)).GroupBy(p => p.ReportingYear);

            // result lists
            IEnumerable <TimeSeriesClasses.TsPollutantCompare> dataFrom = null, dataTo = null;
            IEnumerable <TimeSeriesClasses.TsPollutantCompare> dataFromBoth = null, dataToBoth = null;

            switch (medium)
            {
            case MediumFilter.Medium.Air:
                dataFrom     = groupFrom.Select(x => new TimeSeriesClasses.TsPollutantCompare(x.Count(), x.Sum(p => p.QuantityAir), x.Sum(p => p.QuantityAccidentalAir)));
                dataTo       = groupTo.Select(x => new TimeSeriesClasses.TsPollutantCompare(x.Count(), x.Sum(p => p.QuantityAir), x.Sum(p => p.QuantityAccidentalAir)));
                dataFromBoth = groupDataFromBoth.Select(x => new TimeSeriesClasses.TsPollutantCompare(x.Count(), x.Sum(p => p.QuantityAir), x.Sum(p => p.QuantityAccidentalAir)));
                dataToBoth   = groupDataToBoth.Select(x => new TimeSeriesClasses.TsPollutantCompare(x.Count(), x.Sum(p => p.QuantityAir), x.Sum(p => p.QuantityAccidentalAir)));
                break;

            case MediumFilter.Medium.Water:
                dataFrom     = groupFrom.Select(x => new TimeSeriesClasses.TsPollutantCompare(x.Count(), x.Sum(p => p.QuantityWater), x.Sum(p => p.QuantityAccidentalWater)));
                dataTo       = groupTo.Select(x => new TimeSeriesClasses.TsPollutantCompare(x.Count(), x.Sum(p => p.QuantityWater), x.Sum(p => p.QuantityAccidentalWater)));
                dataFromBoth = groupDataFromBoth.Select(x => new TimeSeriesClasses.TsPollutantCompare(x.Count(), x.Sum(p => p.QuantityWater), x.Sum(p => p.QuantityAccidentalWater)));
                dataToBoth   = groupDataToBoth.Select(x => new TimeSeriesClasses.TsPollutantCompare(x.Count(), x.Sum(p => p.QuantityWater), x.Sum(p => p.QuantityAccidentalWater)));
                break;

            case MediumFilter.Medium.Soil:
                dataFrom     = groupFrom.Select(x => new TimeSeriesClasses.TsPollutantCompare(x.Count(), x.Sum(p => p.QuantitySoil), x.Sum(p => p.QuantityAccidentalSoil)));
                dataTo       = groupTo.Select(x => new TimeSeriesClasses.TsPollutantCompare(x.Count(), x.Sum(p => p.QuantitySoil), x.Sum(p => p.QuantityAccidentalSoil)));
                dataFromBoth = groupDataFromBoth.Select(x => new TimeSeriesClasses.TsPollutantCompare(x.Count(), x.Sum(p => p.QuantitySoil), x.Sum(p => p.QuantityAccidentalSoil)));
                dataToBoth   = groupDataToBoth.Select(x => new TimeSeriesClasses.TsPollutantCompare(x.Count(), x.Sum(p => p.QuantitySoil), x.Sum(p => p.QuantityAccidentalSoil)));
                break;

            default: return(null);
            }
            TimeSeriesClasses.ComparisonPollutant result = new TimeSeriesClasses.ComparisonPollutant(yearFrom, yearTo);

            var res = dataFrom.SingleOrDefault();

            if (res != null)
            {
                result.SetFrom(res.Count, res.Quantity, res.Accidental);
            }
            res = dataTo.SingleOrDefault();
            if (res != null)
            {
                result.SetTo(res.Count, res.Quantity, res.Accidental);
            }
            res = dataFromBoth.SingleOrDefault();
            if (res != null)
            {
                result.SetBothFrom(res.Count, res.Quantity, res.Accidental);
            }
            res = dataToBoth.SingleOrDefault();
            if (res != null)
            {
                result.SetBothTo(res.Count, res.Quantity, res.Accidental);
            }
            return(result);
        }
    /// <summary>
    /// update flash map
    /// </summary>

    /*   private void updateFlashMap(PollutantReleasesTimeSeriesFilter filter)
     * {
     *     MapFilter mapfilter = QueryLayer.PollutantReleaseTrend.GetMapFilter(filter);
     *     string header = MapPrintDetails.Build(SheetHeaderBuilder.GetTimeSeriesPollutantReleaseHeader(filter));
     *     MapUtils.UpdateSmallMap(MasterSearchPage.MAPID, this, this.ClientID, mapfilter, header, Request.ApplicationPath);
     *     ((MasterSearchPage)this.Master).UpdateExpandedScript(mapfilter, header);
     * }*/

    private void updateJavaScriptMap(PollutantReleasesTimeSeriesFilter filter)
    {
        MapFilter mapfilter = QueryLayer.PollutantReleaseTrend.GetMapJavascriptFilter(filter);

        MapJavaScriptUtils.UpdateJavaScriptMap(mapfilter, Page);
    }
Esempio n. 21
0
        private static Expression <Func <POLLUTANTRELEASE, bool> > getLambdaExpression(PollutantReleasesTimeSeriesFilter filter)
        {
            ParameterExpression param = Expression.Parameter(typeof(POLLUTANTRELEASE), "p");
            Expression          exp   = LinqExpressionBuilder.GetLinqExpressionPollutantReleases(filter, param);
            Expression <Func <POLLUTANTRELEASE, bool> > lambda = Expression.Lambda <Func <POLLUTANTRELEASE, bool> >(exp, param);

            return(lambda);
        }
    /// <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);
        }
    }
Esempio n. 23
0
        private static Expression <Func <POLLUTANTRELEASE, bool> > getLambdaExpression(PollutantReleasesTimeSeriesFilter filter, MediumFilter.Medium medium)
        {
            // apply filter
            ParameterExpression param = Expression.Parameter(typeof(POLLUTANTRELEASE), "p");
            Expression          exp   = LinqExpressionBuilder.GetLinqExpressionPollutantReleases(filter, param);

            //apply medium condition
            Expression expMedium = LinqExpressionBuilder.GetLinqExpressionMediumRelease(medium, param);

            exp = LinqExpressionBuilder.CombineAnd(exp, expMedium);

            Expression <Func <POLLUTANTRELEASE, bool> > lambda = Expression.Lambda <Func <POLLUTANTRELEASE, bool> >(exp, param);

            return(lambda);
        }
Esempio n. 24
0
    /// <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));
    }
Esempio n. 25
0
 /// <summary>
 /// populate. Selected year in compare dropdown will be the last report year
 /// </summary>
 public void Populate(PollutantReleasesTimeSeriesFilter filter)
 {
     Populate(filter, null);
 }