function Circular_Diagram($ImageHandle, $arr, $background_color, $diameter, $centerX, $centerY, $antialiase = true) { if ($antialiase) { $ImageHandle_Saved = $ImageHandle; $diameter_saved = $diameter; $diameter = $diameter * 5; $centerX = $centerX * 5; $centerY = $centerY * 5; $ImageHandle = CreateImageHandle($diameter, $diameter, "FFFFFF", true); //Заливаем фон imagefill($ImageHandle, 0, 0, imagecolorallocate($ImageHandle, 255, 255, 255)); } $arr2 = array(); $diameterX = $diameter; $diameterY = intval($diameter * 0.6); if (count($arr) > 0) { $sum = 0; foreach ($arr as $sector) { $sum += $sector["COUNTER"]; } $degree1 = 0; $p = 0.0; $i = 0; foreach ($arr as $sector) { $p += $sector["COUNTER"] / $sum * 360.0; ++$i; if ($i == count($arr)) { $degree2 = 360; } else { $degree2 = intval($p); } if ($degree2 > $degree1) { $dec = ReColor($sector["COLOR"]); $arr2[] = array("DEGREE_1" => $degree1, "DEGREE_2" => $degree2, "COLOR" => $sector["COLOR"], "IMAGE_COLOR" => ImageColorAllocate($ImageHandle, $dec[0], $dec[1], $dec[2]), "IMAGE_DARK" => ImageColorAllocate($ImageHandle, $dec[0] / 1.5, $dec[1] / 1.5, $dec[2] / 1.5)); $degree1 = $degree2; } } if (count($arr2) > 0) { $h = 15; if ($antialiase) { $h = $h * 5; } for ($i = 0; $i <= $h; $i++) { foreach ($arr2 as $sector) { $degree1 = $sector["DEGREE_1"]; $degree2 = $sector["DEGREE_2"]; $difference = $degree2 - $degree1; $degree1 -= 180; $degree1 = $degree1 < 0 ? 360 + $degree1 : $degree1; $degree2 -= 180; $degree2 = $degree2 < 0 ? 360 + $degree2 : $degree2; $color = $i == $h ? $sector["IMAGE_COLOR"] : $sector["IMAGE_DARK"]; if ($difference == 360) { imageellipse($ImageHandle, $centerX, $centerY - $i, $diameterX, $diameterY, $color); } else { imagearc($ImageHandle, $centerX, $centerY - $i, $diameterX, $diameterY, $degree1, $degree2, $color); } } } $i--; foreach ($arr2 as $sector) { $degree1 = $sector["DEGREE_1"]; $degree2 = $sector["DEGREE_2"]; $difference = $degree2 - $degree1; $degree1 -= 180; $degree1 = $degree1 < 0 ? 360 + $degree1 : $degree1; $degree2 -= 180; $degree2 = $degree2 < 0 ? 360 + $degree2 : $degree2; $color = $i == $h ? $sector["IMAGE_COLOR"] : $sector["IMAGE_DARK"]; if ($difference == 360) { imagefilledellipse($ImageHandle, $centerX, $centerY - $i, $diameterX, $diameterY, $color); } else { imagefilledarc($ImageHandle, $centerX, $centerY - $i, $diameterX, $diameterY, $degree1, $degree2, $color, IMG_ARC_PIE); } } } } else { $dec = ReColor($background_color); $color = ImageColorAllocate($ImageHandle, $dec[0], $dec[1], $dec[2]); imagefilledellipse($ImageHandle, $centerX, $centerY, $diameterX, $diameterY, $color); } if ($antialiase) { /** @noinspection PhpUndefinedVariableInspection */ imagecopyresampled($ImageHandle_Saved, $ImageHandle, 0, 0, 0, 0, $diameter_saved, $diameter_saved, $diameter, $diameter); } }
$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); } include $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/statistic/colors.php"; require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/img.php"; $width = intval($_GET["width"]); $max_width = COption::GetOptionInt("statistic", "GRAPH_WEIGHT"); if ($width <= 0 || $width > $max_width) { $width = $max_width; } $height = intval($_GET["height"]); $max_height = COption::GetOptionInt("statistic", "GRAPH_HEIGHT"); if ($height <= 0 || $height > $max_height) { $height = $max_height; } // create image $ImageHandle = CreateImageHandle($width, $height); $arrX = array(); // data points X $arrY = array(); // data points Y $arrayX = array(); // axis X $arrayY = array(); // axis Y /****************************************************** Get data *******************************************************/ $str = is_array($find_country_id) ? implode(" | ", $find_country_id) : ""; $arF = array("COUNTRY_ID" => $str, "DATE1" => $find_date1, "DATE2" => $find_date2); $arrDays = CCountry::GetGraphArray($arF, $arrLegend); reset($arrDays);
$arrMess["2_m"] = 0; $arrMess["3_m"] = 0; $arrMess["4_m"] = 0; $arrMess["5_m"] = 0; $arrMess["6_m"] = 0; $arrMess["7_m"] = 0; $arrMess["8_m"] = 0; $arrMess["9_m"] = 0; $arrMess["10_m"] = 0; while ($arTicket = $rsTickets->Fetch()) { if (strlen($arTicket["DATE_CLOSE"]) > 0) { $MC = $arTicket["MESSAGES"]; if ($MC <= 2) { $arrMess["2_m"] += 1; } elseif ($MC >= 10) { $arrMess["10_m"] += 1; } else { $arrMess[$MC . "_m"] += 1; } } } $arr = array(); while (list($key, $value) = each($arrMess)) { $arr[] = array("COLOR" => $arrColor[$key], "COUNTER" => $arrMess[$key]); } // создаем изображение $ImageHendle = CreateImageHandle($diameter, $diameter); // рисуем круговую диаграмму Circular_Diagram($ImageHendle, $arr, "FFFFFF", $diameter, $diameter / 2, $diameter / 2); // отображаем ShowImageHeader($ImageHendle);
$arFind["find_allow_delivery_" . $k1] = ${"find_allow_delivery_" . $k1}; } if (${"find_canceled_" . $k1} == "Y") { $arFind["find_canceled_" . $k1] = ${"find_canceled_" . $k1}; } foreach ($arStatus as $k2 => $v2) { if (${"find_status_" . $k2} == "Y") { $arFind["find_status_" . $k2] = ${"find_status_" . $k2}; } if (${"find_status_" . $k2 . "_" . $k1} == "Y") { $arFind["find_status_" . $k2 . "_" . $k1] = ${"find_status_" . $k2 . "_" . $k1}; } } } // create image canvas $ImageHandle = CreateImageHandle($width, $height, "FFFFFF", true); $colorFFFFFF = ImageColorAllocate($ImageHandle, 255, 255, 255); ImageFill($ImageHandle, 0, 0, $colorFFFFFF); $arrayX = array(); $arrayY = array(); $arFilter = array(); /****************************************************** Plot data *******************************************************/ if (strlen($filter_date_from) > 0) { $arFilter["DATE_FROM"] = Trim($filter_date_from); } if (strlen($filter_date_to) > 0) { if ($arDate = ParseDateTime($filter_date_to, CSite::GetDateFormat("FULL", SITE_ID))) { if (StrLen($filter_date_to) < 11) { $arDate["HH"] = 23;
<?php require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/tools.php"; include $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/advertising/colors.php"; require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/img.php"; if (function_exists("FormDecode")) { FormDecode(); } UnQuoteAll(); // создаем изображение $ImageHendle = CreateImageHandle(45, 2); $dec = ReColor($color); $color = ImageColorAllocate($ImageHendle, $dec[0], $dec[1], $dec[2]); if ($dash == "Y") { $style = array($color, $color, IMG_COLOR_TRANSPARENT, IMG_COLOR_TRANSPARENT, IMG_COLOR_TRANSPARENT); //$white = ImageColorAllocate($ImageHendle,255,255,255); //$style = array ($color,$color,$white,$white,$white); ImageSetStyle($ImageHendle, $style); ImageLine($ImageHendle, 3, 0, 40, 0, IMG_COLOR_STYLED); ImageLine($ImageHendle, 1, 1, 40, 1, IMG_COLOR_STYLED); } else { ImageLine($ImageHendle, 3, 0, 40, 0, $color); ImageLine($ImageHendle, 3, 1, 40, 1, $color); } /****************************************************** ќтображаем изображение *******************************************************/ ShowImageHeader($ImageHendle);
} } else { $errorCode = 46; } } else { $errorCode = 45; } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="paint pie diagram"> if ($errorCode === 0) { $diameter = min($width, $height); $imageHandle = $ImageHandle = CreateImageHandle($diameter, $diameter); Circular_Diagram($imageHandle, $arData, $backgroundColor, $diameter, round($diameter / 2), round($diameter / 2)); $h = $diameter * 0.6; $dh = 15; $imageHandleTemp = CreateImageHandle($diameter, $h + $dh); imagecopy($imageHandleTemp, $imageHandle, 0, 0, 0, ($diameter - $h) / 2 - $dh, $diameter, $h + $dh); imagedestroy($imageHandle); $imageHandle = $imageHandleTemp; } // </editor-fold> } else { $errorCode = 44; } // At least one value is required } else { $errorCode = 41; } } } if ($errorCode === 0) {
# Copyright (c) 2004 Bitrix # # http://www.bitrix.ru # # mailto:admin@bitrix.ru # ############################################## */ define("STOP_STATISTICS", true); require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_before.php"; $STAT_RIGHT = $APPLICATION->GetGroupRight("statistic"); if ($STAT_RIGHT == "D") { $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); } include $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/statistic/colors.php"; require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/img.php"; $diameter = COption::GetOptionString("statistic", "DIAGRAM_DIAMETER"); // create image $ImageHandle = CreateImageHandle($diameter, $diameter, "FFFFFF", true); // get plot data $arr = array(); $arFilter = array("ID" => implode(" | ", $find_events), "DATE1_PERIOD" => $find_date1, "DATE2_PERIOD" => $find_date2); if (strlen($find_date1) > 0 || strlen($find_date2) > 0) { $period = "Y"; } $by = $period == "Y" ? "s_period_counter" : "s_total_counter"; $w = CStatEventType::GetList($by, $order = "desc", $arFilter, $is_filtered); while ($wr = $w->Fetch()) { $total++; $count = $period == "Y" ? $wr["PERIOD_COUNTER"] : $wr["TOTAL_COUNTER"]; if ($count > 0) { $arr[] = array("COUNTER" => $count); } }