Exemplo n.º 1
0
    /**
     * Display prevalence rates chart
     *
     * @return Response
     */
    public static function getPrevalenceRatesChart($testTypeID = 0)
    {
        $from = Input::get('start');
        $to = Input::get('end');
        $months = json_decode(self::getMonths($from, $to));
        $testTypes = new Illuminate\Database\Eloquent\Collection();
        if ($testTypeID == 0) {
            $testTypes = TestType::supportPrevalenceCounts();
        } else {
            $testTypes->add(TestType::find($testTypeID));
        }
        $options = '{
		    "chart": {
		        "type": "spline"
		    },
		    "title": {
		        "text":"' . trans('messages.prevalence-rates') . '"
		    },
		    "subtitle": {
		        "text":';
        if ($from == $to) {
            $options .= '"' . trans('messages.for-the-year') . ' ' . date('Y') . '"';
        } else {
            $options .= '"' . trans('messages.from') . ' ' . $from . ' ' . trans('messages.to') . ' ' . $to . '"';
        }
        $options .= '},
		    "credits": {
		        "enabled": false
		    },
		    "navigation": {
		        "buttonOptions": {
		            "align": "right"
		        }
		    },
		    "series": [';
        $counts = count($testTypes);
        foreach ($testTypes as $testType) {
            $options .= '{
		        			"name": "' . $testType->name . '","data": [';
            $counter = count($months);
            foreach ($months as $month) {
                $data = $testType->getPrevalenceCount($month->annum, $month->months);
                if ($data->isEmpty()) {
                    $options .= '0.00';
                    if ($counter == 1) {
                        $options .= '';
                    } else {
                        $options .= ',';
                    }
                } else {
                    foreach ($data as $datum) {
                        $options .= $datum->rate;
                        if ($counter == 1) {
                            $options .= '';
                        } else {
                            $options .= ',';
                        }
                    }
                }
                $counter--;
            }
            $options .= ']';
            if ($counts == 1) {
                $options .= '}';
            } else {
                $options .= '},';
            }
            $counts--;
        }
        $options .= '],
		    "xAxis": {
		        "categories": [';
        $count = count($months);
        foreach ($months as $month) {
            $options .= '"' . $month->label . " " . $month->annum;
            if ($count == 1) {
                $options .= '" ';
            } else {
                $options .= '" ,';
            }
            $count--;
        }
        $options .= ']
		    },
		    "yAxis": {
		        "title": {
		            "text": "' . trans('messages.prevalence-rates-label') . '"
		        },
	            "min": "0",
	            "max": "100"
		    }
		}';
        return $options;
    }