<?
include_once(_DIR_EXT.'/HTML/c_page_XML_AJAX.php');



class c_page_ajax extends c_page_XML_AJAX{


    // ************************************************************************************************************************************************************************
    //
    // Поставить пользователя на контроль
    //
    // ************************************************************************************************************************************************************************

    function newControl(){
        $setting = array('sel'=>$_POST);
        //print_r($setting);


        //$view_personals = execSQL('select * from analytic_table WHERE _work_id='.$setting['sel']['value'].'');
        $this->add_element('show_modal_window','HTML',array('title'=>'Контроль сотрудника','width'=>'fit-content'));


        // $bt = '<button class="control-bt v2" cmd="post_shift_poll/newControl" _average_by_name="'.$value['sr_fio'].'" value="'.$value['fio'].'" usid="'.$value['pkey'].'" _work_id="'.$setting['sel']['work_id'].'">Контроль</button>';

        // [period] => 0
        // [sel_in] => 2
        // [sc_inter] => 3.97
        // [_org_id] => 15057
        // [pos] => 21072
        // [work_id] => 1540


        // // period="'.$setting['sel']['period'].'" sel_in="'.$setting['sel']['sel_in'].'" sc_inter="'.$setting['sel']['sc_inter'].'" _org_id="'.$setting['sel']['_org_id'].'" pos="'.$setting['sel']['pos'].'" work_id="'.$setting['sel']['work_id'].'"
        ?>
        <form>
            <div class="in_card_title">ФИО: <?=$setting['sel']['value']?></div><br>
            <div class="in_card_title">Дата постановки на контроль: <?=date("d.m.y")?></div><br>

            <div class="in_card_title" style="display: none" >Причина:</div>
            <input style="display: none" class="sel_in" name="str1" value="1">
            <div class="in_card_title">Задача:</div>
            <input class="sel_in" name="str2" value="">
            <br>

            <style>
                .bt_s_3{
                    margin: 0px !important;
                }
            </style>

            <button class="bt_s_3 icon_sort card_t_1_bt v2" style="width: 100%;border: 0px;" cmd="post_shift_poll/get_stats_2" _average_by_name="<?=$setting['sel']['_average_by_name']?>" editId="<?=$setting['sel']['usid']?>" value="<?=$setting['sel']['work_id']?>"        period="<?=$setting['sel']['period']?>" sel_in="<?=$setting['sel']['sel_in']?>" sc_inter="<?=$setting['sel']['sc_inter']?>" _org_id="<?=$setting['sel']['_org_id']?>" pos="<?=$setting['sel']['pos']?>" work_id="<?=$setting['sel']['work_id']?>">Создать запись</button>
        </form>

        <?php
    }



    // ************************************************************************************************************************************************************************
    //
    // Удалить пользователя с контроля
    //
    // ************************************************************************************************************************************************************************

    function delUserControl(){

        $setting = array('sel'=>$_POST);
        print_r($setting);
        POST_SHIFT_POLL()->analytic_table_control_delete($setting['sel']['usid']) ;

        $this->add_element('show_notife','Сотрудник: '.$setting['sel']['name'].' успешно снят с контроля',array('color'=>'green'));
    }




    // ************************************************************************************************************************************************************************
    //
    // КАРТОЧКА ПОДРАЗДЕЛЕНИЙ
    //
    // ************************************************************************************************************************************************************************

    function modalListPOs(){

        $d_in = array(
            1 => array(1=>'1', 2=>'2', 3=>'3', 4=>'4', 5=>'5', 6=>'6', 7=>'7', 8=>'8', 9=>'9'), // day
            2 => array(1=>'7', 2=>'14', 3=>'21', 4=>'28', 5=>'35', 6=>'42', 7=>'49', 8=>'56', 9=>'63'), // week
            3 => array(1=>'30', 2=>'60', 3=>'90', 4=>'120', 5=>'150', 6=>'180', 7=>'210', 8=>'240', 9=>'270'), // month
            4 => array(1=>'1', 2=>'2', 3=>'4', 4=>'8', 5=>'16', 6=>'32', 7=>'62', 8=>'128', 9=>'256'), // progressive

        );

        $setting = array('sel'=>$_POST);

        $org_id = $setting['sel']['org_id'];
        $per = $setting['sel']['period'];
        $in = $setting['sel']['sel_in'];

        $p_url = $setting['sel']['p_url'];

        $_work_names = execSQL('select parent, _otdel_name, _org_id from view_personals WHERE _org_id="'.$org_id.'" group by parent'); // Подразделения





        // Функция выборки данных

        function getData($day){
            $date = getdate(mktime(0, 0, 0, date('m'), date('d') - $day, date('Y')));
            return $date[0];
        } // Получение даты в строковом зачении при вычитании несколких ней

        function getArrayBall($startDay, $endDay, $_org_id){
            $day = getData($startDay);

            if ($endDay){
                $endDay = getData($endDay);

                // t1.dep_id
                // данные для среднего балла  sm / cnt
                $res = execSQL('select 
                                            t2._otdel_id,
                                            sum(t1.answer_ball) as sm,
                                            count(t2.pkey) as usr,
                                            count(t1.answer_ball) as cnt,
                                            t2._org_id
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey

                                        WHERE 
                                            t1.c_data >= '.$day.' AND t1.c_data <= '.$endDay.' 
                                        AND t2._org_id='.$_org_id.' AND t2.clss=211 AND t2.enabled=1 AND t1.answer_ball > 0 
                                        
                                        group by t2._otdel_id
                            ');

            }else{
                $res = execSQL('select 
                                            t2._otdel_id,
                                            sum(t1.answer_ball) as sm,
                                            count(t2.pkey) as usr,
                                            count(t1.answer_ball) as cnt,
                                            t2._org_id
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey

                                        WHERE 
                                            t1.c_data >= '.$day.'
                                        AND t2._org_id='.$_org_id.' AND t2.clss=211 AND t2.enabled=1 AND t1.answer_ball > 0 
                                        
                                        group by t2._otdel_id
                            ');
            }
            return $res;
        } // Получаем из бд выборку









        // fix bag// fix bag// fix bag// fix bag// fix bag// fix bag// fix bag// fix bag// fix bag// fix bag// fix bag// fix bag// fix bag// fix bag// fix bag// fix bag// fix bag//

        function forSrBallPodr($startDay, $endDay, $_org_id, $otdel_id){
            if (!$otdel_id) $otdel_id=0 ;

            $day = getData($startDay);
            if ($endDay){

                $endDay = getData($endDay);
                $res = execSQL('select 
                                            t1.answer_ball, 
                                            sum(t1.answer_ball) as sm,
                                            count(t1.answer_ball) as cnt,
                                            t2._org_id
                                            
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey

                                        WHERE 
                                            t1.c_data >= '.$day.' AND t1.c_data <= '.$endDay.' 
                                        AND t2._org_id='.$_org_id.' AND t2.clss=211 AND t2.enabled=1 AND t2._otdel_id='.$otdel_id.' AND t1.answer_ball > 0 
                                        
                                        group by t1.answer_ball
                            ');

                // Получаем колличество сотрудников без дубликатов за период !!!!
                $countUSR = execSQL('select t1.personal_id, count(t1.personal_id) as cnt, t2._org_id
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey
                                        WHERE t1.c_data >= '.$day.' AND t2._org_id='.$_org_id.' AND t2.clss=211 AND t2.enabled=1  AND t1.c_data <= '.$endDay.' AND t2._otdel_id='.$otdel_id.' AND t1.answer_ball > 0 
                                        group by t1.personal_id');
            }else{
                $res = execSQL('select 
                                            t1.answer_ball, 
                                            sum(t1.answer_ball) as sm,
                                            count(t1.answer_ball) as cnt,
                                            t2._org_id
                                            
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey

                                        WHERE 
                                            t1.c_data >= '.$day.'
                                        AND t2._org_id='.$_org_id.' AND t2.clss=211 AND t2.enabled=1 AND t2._otdel_id='.$otdel_id.' AND t1.answer_ball > 0 
                                        
                                        group by t1.answer_ball
                            ');

                $countUSR = execSQL('select t1.personal_id, count(t1.personal_id) as cnt, t2._org_id
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey
                                        WHERE t1.c_data >= '.$day.' AND t2._org_id='.$_org_id.' AND t2.clss=211 AND t2.enabled=1 AND t2._otdel_id='.$otdel_id.' AND t1.answer_ball > 0
                                        group by t1.personal_id');

            }
            $ar = array_values($res);

            $countUSR = count($countUSR);


            $sm = 0;
            $cnt = 0;
            if (sizeof($ar)) foreach ($ar as $key => $value){
                $cnt = $cnt + $value['cnt'];
                $sm = $sm + $value['sm'];
            }

            if($sm or $cnt){
                $itog = $sm / $cnt;;
            }else{
                $itog = 0;
            }


            $return = [
                    round($itog, 2),
                    $countUSR
                ];
            return $return;

        }

        // fix bag// fix bag// fix bag// fix bag// fix bag// fix bag// fix bag// fix bag// fix bag// fix bag// fix bag// fix bag// fix bag// fix bag// fix bag// fix bag// fix bag//







        // Определяем из какого времени брать данные

        function getUSR_Data($startDay, $endDay, $_org_id){

            $day = getData($startDay);

            if ($endDay) {
                $endDay = getData($endDay);

                $c_USR = execSQL('select 
                                            t1.personal_id,
                                            count(t2.pkey) as usr,
                                            count(t1.answer_ball) as cnt,
                                            t1.dep_id
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey
                                        WHERE 
                                            t1.c_data >= ' . $day . ' AND t1.c_data <= ' . $endDay . ' 
                                        AND t2._org_id=' . $_org_id . ' AND t2.clss=211 AND t2.enabled=1 AND t1.answer_ball > 0 
                                        group by t1.personal_id
                            ');
            }else{
                $c_USR = execSQL('select 
                                            t1.personal_id,
                                            count(t2.pkey) as usr,
                                            count(t1.answer_ball) as cnt,
                                            t1.dep_id
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey
                                        WHERE 
                                            t1.c_data >= ' . $day . '
                                        AND t2._org_id=' . $_org_id . ' AND t2.clss=211 AND t2.enabled=1 AND t1.answer_ball > 0 
                                        group by t1.personal_id
                            ');
            }

            return $c_USR;
        }

        function infoInPos($usrArr, $otdel_id){
            $cnt = 0;
            if (sizeof($usrArr)) foreach ($usrArr as $key => $value){
                if($value['dep_id'] == $otdel_id){
                    $cnt++;
                }
            }
            return $cnt;
            //  [12588] => Array ( [personal_id] => 12588 [usr] => 1 [cnt] => 1 [dep_id] => 23601 )
        }

        switch ($per) {
            case 0:
                $startDay = $d_in[$in][1];
                $endDay = '';
                $startDay_SC = $d_in[$in][3];

                $date = getArrayBall($startDay,'', $org_id);
                $usrArr = getUSR_Data($startDay,'', $org_id);

                $filterTimeName =$startDay .' Дней';
                break;
            case 1:
                $startDay = $d_in[$in][2];
                $endDay = $d_in[$in][1];
                $startDay_SC = $d_in[$in][4];

                $date = getArrayBall($startDay, $endDay, $org_id);
                $usrArr = getUSR_Data($startDay, $endDay, $org_id);

                $filterTimeName = $endDay.'-'.$startDay.' Дней';
                break;
            case 2:
                $startDay = $d_in[$in][3];
                $endDay = $d_in[$in][2];
                $startDay_SC = $d_in[$in][5];

                $date = getArrayBall($startDay, $endDay, $org_id);
                $usrArr = getUSR_Data($startDay, $endDay, $org_id);

                $filterTimeName = $endDay.'-'.$startDay.' Дней';
                break;
            case 3:
                $startDay = $d_in[$in][4];
                $endDay = $d_in[$in][3];
                $startDay_SC = $d_in[$in][6];

                $date = getArrayBall($startDay, $endDay, $org_id);
                $usrArr = getUSR_Data($startDay, $endDay, $org_id);

                $filterTimeName = $endDay.'-'.$startDay.' Дней';
                break;
            case 4:
                $startDay = $d_in[$in][5];
                $endDay = $d_in[$in][4];
                $startDay_SC = $d_in[$in][7];

                $date = getArrayBall($startDay, $endDay, $org_id);
                $usrArr = getUSR_Data($startDay, $endDay, $org_id);

                $filterTimeName = $endDay.'-'.$startDay.' Дней';
                break;
            case 5:
                $startDay = $d_in[$in][6];
                $endDay = $d_in[$in][5];
                $startDay_SC = $d_in[$in][8];

                $date = getArrayBall($startDay, $endDay, $org_id);
                $usrArr = getUSR_Data($startDay, $endDay, $org_id);

                $filterTimeName = $endDay.'-'.$startDay.' Дней';
                break;
        }

        function summarBall($date){
            $cnt = 0;
            $sum = 0;
            if (sizeof($date)) foreach ($date as $key => $value){
                $cnt = $cnt + $value['cnt'];
                $sum = $sum + $value['sm'];
            }
            return round($sum / $cnt,2);
        }

        function sumUSR($date){
            $cnt = 0;
            if (sizeof($date)) foreach ($date as $key => $value){
                $cnt = $cnt + $value['usr'];
            }
            return $cnt;
        }

        $sumBall = summarBall($date);
        $countUSR = sumUSR($date);




        // Сколько процентов занимает каждая оценка
        function nPercent($arr,$ball){

            $count = 0;
            if (sizeof($arr)) foreach ($arr as $key => $value) $count = $count + $value['cnt'];
            if($arr[$ball]['cnt'] and $count){
                $str = round($arr[$ball]['cnt'] / ($count / 100), 2).'';
            }else {
                $str = 0;
            }
            return $str;

        }


        // Балл веса проблеммы
        function weightScore($_org_id, $otdel_id, $startDay, $endDay, $countUsr){
          if (!$otdel_id) $otdel_id=0 ;
            $day = getData($startDay);
            if ($endDay){
                $endDay = getData($endDay);


                $res = execSQL('select 
                                            t1.answer_ball, 
                                            sum(t1.answer_ball) as sm,
                                            count(t1.answer_ball) as cnt,
                                            t2._org_id
                                            
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey

                                        WHERE 
                                            t1.c_data >= '.$day.' AND t1.c_data <= '.$endDay.'  
                                        AND t2._org_id='.$_org_id.' AND t2.clss=211 AND t2.enabled=1 AND t2._otdel_id='.$otdel_id.' AND t1.answer_ball > 0 
                                        
                                        group by t1.answer_ball
                            ');


            }else{

                $res = execSQL('select 
                                            t1.answer_ball, 
                                            sum(t1.answer_ball) as sm,
                                            count(t1.answer_ball) as cnt,
                                            t2._org_id
                                            
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey

                                        WHERE 
                                            t1.c_data >= '.$day.'
                                        AND t2._org_id='.$_org_id.' AND t2.clss=211 AND t2.enabled=1 AND t2._otdel_id='.$otdel_id.' AND t1.answer_ball > 0 
                                        
                                        group by t1.answer_ball
                            ');
            }
            $arrBallPRC = [
                1 => nPercent($res,'1') * 300 * $countUsr,
                2 => nPercent($res,'2') * 150 * $countUsr,
                3 => nPercent($res,'3') * 20 * $countUsr,
                4 => nPercent($res,'4') * 1 * $countUsr,
                //5 => nPercent($res,'5') * 1
            ];
            $cnt = 0;
            if (sizeof($arrBallPRC)) foreach ($arrBallPRC as $key => $value){
                $cnt = $cnt + $value;
            }
            return $cnt;
        }



        // создаём массив для сортировки - Таблица для заполнения данными

        $prov_sm = 0;
        $prov_cnt = 0;

        $dataGraphik = [];

        $weightScore_sum = 0;

        $dataTable = [];
        if (sizeof($date)) foreach ($date as $key => $value){
            if($_work_names[$key]){
                $name = $_work_names[$key]['_otdel_name'];
            }else{
                $name = '<b style="color: red">Название отсутствует</b>';
            }
            $percBt = round((($value['sm'] / $value['cnt']) / $sumBall - 1) * 100, 2);

            $prov_sm = $prov_sm + $value['sm'];
            $prov_cnt = $prov_cnt + $value['cnt'];

            $srBandCount_usr = forSrBallPodr($startDay, $endDay, $org_id, $key); // Средний балл подразделения
            //print_r($srBandCount_usr);

            $weightScore = weightScore($org_id, $key, $startDay, $endDay, $srBandCount_usr[1]);

            $td = [
                $name, // Имя подразделения
                $key, // ID подразделения
                $value['usr'], // кол-во смен за период в подразделении
                $srBandCount_usr[1], // Колличество сотрудников
                $srBandCount_usr[0], // Средний балл подразделения
                $weightScore,
                $percBt, // % падения
                $org_id // id организации для проверки
            ];
            array_push($dataTable, $td);

            $weightScore_sum = $weightScore_sum + $weightScore;

            $podrNaGraph = [
                $srBandCount_usr[1],
                $srBandCount_usr[0],
                $name
            ];

            array_push($dataGraphik, $podrNaGraph);

        }


        $time_start = microtime(true);
        $idUncle = str_replace('.', '', $time_start);

?>

            <style>
                .jBox-content{
                    padding-right: 0px !important;
                }
            </style>

            <div style="height: 90vh; max-width:1800px;padding-right: 30px;overflow: auto;">

            <div style="margin-top: 0px;" class="title-dash">Выборка данных по подразделениям: <?=$filterTimeName?></div>
            <div style="margin-top: 15px;font-weight: 600;">В выборке учувствуют только те подразделения которые имеют баллы в выбранном интервале, исключенные подразделения не влияли на средний балл организации за выбранный период</div>

                <div>
                    <div class="card_t_1_a mt-4">
                        <div class="card_t_1">
                            <div class="card_t_1_title" id="button1">Выбрано подразделений</div>
                            <div id="re_date" class="card_t_1_des mb-0">Подразделения имеющие МО и баллы, в выбранном диапазоне</div>
                            <div id="re_date" class="text_max"><?=count($date)?></div>
                        </div>
                    </div>

                    <div class="card_t_1_a mt-4">
                        <div class="card_t_1">
                            <div class="card_t_1_title" id="button1">Сотрудников</div>
                            <div id="re_date" class="card_t_1_des mb-0">Сумма сотрудников находящихся внутри выбранных подразделений</div>
                            <div id="re_date" class="text_max"><?=count($usrArr)?> Сотрудников</div>
                        </div>
                    </div>

                    <div class="card_t_1_a mt-4">
                        <div class="card_t_1">
                            <div class="card_t_1_title" id="button1">Средний балл</div>
                            <div id="re_date" class="card_t_1_des mb-0">Средний балл безопасности в выбранном интервале</div>
                            <div id="re_date" class="text_max"><?=$sumBall?></div>
                        </div>
                    </div>

                    <div class="card_t_1_a mt-4" style="padding-right: 0px;">
                        <div class="card_t_1">
                            <div class="card_t_1_title" id="button1">Сумма оценок</div>
                            <div id="re_date" class="card_t_1_des mb-0">За выбранный промежуток в выбранных подразделениях</div>
                            <div id="re_date" class="text_max"><?=$countUSR?></div>
                        </div>
                    </div>
                </div>



                <script type="text/javascript">
                    google.charts.load('current', {'packages':['scatter']});
                    google.charts.setOnLoadCallback(drawChart);

                    function drawChart () {

                        var data = new google.visualization.DataTable();

                        data.addColumn('number', 'Кол-во сотрудников');
                        <?

                        $d = count($dataGraphik);
                        $r = 0;
                        while($r < $d){
                            echo "data.addColumn('number', '".$dataGraphik[$r][2]."');
                        ";
                            $r++;
                        }

                        ?>

                        data.addRows([

                            <?
                            if (sizeof($dataGraphik)) foreach ($dataGraphik as $key => $PDR) {
                                $r = 0;
                                echo '['.$PDR[0].','; // count users
                                while($r < $d){
                                    if($key === $r){
                                        if($r == ($d - 1)){
                                            echo $PDR[1];
                                        }else{
                                            echo $PDR[1].',';
                                        }
                                    }else{
                                        if($r == ($d - 1)){
                                            echo 'null';
                                        }else{
                                            echo 'null,';
                                        }
                                    }
                                    $r++;
                                }
                                echo '],
                                ';
                            }


                            $arr_c_u = [];
                            if (sizeof($dataGraphik)) foreach ($dataGraphik as $key => $value) {
                                array_push($arr_c_u, $value[0]);
                            }

                            $hgGrap = $d * 35;
                            if($hgGrap < 500){
                                $hgGrap = 500;
                            }
                            ?>
                        ]);

                        var options = {
                            vAxis: {
                                title: 'Средний балл',
                                viewWindow: {
                                    min: 0,
                                    max: 5
                                }
                            },
                            hAxis: {
                                viewWindow: {
                                    min: 0,
                                    max: <?=max($arr_c_u)?>
                                }
                            },


                            chart: {
                                title: 'График падения подразделений',
                                subtitle: 'Чем ближе точка подразделения к 0 тем хуже средний балл оценки безопасности'
                            },
                        };




                        var chart = new google.charts.Scatter(document.getElementById('scatter_top_xs'));

                        chart.draw(data, google.charts.Scatter.convertOptions(options));
                    }
                </script>


                <script>
                    function expandThelist(hg){
                        var id = 'scatter_top_xs';

                        if(document.getElementById('viev')){
                            document.getElementById(id).style.height = hg +'px';
                            document.getElementById('viev').innerHTML = 'Свернуть ▴';
                            document.getElementById('viev').id = 'viev_on';
                        }else{
                            document.getElementById(id).style.height = '500px';
                            document.getElementById('viev_on').innerHTML = 'Развернуть ▾';
                            document.getElementById('viev_on').id = 'viev';
                        }
                    }
                </script>
                <style>
                    #scatter_top_xs > div{
                        height: 100% !important;
                    }

                    #scatter_top_xs > div > div > svg{
                        height: 100% !important;
                    }

                    #viev, #viev_on{
                        padding: 10px;
                        margin-bottom: 20px;
                        background: #f9f9f9;
                        border: 1px solid #f0f0f0;
                        text-align: center;
                        color: #272727;
                        font-weight: 600;
                        width: 150px;
                        border-radius: 8px;
                        float: right;
                        cursor: pointer;
                    }
                </style>

                <div id="scatter_top_xs" style="width: calc(100% - 33px);padding: 15px;border: 1px solid #eee;border-radius: 9px;margin-bottom: 20px;height: 500px;transition: .3s;"></div>

                <?
                if($hgGrap > 500){
                    ?>
                    <div id="viev" onclick="expandThelist('<?=$hgGrap?>')">
                        Развернуть ▾
                    </div>
                    <?
                }
                ?>





                <table id="myTable_3_<?=$idUncle?>" class="tablesorter table_main" cellpadding="0" cellspacing="0" style="border-radius: 9px;overflow: hidden;background: #f9f9f9;width: 100%">
                    <thead>
                    <tr class="title_tab_table tablesorter-headerRow" >
                        <td>№</td>
                        <td>Наименование подразделения</td>
                        <!--<td>id</td>-->
                        <!--<td>id org</td>-->
                        <td>Оценок</td>
                        <td>Сотрудников</td>
                        <td>Средний балл</td>
                        <td>Вес проблемы<div class="help_2" title="Процент важности соотношения падения подразделения к организации">?</div></td>
                        <td>% Ниже среднего<div class="help_2" title="Процент отклонения от среднего значиния организации за выбранный период">?</div></td>
                        <td>Детализация</td>
                    </tr>
                    </thead>
                    <tbody>

                    <style>
                        .lineGr{
                            padding: 5px;
                            font-weight: 800;
                            color:#000 !important;
                        }
                    </style>
                    <?




                    // Функция сравнения
                    function cmp($a, $b) {
                        if ($a[5] == $b[5]) {
                            return 0;
                        }
                        return ($a[5] > $b[5]) ? -1 : 1;
                    }

                    uasort($dataTable, 'cmp');

                    function getGRA_2($value, $color){
                        $g = 100 - $value;
                        $c = 100 - $g;
                        if($value< 0){$value = '<div class="lineGr" style="background: linear-gradient(90deg, #ffba00 '.abs($c).'%, #f9f9f9 '.abs($c).'%);">'.$value.'%</div>';}else{
                            if($color){
                                $value = '<div class="lineGr" style="background: linear-gradient(90deg, '.$color.' '.abs($c).'%, #f9f9f9 '.abs($c).'%);">'.$value.'%</div>';
                            }else{
                                $value = '<div class="lineGr" style="background: linear-gradient(90deg, #44da93 '.abs($c).'%, #f9f9f9 '.abs($c).'%);">'.$value.'%</div>';
                            }
                        }
                        return $value;
                    }

                    $t = 1;
                    if (sizeof($dataTable)) foreach ($dataTable as $key => $value){


                        $org_id = $setting['sel']['org_id'];

                        if($value['5']){
                            $weightScore_PRC = round($value['5'] / ($weightScore_sum / 100), 2);
                        }else{
                            $weightScore_PRC = 0;
                        }

                        ?>
                        <tr>
                            <td title="Номер"><?=$t?></td>
                            <td title="Название"><b><?=$value['0']?></b></td>
                            <!--<td title="id"><?=$value['1']?></td>
                            <td title="org_id"><?=$value['7']?></td>-->
                            <td title="Смен(оценок)"><?=$value['2']?></td>
                            <td title="Сотрудников"><?=$value['3']?></td>
                            <td title="Средний балл"><?=$value['4']?></td>
                            <td title="% Падения"><?=getGRA_2($weightScore_PRC, 'red')?></td>
                            <td title="% Ниже среднего"><?=getGRA_2($value['6'], '')?></td>
                            <td title="Детализация">
                                <!--<a href="<?=$p_url?>?sel_in=<?=$in?>&_org_id=<?=$org_id?>&otdel_id=<?=$value['1']?>" style="color: #4e69a0;text-decoration: auto;font-weight: 600;">Подробнее</a>-->
                                <a class="v2" p_url="<?=_CUR_CAB_DIR?>" cmd="post_shift_poll/breakdown_of_posts" sel_in="<?=$in?>" period="<?=$per?>" org_id="<?=$org_id?>" otdel_id="<?=$value['1']?>" style="color: #4e69a0;text-decoration: auto;font-weight: 600;">Подробнее</a>
                            </td>
                        </tr>
                        <?
                        /* <a class="bt_s_4 v2 ok" p_url="/cab/post_shift_poll/" cmd="post_shift_poll/breakdown_of_posts" sel_in="2" period="0" org_id="15057" otdel_id="15109">Детализация должностей</a> */


                        $t++;
                    }
                    ?>


                    </tbody>
                </table>

                <script>
                    $(function() {
                        $("#myTable_3_<?=$idUncle?>").tablesorter();
                    });

                    $(function() {
                        $("#myTable_3_<?=$idUncle?>").tablesorter({ sortList: [[0,0], [1,0]] });
                    });
                </script>

        </div>


        <?php
        $this->add_element('show_modal_window','HTML',array('title'=>'Отчёт о среднем балле по подразделениям в выбранной организации','width'=>'fit-content'));
        //$this->add_element('show_notife','Сотрудник: 123 успешно снят с контроля',array('color'=>'green'));
    }




    // ************************************************************************************************************************************************************************
    //
    // КАРТОЧКА ТРЕНДА ОЦЕНОК
    //
    // ************************************************************************************************************************************************************************

    function trendGraph(){
        $arrOrg = execSQL('select _org_id , _org_name from view_personals  group by _org_id'); // Организации





        $setting = array('sel'=>$_POST);

        $org_id = $setting['sel']['org_id'];
        $otdel_id = $setting['sel']['otdel_id'];

        if($org_id){
            $_work_names = execSQL('select _otdel_id, _otdel_name from view_personals WHERE _org_id='.$org_id.''); // Подразделения
        }

        ////////////////////////////


        $ORGNAME_2 = $_GET['_pos'];
        $ORGNAME = $arrOrg[$org_id]['_org_name'];


        if($org_id){
            if($otdel_id){

                $lvl = 'подразделение - '.$_work_names[$otdel_id]['_otdel_name'];
            }else{
                $lvl = 'организация - '.$ORGNAME;
            }
        }
        ///////////////////////////////////

        include "lib/style_and_js_for_table.php";
        include "lib/sliding_with_forecast.php";


        function getData($day){
            $date = getdate(mktime(0, 0, 0, date('m'), date('d') - $day, date('Y')));
            return $date[0];
        } // Получение даты в строковом зачении при вычитании несколких ней


        function countBallSum($arr){
            $r = 0;
            $sum = 0;
            while ($r < count($arr)){
                $sum = $sum + $arr[$r]['cnt'];
                $r++;
            }
            return $sum;
        } // Сумма всех баллов в диапазоне дат


        function calc_percent($value, $percent) {
            if($value and $percent){
                $ret = $value / ($percent / 100);
            }else{
                $ret = 0;
            }
            return  $ret;
        }


        function numbers_in_percent($arrnum){
            if(count($arrnum) > 0){
                $sumCount = countBallSum($arrnum);
                $percentArr = array();
                $r = 0;
                while ($r < count($arrnum)){
                    if($arrnum[$r]['cnt']){
                        $c_sum = $arrnum[$r]['cnt'];
                    }else{
                        $c_sum = 0;
                    }
                    $arr_percent = calc_percent($c_sum, $sumCount);
                    array_push($percentArr, round($arr_percent, 2));
                    $r++;
                }

                return $percentArr;

            }
        }


        function trend($data){
            if($data){
                return $data;
            }else{
                return '0';
            }
        }


        function getArrayBall($startDay,$endDay,$_org_id,$otdel_id){

            $day = getData($startDay);
            if ($endDay){
                $endDay = getData($endDay);

                if($otdel_id){
                    $res = execSQL('select t1.answer_ball, count(t2.pkey) as cnt 
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey
                                        WHERE t1.c_data >= '.$day.' AND t1.c_data <= '.$endDay.'  AND t2._org_id='.$_org_id.' AND t2.clss=211 AND t2.enabled=1 AND t2._otdel_id='.$otdel_id.' 
                                        group by t1.answer_ball
                            ');
                }else{
                    $res = execSQL('select t1.answer_ball, count(t2.pkey) as cnt 
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey
                                        WHERE t1.c_data >= '.$day.' AND t1.c_data <= '.$endDay.'  AND t2._org_id='.$_org_id.' AND t2.clss=211 AND t2.enabled=1 
                                        group by t1.answer_ball
                            ');
                }
            }else{
                if($otdel_id){
                    $res = execSQL('select t1.answer_ball, count(t2.pkey) as cnt 
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey
                                        WHERE t1.c_data >= '.$day.' AND t2._org_id='.$_org_id.' AND t2.clss=211 AND t2.enabled=1 AND t2._otdel_id='.$otdel_id.' 
                                        group by t1.answer_ball
                            ');
                }else{
                    $res = execSQL('select t1.answer_ball, count(t2.pkey) as cnt 
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey
                                        WHERE t1.c_data >= '.$day.' AND t2._org_id='.$_org_id.' AND t2.clss=211 AND t2.enabled=1 
                                        group by t1.answer_ball
                            ');
                }
            }





            $countBall = [
                0 => [
                    'cnt' => '',
                    'sm' => '',
                ],
                1 => [
                    'cnt' => '',
                    'sm' => '',
                ],
                2 => [
                    'cnt' => '',
                    'sm' => '',
                ],
                3 => [
                    'cnt' => '',
                    'sm' => '',
                ],
                4 => [
                    'cnt' => '',
                    'sm' => '',
                ],
            ];


            $stepBall = 0;
            $factoryBall = 1;
            $countStep = 5;
            while ($stepBall <= $countStep){
                if (sizeof($res)) foreach ($res as $key => $value){

                   // print_r($value);
                    //echo '<br><br>';

                    if($key == $stepBall){
                        $countBall[$stepBall]['cnt'] = $value['cnt'];
                        $countBall[$stepBall]['sm'] = $value['sm'];
                        //$countBall[$key] = $value['cnt'];
                    }
                }
                $factoryBall++;
                $stepBall++;
            }

            $countBall = array_values($countBall);

            return $countBall;
        } // Получаем из бд выборку





        $day_7 = getArrayBall('7','',$org_id, $otdel_id);
        $day_7Percent = numbers_in_percent($day_7);

        $day_14_7 = getArrayBall('14','7',$org_id, $otdel_id);
        $day_14_7Percent = numbers_in_percent($day_14_7);

        $day_21_14 = getArrayBall('21','14',$org_id, $otdel_id);
        $day_21_14Percent = numbers_in_percent($day_21_14);

        $day_28_21 = getArrayBall('28','21',$org_id, $otdel_id);
        $day_28_21Percent = numbers_in_percent($day_28_21);

        ?>

            <style>
                .jBox-content {
                    padding-right: 0px !important;
                }
            </style>
            <div style="height: 90vh; max-width:1800px;padding-right: 30px;overflow: auto;">

                <div class="scroll-table">
                    <div>
                        <table id="table" class="table_main" cellpadding="0" cellspacing="0" style="width: calc(100% - 4px);">
                            <tbody>
                            <tr class="title_tab_table">
                                <td>Оценка</td>
                                <td>За 28-21 день</td>
                                <td>За 21-21 день</td>
                                <td>За 7-14</td>
                                <td>За 7 дней</td>
                                <td>За 7 дней</td>
                                <td>За 7-14 дней</td>
                                <td>За 14-21 день</td>
                                <td>За 28-21 день</td>
                            </tr>
                            <tr>
                                <td><b>5</b></td>
                                <td><?=$day_28_21Percent[5]?>%</td>
                                <td><?=$day_21_14Percent[5]?>%</td>
                                <td><?=$day_14_7Percent[5]?>%</td>
                                <td><?=$day_7Percent[5]?>%</td>
                                <td><?=$day_7[5]['cnt']?></td>
                                <td><?=$day_14_7[5]['cnt']?></td>
                                <td><?=$day_21_14[5]['cnt']?></td>
                                <td><?=$day_28_21[5]['cnt']?></td>
                            </tr>
                            <tr>
                                <td><b>4</b></td>
                                <td><?=$day_28_21Percent[4]?>%</td>
                                <td><?=$day_21_14Percent[4]?>%</td>
                                <td><?=$day_14_7Percent[4]?>%</td>
                                <td><?=$day_7Percent[4]?>%</td>
                                <td><?=$day_7[4]['cnt']?></td>
                                <td><?=$day_14_7[4]['cnt']?></td>
                                <td><?=$day_21_14[4]['cnt']?></td>
                                <td><?=$day_28_21[4]['cnt']?></td>
                            </tr>
                            <tr>
                                <td><b>3</b></td>
                                <td><?=$day_28_21Percent[3]?>%</td>
                                <td><?=$day_21_14Percent[3]?>%</td>
                                <td><?=$day_14_7Percent[3]?>%</td>
                                <td><?=$day_7Percent[3]?>%</td>
                                <td><?=$day_7[3]['cnt']?></td>
                                <td><?=$day_14_7[3]['cnt']?></td>
                                <td><?=$day_21_14[3]['cnt']?></td>
                                <td><?=$day_28_21[3]['cnt']?></td>
                            </tr>
                            <tr>
                                <td><b>2</b></td>
                                <td><?=$day_28_21Percent[2]?>%</td>
                                <td><?=$day_21_14Percent[2]?>%</td>
                                <td><?=$day_14_7Percent[2]?>%</td>
                                <td><?=$day_7Percent[2]?>%</td>
                                <td><?=$day_7[2]['cnt']?></td>
                                <td><?=$day_14_7[2]['cnt']?></td>
                                <td><?=$day_21_14[2]['cnt']?></td>
                                <td><?=$day_28_21[2]['cnt']?></td>
                            </tr>
                            <tr>
                                <td><b>1</b></td>
                                <td><?=$day_28_21Percent[1]?>%</td>
                                <td><?=$day_21_14Percent[1]?>%</td>
                                <td><?=$day_14_7Percent[1]?>%</td>
                                <td><?=$day_7Percent[1]?>%</td>
                                <td><?=$day_7[1]['cnt']?></td>
                                <td><?=$day_14_7[1]['cnt']?></td>
                                <td><?=$day_21_14[1]['cnt']?></td>
                                <td><?=$day_28_21[1]['cnt']?></td>
                            </tr>

                            <tr>
                                <td><b>Игнор опроса</b></td>
                                <td><?=$day_28_21Percent[0]?>%</td>
                                <td><?=$day_21_14Percent[0]?>%</td>
                                <td><?=$day_14_7Percent[0]?>%</td>
                                <td><?=$day_7Percent[0]?>%</td>
                                <td><?=$day_7[0]['cnt']?></td>
                                <td><?=$day_14_7[0]['cnt']?></td>
                                <td><?=$day_21_14[0]['cnt']?></td>
                                <td><?=$day_28_21[0]['cnt']?></td>
                            </tr>

                            <tr>
                                <td><b>Всего:</b></td>
                                <td></td>
                                <td></td>
                                <td></td>
                                <td></td>
                                <td><b><?=countBallSum($day_7)?></b></td>
                                <td><b><?=countBallSum($day_14_7)?></b></td>
                                <td><b><?=countBallSum($day_21_14)?></b></td>
                                <td><b><?=countBallSum($day_28_21)?></b></td>
                            </tr>
                            </tbody>
                        </table>
                    </div>
                </div>
                <br>

                <?php

                $r = 5;
                while ($r >= 0){

                    $arr = array(trend($day_28_21Percent[$r]),trend($day_21_14Percent[$r]),trend($day_14_7Percent[$r]),trend($day_7Percent[$r]));
                    $step = 2;

                    $trendArr = slidingWithForecast($arr,$step);



                    $null = 0;
                    foreach ($arr as $array_key => $array_item) {
                        if ($arr[$array_key] != 0) {
                            $null++;
                        }
                    }

                    if($null < 2){
                        // Рисуем график без тренда
                        ?>
                    <script type="text/javascript">
                        google.charts.load('current', {'packages':['corechart']});
                        google.charts.setOnLoadCallback(drawVisualization);

                        function drawVisualization() {
                            var data = google.visualization.arrayToDataTable([
                                ['', 'Процент выборки'],
                                ['28-21 день', <?=trend($day_28_21Percent[$r]);?>],
                                ['За 14-21 день', <?=trend($day_21_14Percent[$r]);?>],
                                ['За 7-14 дней', <?=trend($day_14_7Percent[$r]);?>],
                                ['За 7 дней', <?=trend($day_7Percent[$r]);?>],
                                ['', 0]

                            ]);
                            var options = {
                                title : '<? if($r == 0){ echo 'Игнор опроса'; }else{ echo 'Оценка '.$r; }?>',
                                vAxis: {title: 'Процент %'},
                                hAxis: {title: 'Выборки дней'},
                                seriesType: 'bars',
                                series: {1: {type: 'line'}},
                                curveType: 'function',
                            };
                            var chart = new google.visualization.ComboChart(document.getElementById('chart_div_<?=$r?>'));
                            chart.draw(data, options);
                        }
                    </script>
                        <?
                    }else{
                        ?>
                    <script type="text/javascript">
                        google.charts.load('current', {'packages':['corechart']});
                        google.charts.setOnLoadCallback(drawVisualization);

                        function drawVisualization() {
                            var data = google.visualization.arrayToDataTable([
                                ['', 'Процент выборки', 'Тренд'],
                                ['28-21 день', <?=trend($day_28_21Percent[$r]);?>, <?=$trendArr['0'];?>],
                                ['За 14-21 день', <?=trend($day_21_14Percent[$r]);?>, <?=$trendArr['1'];?>],
                                ['За 7-14 дней', <?=trend($day_14_7Percent[$r]);?>, <?=$trendArr['2'];?>],
                                ['За 7 дней', <?=trend($day_7Percent[$r]);?>, <?=$trendArr['3'];?>],
                                ['', 0, <?=$trendArr['4'];?>]

                            ]);
                            var options = {
                                title : '<? if($r == 0){ echo 'Игнор опроса'; }else{ echo 'Оценка '.$r; }?>',
                                vAxis: {title: 'Процент %'},
                                hAxis: {title: 'Выборки дней'},
                                seriesType: 'bars',
                                series: {1: {type: 'line'}},
                                curveType: 'function',
                            };
                            var chart = new google.visualization.ComboChart(document.getElementById('chart_div_<?=$r?>'));
                            chart.draw(data, options);
                        }
                    </script>
                        <?
                    }
                    ?>
                    <div class="ch_cont" id="chart_div_<?=$r?>" style="width: calc(50% - 4px); height: 500px;">

                    </div>
                    <?php
                    $r--;
                }

                ?>


                <style>
                    .ch_cont{
                        width: fit-content;
                        float: left;
                        border: 1px solid #eeeeee;
                        transition: .3s;
                        opacity: .9;
                    }
                    .ch_cont:hover{
                        opacity: 1;
                        transition: .3s;
                    }
                </style>
            </div>
        <?php





        $this->add_element('show_modal_window','HTML',array('title'=>'График тренда баллов (Уровень: '.$lvl.')','width'=>'fit-content'));
    }




    // ************************************************************************************************************************************************************************
    //
    // КАРТОЧКА ДОЛЖНОСТЕЙ
    //
    // ************************************************************************************************************************************************************************

    function breakdown_of_posts(){
        $setting = array('sel'=>$_POST);

        $org_id = $setting['sel']['org_id'];
        $otdel_id = $setting['sel']['otdel_id'];


        $d_in = array(
            1 => array(1=>'1', 2=>'2', 3=>'3', 4=>'4', 5=>'5', 6=>'6', 7=>'7', 8=>'8', 9=>'9'), // day
            2 => array(1=>'7', 2=>'14', 3=>'21', 4=>'28', 5=>'35', 6=>'42', 7=>'49', 8=>'56', 9=>'63'), // week
            3 => array(1=>'30', 2=>'60', 3=>'90', 4=>'120', 5=>'150', 6=>'180', 7=>'210', 8=>'240', 9=>'270'), // month
            4 => array(1=>'1', 2=>'2', 3=>'4', 4=>'8', 5=>'16', 6=>'32', 7=>'62', 8=>'128', 9=>'256'), // progressive

        );

        $per = $setting['sel']['period'];
        $in = $setting['sel']['sel_in'];

        $p_url = $setting['sel']['p_url'];

        if($org_id) $_work_names = execSQL('select working, _work_name from view_personals WHERE _org_id='.$org_id.''); // Подразделения

        $otdel_name = execSQL('select parent, _otdel_name, _org_id from view_personals WHERE _org_id="'.$org_id.'" group by parent'); // Подразделения

        $pos_name = $otdel_name[$otdel_id];


        function getArrayBall($startDay, $endDay, $_org_id, $otdel_id){


            $day = getData($startDay);

            if ($endDay){
                $endDay = getData($endDay);

                $res = execSQL('select 
                                            t2.working,
                                            sum(t1.answer_ball) as sm,
                                            count(t2.pkey) as usr,
                                            count(t1.answer_ball) as cnt,
                                            t2._otdel_id
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey

                                        WHERE 
                                            t1.c_data >= '.$day.' AND t1.c_data <= '.$endDay.' 
                                        AND t2._org_id='.$_org_id.' AND t2.clss=211 AND t2.enabled=1 AND t1.answer_ball > 0  AND t2._otdel_id='.$otdel_id.' 
                                        
                                        group by t2.working
                            ');

            }else{

                $res = execSQL('select 
                                            t2.working,
                                            sum(t1.answer_ball) as sm,
                                            count(t2.pkey) as usr,
                                            count(t1.answer_ball) as cnt,
                                            t2._otdel_id
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey

                                        WHERE 
                                            t1.c_data >= '.$day.'
                                        AND t2._org_id='.$_org_id.' AND t2.clss=211 AND t2.enabled=1 AND t1.answer_ball > 0  AND t2._otdel_id='.$otdel_id.' 
                                        
                                        group by t2.working
                            ');
            }

            /* Array
             (
                 [id должности] => Array
                     (
                         [id должности] => 15059
                         [сумма баллов] => 20
                         [кол-во pkey] => 4
                         [кол-во баллов] => 4
                         [id подразделения] => 15057
                     )
             ) */

            return $res;
        } // Получаем из бд выборку

        function getData($day){
            $date = getdate(mktime(0, 0, 0, date('m'), date('d') - $day, date('Y')));
            return $date[0];
        } // Получение даты в строковом зачении при вычитании несколких ней

        function forSrBallPodr($startDay, $endDay, $_org_id, $otdel_id, $work_id){

            $day = getData($startDay);
            if ($endDay){

                $endDay = getData($endDay);
                $res = execSQL('select 
                                            t1.answer_ball, 
                                            sum(t1.answer_ball) as sm,
                                            count(t1.answer_ball) as cnt,
                                            t2._org_id
                                            
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey

                                        WHERE 
                                            t1.c_data >= '.$day.' AND t1.c_data <= '.$endDay.' 
                                        AND t2._org_id='.$_org_id.' AND t2.clss=211 AND t2.enabled=1 AND t2._otdel_id='.$otdel_id.' AND t1.answer_ball > 0  AND t2.working='.$work_id.'
                                        
                                        group by t1.answer_ball
                            ');

                // Получаем колличество сотрудников без дубликатов за период !!!!
                $countUSR = execSQL('select t1.personal_id, count(t1.personal_id) as cnt, t2._org_id
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey
                                        WHERE t1.c_data >= '.$day.' AND t2._org_id='.$_org_id.' AND t2.clss=211 AND t2.enabled=1  AND t1.c_data <= '.$endDay.' AND t2._otdel_id='.$otdel_id.' AND t1.answer_ball > 0 AND t2.working='.$work_id.'
                                        group by t1.personal_id');
            }else{
                $res = execSQL('select 
                                            t1.answer_ball, 
                                            sum(t1.answer_ball) as sm,
                                            count(t1.answer_ball) as cnt,
                                            t2._org_id
                                            
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey

                                        WHERE 
                                            t1.c_data >= '.$day.'
                                        AND t2._org_id='.$_org_id.' AND t2.clss=211 AND t2.enabled=1 AND t2._otdel_id='.$otdel_id.' AND t1.answer_ball > 0 AND t2.working='.$work_id.'
                                        
                                        group by t1.answer_ball
                            ');

                $countUSR = execSQL('select t1.personal_id, count(t1.personal_id) as cnt, t2._org_id
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey
                                        WHERE t1.c_data >= '.$day.' AND t2._org_id='.$_org_id.' AND t2.clss=211 AND t2.enabled=1 AND t2._otdel_id='.$otdel_id.' AND t1.answer_ball > 0 AND t2.working='.$work_id.'
                                        group by t1.personal_id');

            }
            $ar = array_values($res);

            $countUSR = count($countUSR);


            $sm = 0;
            $cnt = 0;
            if (sizeof($ar)) foreach ($ar as $key => $value){
                $cnt = $cnt + $value['cnt'];
                $sm = $sm + $value['sm'];
            }

            if($sm or $cnt){
                $itog = $sm / $cnt;;
            }else{
                $itog = 0;
            }


            $return = [
                round($itog, 2),
                $countUSR
            ];
            return $return;

        }

        function getUSR_Data($startDay, $endDay, $_org_id, $otdel_id){

            $day = getData($startDay);

            if ($endDay) {
                $endDay = getData($endDay);

                $c_USR = execSQL('select 
                                            t1.personal_id,
                                            count(t2.pkey) as usr,
                                            count(t1.answer_ball) as cnt,
                                            t1.dep_id
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey
                                        WHERE 
                                            t1.c_data >= '.$day.' AND t1.c_data <= '.$endDay.' 
                                        AND t2._org_id='.$_org_id.' AND t2.clss=211 AND t2.enabled=1 AND t1.answer_ball > 0 AND t2._otdel_id='.$otdel_id.'
                                        group by t1.personal_id
                            ');
            }else{
                $c_USR = execSQL('select 
                                            t1.personal_id,
                                            count(t2.pkey) as usr,
                                            count(t1.answer_ball) as cnt,
                                            t1.dep_id
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey
                                        WHERE 
                                            t1.c_data >= '.$day.'
                                        AND t2._org_id='.$_org_id.' AND t2.clss=211 AND t2.enabled=1 AND t1.answer_ball > 0 AND t2._otdel_id='.$otdel_id.'
                                        group by t1.personal_id
                            ');
            }

            return $c_USR;
        }

        switch ($per) {
            case 0:
                $startDay = $d_in[$in][1];
                $endDay = '';

                $date = getArrayBall($startDay, $endDay, $org_id, $otdel_id);  //////////////////////
                $usrArr = getUSR_Data($startDay, $endDay, $org_id, $otdel_id);

                $filterTimeName = $startDay.' Дней';
                break;
            case 1:
                $startDay = $d_in[$in][2];
                $endDay = $d_in[$in][1];

                $date = getArrayBall($startDay, $endDay, $org_id, $otdel_id);  //////////////////////
                $usrArr = getUSR_Data($startDay, $endDay, $org_id, $otdel_id);

                $filterTimeName = $endDay.'-'.$startDay.' Дней';
                break;
            case 2:
                $startDay = $d_in[$in][3];
                $endDay = $d_in[$in][2];

                $date = getArrayBall($startDay, $endDay, $org_id, $otdel_id);  //////////////////////
                $usrArr = getUSR_Data($startDay, $endDay, $org_id, $otdel_id);

                $filterTimeName = $endDay.'-'.$startDay.' Дней';
                break;
            case 3:
                $startDay = $d_in[$in][4];
                $endDay = $d_in[$in][3];

                $date = getArrayBall($startDay, $endDay, $org_id, $otdel_id);  //////////////////////
                $usrArr = getUSR_Data($startDay, $endDay, $org_id, $otdel_id);

                $filterTimeName = $endDay.'-'.$startDay.' Дней';
                break;
            case 4:
                $startDay = $d_in[$in][5];
                $endDay = $d_in[$in][4];

                $date = getArrayBall($startDay, $endDay, $org_id, $otdel_id);  //////////////////////
                $usrArr = getUSR_Data($startDay, $endDay, $org_id, $otdel_id);

                $filterTimeName = $endDay.'-'.$startDay.' Дней';
                break;
            case 5:
                $startDay = $d_in[$in][6];
                $endDay = $d_in[$in][5];

                $date = getArrayBall($startDay, $endDay, $org_id, $otdel_id);  //////////////////////
                $usrArr = getUSR_Data($startDay, $endDay, $org_id, $otdel_id);

                $filterTimeName = $endDay.'-'.$startDay.' Дней';
                break;
        }

        function summarBall($date){
            $cnt = 0;
            $sum = 0;
            if (sizeof($date)) foreach ($date as $key => $value){
                $cnt = $cnt + $value['cnt'];
                $sum = $sum + $value['sm'];
            }

            if($sum and $cnt){
                $ret = round($sum / $cnt,2);
            }else{
                $ret = 0;
            }

            return $ret;
        }

        function sumUSR($date){
            $cnt = 0;
            if (sizeof($date)) foreach ($date as $key => $value){
                $cnt = $cnt + $value['usr'];
            }
            return $cnt;
        }

        $sumBall = summarBall($date);
        $countUSR = sumUSR($date);

        // создаём массив для сортировки - Таблица для заполнения данными

        $prov_sm = 0;
        $prov_cnt = 0;

        $dataGraphik = [];

        $dataTable = [];

        // Сколько процентов занимает каждая оценка
        function nPercent($arr,$ball){
            $count = 0;
            if (sizeof($arr)) foreach ($arr as $key => $value) $count = $count + $value['cnt'];
            if($arr[$ball]['cnt'] and $count){
                $str = round($arr[$ball]['cnt'] / ($count / 100), 2).'';
            }else {
                $str = 0;
            }
            return $str;

        }


        // Балл веса проблеммы
        function weightScore($_org_id, $otdel_id, $pos, $startDay, $endDay, $countUsr){


            $day = getData($startDay);
            if ($endDay){
                $endDay = getData($endDay);


                $res = execSQL('select 
                                            t1.answer_ball, 
                                            sum(t1.answer_ball) as sm,
                                            count(t1.answer_ball) as cnt,
                                            t2._org_id
                                            
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey

                                        WHERE 
                                            t1.c_data >= '.$day.' AND t1.c_data <= '.$endDay.'  
                                        AND t2._org_id='.$_org_id.' AND t2.clss=211 AND t2.enabled=1 AND t2._otdel_id='.$otdel_id.' AND t1.answer_ball > 0 AND t2.working='.$pos.'
                                        
                                        group by t1.answer_ball
                            ');


            }else{

                $res = execSQL('select 
                                            t1.answer_ball, 
                                            sum(t1.answer_ball) as sm,
                                            count(t1.answer_ball) as cnt,
                                            t2._org_id
                                            
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey

                                        WHERE 
                                            t1.c_data >= '.$day.'
                                        AND t2._org_id='.$_org_id.' AND t2.clss=211 AND t2.enabled=1 AND t2._otdel_id='.$otdel_id.' AND t1.answer_ball > 0 AND t2.working='.$pos.'
                                        
                                        group by t1.answer_ball
                            ');
            }


            $arrBallPRC = [
                1 => nPercent($res,'1') * 300 * $countUsr,
                2 => nPercent($res,'2') * 150 * $countUsr,
                3 => nPercent($res,'3') * 20 * $countUsr,
                4 => nPercent($res,'4') * 1 * $countUsr,
                //5 => nPercent($res,'5') * 1
            ];
            $cnt = 0;
            if (sizeof($arrBallPRC)) foreach ($arrBallPRC as $key => $value){
                $cnt = $cnt + $value;
            }
            return $cnt;
        }





        $weightScore_sum = 0;

        if (sizeof($date)) foreach ($date as $key => $value){

            //print_r($_work_names[$key]);

            if($_work_names[$key]['_work_name']){
                $name = $_work_names[$key]['_work_name'];
            }else{
                $name = '<b style="color: red">Название отсутствует, id должности: '.$key.'</b>';

            }


            $percBt = round((($value['sm'] / $value['cnt']) / $sumBall - 1) * 100, 2);

            $prov_sm = $prov_sm + $value['sm'];
            $prov_cnt = $prov_cnt + $value['cnt'];

            $srBandCount_usr = forSrBallPodr($startDay, $endDay, $org_id, $otdel_id, $key); // Средний балл подразделения
            //print_r($srBandCount_usr);

            $weightScore = weightScore($org_id, $otdel_id, $key, $startDay, $endDay, $srBandCount_usr[1]);


            $td = [
                $name, // Имя
                $key, // ID
                $value['usr'], // кол-во смен за период в подразделении
                $srBandCount_usr[1], // Колличество сотрудников
                $srBandCount_usr[0], // Средний балл подразделения
                $weightScore,
                $percBt, // % падения
                $org_id, // id организации для проверки

            ];
            array_push($dataTable, $td);


            $podrNaGraph = [
                $srBandCount_usr[1],
                $srBandCount_usr[0],
                $name
            ];

            $weightScore_sum = $weightScore_sum + $weightScore;


            array_push($dataGraphik, $podrNaGraph);

        }



        $time_start = microtime(true);
        $idUncle = str_replace('.', '', $time_start);

        ?>


        <style>
        .lineGr{
                            padding: 5px;
                            font-weight: 800;
                            color:#000 !important;
                        }
                .jBox-content{
                    padding-right: 0px !important;
                }
            </style>

        <div style="max-height: 90vh;min-height: 1000px; max-width:1800px;padding-right: 30px;overflow: auto;">

            <style>
                .back-bt{
                    margin-right: 15px;
                    float: right;
                    background: #f9f9f9;
                    border: 1px solid #efefef;
                    border-radius: 6px;
                    padding: 10px 31px;
                    display: inline-block;
                    color: #4e69a0;
                    text-decoration: auto;
                    font-weight: 600;
                }
            </style>
            <a class="back-bt v2" style="margin-right: 0px;" p_url="" cmd="post_shift_poll/modalListPOs" sel_in="<?=$in?>" period="<?=$per?>" org_id="<?=$org_id?>">Назад</a>

            <div style="margin-top: 0px;" class="title-dash">Выборка данных по подразделениям: <?=$filterTimeName?></div>
            <div style="margin-top: 15px;font-weight: 600;">В выборке учувствуют только те должности которые имеют баллы в выбранном интервале, исключенные должности не влияли на средний балл подразделения за выбранный период</div>
            <div>
                <div class="card_t_1_a mt-4">
                    <div class="card_t_1">
                        <div class="card_t_1_title" id="button1">Выбрано должностей</div>
                        <div id="re_date" class="card_t_1_des mb-0">Должности имеющие МО и баллы, в выбранном диапазоне</div>
                        <div id="re_date" class="text_max"><?=count($date)?></div>
                    </div>
                </div>
                <div class="card_t_1_a mt-4">
                    <div class="card_t_1">
                        <div class="card_t_1_title" id="button1">Сотрудников</div>
                        <div id="re_date" class="card_t_1_des mb-0">Сумма сотрудников находящихся внутри выбранных должностей</div>
                        <div id="re_date" class="text_max"><?=count($usrArr)?> Сотрудников</div>
                    </div>
                </div>
                <div class="card_t_1_a mt-4">
                    <div class="card_t_1">
                        <div class="card_t_1_title" id="button1">Средний балл</div>
                        <div id="re_date" class="card_t_1_des mb-0">Средний балл безопасности в выбранном интервале</div>
                        <div id="re_date" class="text_max"><?=$sumBall?></div>
                    </div>
                </div>
                <div class="card_t_1_a mt-4" style="padding-right: 0px;">
                    <div class="card_t_1">
                        <div class="card_t_1_title" id="button1">Сумма оценок</div>
                        <div id="re_date" class="card_t_1_des mb-0">За выбранный промежуток в выбранных подразделениях</div>
                        <div id="re_date" class="text_max"><?=$countUSR?></div>
                    </div>
                </div>
            </div>





            <script type="text/javascript">
                google.charts.load('current', {'packages':['scatter']});
                google.charts.setOnLoadCallback(drawChart);

                function drawChart () {

                    var data = new google.visualization.DataTable();

                    data.addColumn('number', 'Кол-во сотрудников');
                    <?

                    $d = count($dataGraphik);
                    $r = 0;
                    while($r < $d){
                        $chars = ['<b style="color: red">','</b>']; // символы для удаления
                        $str = str_replace($chars, '', $dataGraphik[$r][2]); // PHP код

                        echo "data.addColumn('number', '".$str."');
                        ";
                        $r++;
                    }

                    ?>

                    data.addRows([

                        <?
                        if (sizeof($dataGraphik)) foreach ($dataGraphik as $key => $PDR) {
                            $r = 0;
                            echo '['.$PDR[0].','; // count users
                            while($r < $d){
                                if($key === $r){
                                    if($r == ($d - 1)){
                                        echo $PDR[1];
                                    }else{
                                        echo $PDR[1].',';
                                    }
                                }else{
                                    if($r == ($d - 1)){
                                        echo 'null';
                                    }else{
                                        echo 'null,';
                                    }
                                }
                                $r++;
                            }
                            echo '],
                                ';
                        }


                        $arr_c_u = [];
                        if (sizeof($dataGraphik)) foreach ($dataGraphik as $key => $value) {
                            array_push($arr_c_u, $value[0]);
                        }

                        // Высота

                        $hgGrap = $d * 35;
                        if($hgGrap < 500){
                            $hgGrap = 500;
                        }
                        ?>
                    ]);

                    var options = {
                        vAxis: {
                            title: 'Средний балл',
                            viewWindow: {
                                min: 0,
                                max: 5
                            }
                        },
                        hAxis: {
                            viewWindow: {
                                min: 0,
                                max: <?=max($arr_c_u)?>
                            }
                        },

                        /*height: <?=$hgGrap?>,*/
                        chart: {
                            title: 'График падения должностей',
                            subtitle: 'Чем ближе точка должности к 0 тем хуже средний балл оценки безопасности'
                        },
                    };




                    var chart = new google.charts.Scatter(document.getElementById('scatter_top_xsr'));

                    chart.draw(data, google.charts.Scatter.convertOptions(options));
                }
            </script>

            <script>
                function expandThelist(hg){
                    var id = 'scatter_top_xsr';

                    if(document.getElementById('viev')){
                        document.getElementById(id).style.height = hg +'px';
                        document.getElementById('viev').innerHTML = 'Свернуть ▴';
                        document.getElementById('viev').id = 'viev_on';
                    }else{
                        document.getElementById(id).style.height = '500px';
                        document.getElementById('viev_on').innerHTML = 'Развернуть ▾';
                        document.getElementById('viev_on').id = 'viev';
                    }
                }
            </script>
            <style>
                #scatter_top_xsr > div{
                    height: 100% !important;
                }

                #scatter_top_xsr > div > div > svg{
                    height: 100% !important;
                }

                #viev, #viev_on{
                    padding: 10px;
                    margin-bottom: 20px;
                    background: #f9f9f9;
                    border: 1px solid #f0f0f0;
                    text-align: center;
                    color: #272727;
                    font-weight: 600;
                    width: 150px;
                    border-radius: 8px;
                    float: right;
                    cursor: pointer;
                }
            </style>

            <div id="scatter_top_xsr" style="width: calc(100% - 33px);padding: 15px;border: 1px solid #eee;border-radius: 9px;margin-bottom: 20px;height: 500px;transition: .3s;"></div>

            <?
            if($hgGrap > 500){
                ?>
                <div id="viev" onclick="expandThelist('<?=$hgGrap?>')">
                    Развернуть ▾
                </div>
                <?
            }
            ?>






            <table id="myTable_<?=$idUncle?>" class="tablesorter table_main" cellpadding="0" cellspacing="0" style="border-radius: 9px;overflow: hidden;background: #f9f9f9;width: 100%;">
                <thead>
                <tr class="title_tab_table tablesorter-headerRow" style="cursor:pointer">
                    <td>№</td>
                    <td>Наименование должности</td>
                    <td>Оценок</td>
                    <td>Сотрудников</td>
                    <td>Средний балл</td>
                    <td>Вес проблемы<div class="help_2" title="Процент важности соотношения падения должности к подразделению">?</div></td>
                    <td>% Падения (Ниже общего среднего) <div class="help_2" title="Процент отклонения от среднего значиния подразделения за выбранный период">?</div></td>
                    <td>Детализация</td>
                </tr>
                </thead>
                <?

                // Функция сравнения
                function cmp($a, $b) {
                    if ($a[5] == $b[5]) {
                        return 0;
                    }
                    return ($a[5] > $b[5]) ? -1 : 1;
                }



                uasort($dataTable, 'cmp');

                //////////////////////////////////////////////////////////////////

                function getGRA_2($value, $color){
                    $g = 100 - $value;
                    $c = 100 - $g;
                    if($value< 0){$value = '<div class="lineGr" style="background: linear-gradient(90deg, #ffba00 '.abs($c).'%, #f9f9f9 '.abs($c).'%);">'.$value.'%</div>';}else{
                        if($color){
                            $value = '<div class="lineGr" style="background: linear-gradient(90deg, '.$color.' '.abs($c).'%, #f9f9f9 '.abs($c).'%);">'.$value.'%</div>';
                        }else{
                            $value = '<div class="lineGr" style="background: linear-gradient(90deg, #44da93 '.abs($c).'%, #f9f9f9 '.abs($c).'%);">'.$value.'%</div>';
                        }
                    }
                    return $value;
                }

                $t = 1;
                if (sizeof($dataTable)) foreach ($dataTable as $key => $value){

                    $org_id = $setting['sel']['org_id'];

                    if($value['5']){
                        $weightScore_PRC = round($value['5'] / ($weightScore_sum / 100), 2);
                    }else{
                        $weightScore_PRC = 0;
                    }

                    ?>
                    <tr>
                        <td title="Номер"><?=$t?></td>
                        <td title="Название"><b><?=$value['0']?></b></td>
                        <!--<td title="id"><?=$value['1']?></td>
                            <td title="org_id"><?=$value['7']?></td>-->
                        <td title="Смен(оценок)"><?=$value['2']?></td>
                        <td title="Сотрудников"><?=$value['3']?></td>
                        <td title="Средний балл"><?=$value['4']?></td>
                        <td title="% Падения"><?=getGRA_2($weightScore_PRC, 'red')?></td>
                        <td title="% Ниже среднего"><?=getGRA_2($value['6'], '')?></td>
                        <td title="Детализация"><a class="v2" cmd="post_shift_poll/get_stats_2" period="<?=$per?>"  sel_in="<?=$in?>" sc_inter="<?=$value['4']?>" _org_id="<?=$org_id?>" pos="<?=$otdel_id?>"  work_id="<?=$value['1']?>" style="color: #4e69a0;text-decoration: auto;font-weight: 600;">Подробнее</a></td>
                    </tr>
                    <?
// $org_id, $otdel_id
                    $t++;
                }



                ?>


                </tbody>
            </table>


            <script>
                $(function() {
                    $("#myTable_<?=$idUncle?>").tablesorter();
                });

                $(function() {
                    $("#myTable_<?=$idUncle?>").tablesorter({ sortList: [[0,0], [1,0]] });
                });
            </script>


            <style>
                .help_4{
                    margin-top: 40px;
                    background: #f9f9f9;
                    padding: 100px 0px;
                    text-align: center;
                    border-radius: 9px;
                    font-size: 12px;
                    font-weight: 600;
                }
            </style>
            <?
            if($t == 2){
                echo '<div class="help_4">В выбранный период времени на снижение средний оценки подразделения повлияло только одна должность. Средняя оценка должности напрямую задаёт среднюю оценку подразделения</div>';
            }
            ?>
        </div>


        <?php
        $this->add_element('show_modal_window','HTML',array('title'=>'Детализация по должностям (Подразделение: '.$pos_name['_otdel_name'].')','width'=>'fit-content'));
    }




    // ************************************************************************************************************************************************************************
    //
    // КАРТОЧКА СОТРУДНИКОВ ДЛЯ МОБИЛЬНОГО ОТЧЕТА
    //
    // ************************************************************************************************************************************************************************

    function get_stats_2()
    {
        // Обрабатываем сохранение записи на контроль
        if($_POST['editid'] and $_POST['str2'])
        {
            POST_SHIFT_POLL()->analytic_table_control_append(['personal_id'=>$_POST['editid'],
                                                              'obj_name'=>$_POST['str2'],
                                                              'FXmark'=>$_POST['_average_by_name'],
                                                           ]) ;
        }

        $setting = array('sel'=>$_POST);

        $sc_inter = $setting['sel']['sc_inter']; // Средний балл от которого перешли
        $_org_id = $setting['sel']['_org_id']; // _org_id
        $podr = $setting['sel']['pos']; // $otdel_id
        $work_id= $setting['sel']['work_id']; // work_id
        $in = $setting['sel']['sel_in'];
        $period = $setting['sel']['period'];

        $_work_names = execSQL('select working, _work_name from view_personals WHERE _org_id="'.$_org_id.'" group by working'); // Подразделения

        // Получаем данные для графика
        function getGrapDenum($_org_id, $podr, $work_id, $day){

            // v 1.0
            // выбираем все опросы по id



            $dataDenum = execSQL('select 
                                            t1.c_data_d,
                                            sum(t1.answer_ball) as sm,
                                            count(t1.answer_ball) as cnt 
             
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey
                                        WHERE t2._org_id='.$_org_id.' AND  t2._otdel_id='.$podr.' AND t2.working='.$work_id.' 
                                        
                                        AND t2.clss=211 AND t2.enabled=1 AND t1.answer_ball > 0 
                                        group by t1.c_data_d
                            ');



            //$dataDenum = execSQL('select c_data_d, sum(answer_ball) as sm, count(answer_ball) as cnt from post_shift_poll WHERE work_id="'.$work_id.'" AND answer_ball>0 group by c_data_d');


            if (sizeof($dataDenum)) foreach ($dataDenum as $key => $value) {
                $sr = $value['sm'] / $value['cnt'];
                $today = date('d-m-Y', $key);
                $newDannData = date("d.m.y", strtotime("$today +1 day"));
                //$newDannData = date("d.m.y", strtotime("$today +0 day")); // FIX BAG FIX BAGFIX BAGFIX BAGFIX BAGFIX BAG
                echo "['".$newDannData."', ".$sr."],";
            }



        }


        /// new lite version

        function graphicalDifference($value,$max,$min){
            if($value < 0){
                $width_red = 100 * abs($value);
                if($width_red > 100){
                    $width_red = 100;
                }
                $pl = 100 - $width_red;
            }else{
                $width_blue = 100 * $value;
                if($width_blue > 100){
                    $width_blue = 100;
                }
                $pr = 100 - $width_blue;
            }
            $value = round($value, 2);

            if($value !=0){
                $xml = '<div class="signal_block_viever">
                         <div class="container_signal_block_viever_left" style="width: 50%"><div class="red_grap" style="width: '.$width_red.'%;margin-left: '.$pl.'%;float: right;"></div></div>
                         <div class="container_signal_block_viever_rigth" style="width: 50%"><div class="blue_grap" style="width: '.$width_blue.'%;margin-right: '.$pr.'%;float: left;"></div></div>
                     </div><div class="number_value">'.$value.'</div>';

            }else{
                $xml = '<div class="signal_block_viever">
                         <div class="container_signal_block_viever_left" style="width: 50%"><div class="red_grap" style="width: '.$width_red.'%;margin-left: '.$pl.'%;float: right;"></div></div>
                         <div class="container_signal_block_viever_rigth" style="width: 50%"><div class="blue_grap" style="width: '.$width_blue.'%;margin-right: '.$pr.'%;float: left;"></div></div>
                     </div><div class="number_value">'.$value.'</div>';
            }

            return $xml;
        } // Рисуем сигналы

        $srd = '<div class="srd" title="Нет данных в этом диапазоне или сотрудники пропускали оценку">?</div>';

        $d_in = array(
            1 => array(1=>'1', 2=>'2', 3=>'3', 4=>'4', 5=>'5', 6=>'6', 7=>'7', 8=>'8', 9=>'9'), // day
            2 => array(1=>'7', 2=>'14', 3=>'21', 4=>'28', 5=>'35', 6=>'42', 7=>'49', 8=>'56', 9=>'63'), // week
            3 => array(1=>'30', 2=>'60', 3=>'90', 4=>'120', 5=>'150', 6=>'180', 7=>'210', 8=>'240', 9=>'270'), // month
            4 => array(1=>'1', 2=>'2', 3=>'4', 4=>'8', 5=>'16', 6=>'32', 7=>'62', 8=>'128', 9=>'256'), // progressive
        );


        function getData($day){
            $date = getdate(mktime(0, 0, 0, date('m'), date('d') - $day, date('Y')));
            return $date[0];
        } // Получение даты в строковом зачении при вычитании несколких ней

        function getB_per($allPer, $personal_id, $step){
            if($allPer[$step][$personal_id]['sm'] and $allPer[$step][$personal_id]['cnt']){
                $ans = round($allPer[$step][$personal_id]['sm'] / $allPer[$step][$personal_id]['cnt'], 2);
            }else{
                $ans = '';
            }
            return $ans;
        }

        // Запрос к БД
        function getSrB_in_per($d_in, $in, $_org_id, $otdel_id, $work_id){
            $step = 6;
            $per = 1;

            $allPer = [];

            while($per <= $step){
                $startDay = getData($d_in[$in][$per]);
                $endDay = getData($d_in[$in][$per - 1]);

                $c_USR = execSQL('select 
                                            t1.personal_id,
                                            sum(t1.answer_ball) as sm,
                                            count(t1.answer_ball) as cnt
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey
                                        WHERE 
                                              t1.c_data >= '.$startDay.' AND t1.c_data <= '.$endDay.' AND
                                        t2._org_id='.$_org_id.' AND t2.clss=211 AND t2.enabled=1 AND t1.answer_ball > 0 AND t2._otdel_id='.$otdel_id.' AND t2.working='.$work_id.'
                                        group by t1.personal_id
                            ');
                array_push($allPer, $c_USR);
                $per++;
            }
            return $allPer;
        }

        // Запрос к БД
        function getUSR_Data($_org_id, $otdel_id, $work_id){
            $c_USR = execSQL('select 
                                            t1.personal_id,
                                            t2.pkey,
                                            t2.obj_name,
                                            sum(t1.answer_ball) as sm,
                                            count(t1.answer_ball) as cnt
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey
                                        WHERE 
                                        t2._org_id='.$_org_id.' AND t2.clss=211 AND t2.enabled=1 AND t1.answer_ball > 0 AND t2._otdel_id='.$otdel_id.' AND t2.working='.$work_id.'
                                        group by t1.personal_id
                            ');
            return $c_USR;
        }

        $c_USR = getUSR_Data($_org_id, $podr, $work_id);

        $cnt = 0;
        $sum = 0;

        if (sizeof($c_USR)) foreach ($c_USR as $key => $value){
            $cnt = $cnt + $value['cnt'];
            $sum = $sum + $value['sm'];
        }

        if($sum and $cnt){
            $srBall = round($sum / $cnt, 2);
        }else{
            $srBall = 0;
        }

        ?>

        <style>
            .back-bt{
                margin-right: 15px;
                float: right;
                background: #f9f9f9;
                border: 1px solid #efefef;
                border-radius: 6px;
                padding: 10px 31px;
                display: inline-block;
                color: #4e69a0;
                text-decoration: auto;
                font-weight: 600;
            }
            .control-bt{
                margin: 0px !important;
            }
            .bg-y{
                background: #fffeca;
            }
            .bg-tr-1 > td{
                padding-left: 15px;
                padding-right: 15px;
            }
        </style>

        <a class="back-bt v2" p_url="" cmd="post_shift_poll/breakdown_of_posts" sel_in="<?=$in?>" period="<?=$period?>" org_id="<?=$_org_id?>" otdel_id="<?=$podr?>">Назад</a>

        <div style="max-height: 90vh;max-width: 95vw">

            <div style="margin-top: 42px;">
                <div class="card_t_1_a mt-4">
                    <div class="card_t_1">
                        <div class="card_t_1_title" id="button1">Сотрудников</div>
                        <div id="re_date" class="card_t_1_des mb-0">Сотрудников в должности (имеющих баллы)</div>
                        <div id="re_date" class="text_max"><?=count($c_USR)?> Сотрудников</div>
                    </div>
                </div>
                <div class="card_t_1_a mt-4">
                    <div class="card_t_1">
                        <div class="card_t_1_title" id="button1">Средний балл</div>
                        <div id="re_date" class="card_t_1_des mb-0">Средний балл безопасности в должности</div>
                        <div id="re_date" class="text_max"><?=$srBall?></div>
                    </div>
                </div>

                <?
                if($sc_inter){
                    ?>

                    <div class="card_t_1_a mt-4">
                        <div class="card_t_1">
                            <div class="card_t_1_title" id="button1">Средний в диапазоне</div>
                            <div id="re_date" class="card_t_1_des mb-0">Средний балл в выбранном интервале</div>
                            <div id="re_date" class="text_max"><?=$sc_inter?></div>
                        </div>
                    </div>

                    <?
                }
                ?>

                <div class="card_t_1_a mt-4">
                    <div class="card_t_1">
                        <div class="card_t_1_title" id="button1">Сумма оценок</div>
                        <div id="re_date" class="card_t_1_des mb-0">За весь период времени </div>
                        <div id="re_date" class="text_max"><?=$sum?></div>
                    </div>
                </div>

                <div class="card_t_1_a mt-4">
                    <div class="card_t_1">
                        <div class="card_t_1_title" id="button1">Колличество оценок</div>
                        <div id="re_date" class="card_t_1_des mb-0">За весь период времени </div>
                        <div id="re_date" class="text_max"><?=$cnt?></div>
                    </div>
                </div>

            </div>


            <script>
                google.charts.load('current', {'packages':['line']});
                google.charts.setOnLoadCallback(drawChart);

                function drawChart() {

                    var data = new google.visualization.DataTable();
                    data.addColumn('string', '15 Дней');
                    data.addColumn('number', 'Средняя оценка');

                    data.addRows([
                        <?
                        getGrapDenum($_org_id, $podr, $work_id, '30');
                        ?>
                    ]);

                    var options = {
                        hAxis: {title: 'Дни по датам'},
                        vAxis: {
                            title: 'Среднее значение',
                            //minValue:0,
                            //maxValue:6,
                            viewWindow: {
                                min: 1,
                                max: 5
                            }
                        },
                        chart: {
                            title: 'Динамика среднего балла в должности',
                        },
                        height: 500,

                    };

                    var chart = new google.charts.Line(document.getElementById('linechart_material_2'));

                    chart.draw(data, google.charts.Line.convertOptions(options));
                }
            </script>

            <div id="linechart_material_2" style="height: 500px;border: 1px solid #eee;padding: 15px;border-radius: 9px;margin-bottom: 15px;width: calc(100% - 46px);"></div>

            <?
            function p($in){
                $day = strtotime(date('d.m.Y', strtotime('-'.$in.' DAY')).'');
                echo date('d.m.y', $day);
            }
            ?>

            <table id="myTable_2" class="tablesorter table_main" cellpadding="0" cellspacing="0" style="width: calc(100% - 15px);min-width: 1500px;    border-radius: 9px;
    overflow: hidden;">
                <thead>
                <tr class="title_tab_table">
                    <td title="Нажмите на заголовок, чтобы отсортировать колонку">№</td>
                    <td title="Нажмите на заголовок, чтобы отсортировать колонку">Действие</td>
                    <td title="Нажмите на заголовок, чтобы отсортировать колонку">ФИО</td>
                    <td title="Нажмите на заголовок, чтобы отсортировать колонку">Общий балл</td>
                    <td title="Нажмите на заголовок, чтобы отсортировать колонку">Балл ниже средних</td>
                    <td title="Нажмите на заголовок, чтобы отсортировать колонку">Балл падения</td>

                    <td title="Нажмите на заголовок, чтобы отсортировать колонку">ср. по ФИО</td>
                    <td title="Нажмите на заголовок, чтобы отсортировать колонку">К должности</td>
                    <td title="Нажмите на заголовок, чтобы отсортировать колонку"><?=p($d_in[$in][1])?></td>
                    <td title="Нажмите на заголовок, чтобы отсортировать колонку"><?=p($d_in[$in][2])?></td>
                    <td title="Нажмите на заголовок, чтобы отсортировать колонку"><?=p($d_in[$in][3])?></td>
                    <td title="Нажмите на заголовок, чтобы отсортировать колонку"><?=p($d_in[$in][4])?></td>
                    <td title="Нажмите на заголовок, чтобы отсортировать колонку"><?=p($d_in[$in][5])?></td>
                    <td title="Нажмите на заголовок, чтобы отсортировать колонку"><?=p($d_in[$in][6])?></td>
                </tr>
                </thead>
                <tbody>
                <?php


                $allPer = getSrB_in_per($d_in, $in, $_org_id, $podr, $work_id);

                // Считаем данные для таблицы

                $analytic_table_control = execSQL('select personal_id, c_data, FXmark FROM analytic_table_control');
                $WorkUSR_all = [];
                if (sizeof($c_USR)) foreach ($c_USR as $key => $value) {

                    // Средний по фио
                    if($value['sm'] and $value['cnt']){
                        $srBall_fio = round($value['sm'] / $value['cnt'], 2);
                    }else{
                        $srBall_fio = 0;
                    }



                    //print_r($allPer);

                    getB_per($allPer, $value['personal_id'], '0');

                    $WorkUSR = [
                        'pkey' => $value['pkey'],
                        'fio' => $value['obj_name'],
                        'sr_fio' => $srBall_fio,
                        'in_work' => $srBall_fio - $srBall,
                        'p_1' => getB_per($allPer, $value['personal_id'], '0'),
                        'p_2' => getB_per($allPer, $value['personal_id'], '1'),
                        'p_3' => getB_per($allPer, $value['personal_id'], '2'),
                        'p_4' => getB_per($allPer, $value['personal_id'], '3'),
                        'p_5' => getB_per($allPer, $value['personal_id'], '4'),
                        'p_6' => getB_per($allPer, $value['personal_id'], '5'),
                    ];
                    array_push($WorkUSR_all, $WorkUSR);
                }








                function cmp($a, $b) {
                    if ($a['sr_fio'] == $b['sr_fio']) {
                        return 0;
                    }
                    return ($a['sr_fio'] < $b['sr_fio']) ? -1 : 1;
                }



                uasort($WorkUSR_all, 'cmp');


                function drop_score($ar){
                    $ar = array_diff($ar, array(''));
                    $drop_score = 0;
                    if (sizeof($ar)) foreach ($ar as $key => $value) {
                        if($ar[$key] and $ar[$key + 1]){
                            if($ar[$key] < $ar[$key + 1]) $drop_score++;
                        }
                    }
                    return  $drop_score;
                } // Балл падения по 6 периодам

                function srbALL($WorkUSR_all){
                    $sm = 0;
                    $count = 0;
                    if (sizeof($WorkUSR_all)) foreach ($WorkUSR_all as $key => $value) {
                        $sm = $sm + $value['sr_fio'];
                        $count++;
                    }

                    if($sm and $count){
                        $ans = round($sm / $count, 2);
                    }else{
                        $ans = 0;
                    }
                    return $ans;
                } // Средний балл на основе 6 периудов

                function min_score($ar, $sr){
                    $ar = array_diff($ar, array(''));
                    $min = 0;
                    if (sizeof($ar)) foreach ($ar as $key => $value) {
                        if($value < $sr){
                            $min++;
                        }
                    }
                    return $min;
                } // Бал ниже среднего



                $srbALL = srbALL($WorkUSR_all);



                $r = 1;
                if (sizeof($WorkUSR_all)) foreach ($WorkUSR_all as $key => $value) {

                    $arrPer_for_padenie = [$value['p_1'], $value['p_2'], $value['p_3'], $value['p_4'], $value['p_5'], $value['p_6']];

                    if($analytic_table_control[$value['pkey']]){
                        $fixBall = $analytic_table_control[$value['pkey']]['FXmark'];

                        // Цвет и обозначение
                        if($fixBall < $value['sr_fio']){
                            $viev = '<i class="fa fa-angle-double-up"></i>';
                            $colorMark = 'green';
                        }else{
                            if($fixBall > $value['sr_fio']){
                                $viev = '<i class="fa fa-angle-double-down"></i>';
                                $colorMark = 'red';
                            }else{
                                $viev = '';
                                $colorMark = 'gray';
                            }
                        }


                        $class = 'bg-y';
                        $style = 'cursor: help';
                        $bt = '<b style="color: '.$colorMark.'" title="Зафиксированный бал при постановке на контроль">'.$fixBall.' '.$viev.'</b>';

                        $titleControl = 'Сотрудник на контроле с '.date('d.m.y', $analytic_table_control[$value['pkey']]['c_data']);
                    }else{
                        $style = '';
                        // [period] => 0
                        // [sel_in] => 2
                        // [sc_inter] => 3.97
                        // [_org_id] => 15057
                        // [pos] => 21072
                        // [work_id] => 1540
                        // period="'.$setting['sel']['period'].'" sel_in="'.$setting['sel']['sel_in'].'" sc_inter="'.$setting['sel']['sc_inter'].'" _org_id="'.$setting['sel']['_org_id'].'" pos="'.$setting['sel']['pos'].'" work_id="'.$setting['sel']['work_id'].'"
                        $class = '';
                        $style = 'padding: 0px;text-align: center;';
                        $titleControl = 'Начать отслеживать сотрудника';
                        $bt = '<button class="control-bt v2" cmd="post_shift_poll/newControl" _average_by_name="'.$value['sr_fio'].'" value="'.$value['fio'].'" usid="'.$value['pkey'].'" _work_id="'.$setting['sel']['work_id'].'"       period="'.$setting['sel']['period'].'" sel_in="'.$setting['sel']['sel_in'].'" sc_inter="'.$setting['sel']['sc_inter'].'" _org_id="'.$setting['sel']['_org_id'].'" pos="'.$setting['sel']['pos'].'" work_id="'.$setting['sel']['work_id'].'">Контроль</button>';
                    }

                    if($value['in_work'] < 0){
                        $color = 'style="color:red"';
                    }else{
                        $color = '';
                    }

                    $min_score = min_score($arrPer_for_padenie, $srBall);
                    $drop_score = drop_score($arrPer_for_padenie);

                    $over_b = $min_score + $drop_score;

                    echo'
            <tr class="'.$class.'">
                <td>'.$r.'</td>
                <td title="'.$titleControl.'" style="'.$style.'">'.$bt.'</td>
                <td title="ФИО">'.$value['fio'].'</td>
                <td title="Общий балл">'.$over_b.'</td>
                <td title="Балл ниже средних">'.$min_score.'</td>
                <td title="Балл падения">'.$drop_score.'</td>
                <td '.$color.' title="ср. по ФИО"><b>'.$value['sr_fio'].'</b></td>
                <td title="К должности" style="padding: 0px;">'.graphicalDifference($value['in_work'], 3, -3).'</td>
               
                <td title="Средний балл за выбранный период">'.$value['p_1'].'</td>
                <td title="Средний балл за выбранный период">'.$value['p_2'].'</td>
                <td title="Средний балл за выбранный период">'.$value['p_3'].'</td>
                <td title="Средний балл за выбранный период">'.$value['p_4'].'</td>
                <td title="Средний балл за выбранный период">'.$value['p_5'].'</td>
                <td title="Средний балл за выбранный период">'.$value['p_6'].'</td>
            </tr>
            ';
                    $r++;
                }
                ?>
                </tbody>
            </table><br>

            <script>
                $(function() {
                    $("#myTable_2").tablesorter();
                });

                $(function() {
                    $("#myTable_2").tablesorter({ sortList: [[0,0], [1,0]] });
                });
            </script>

        </div>
        <?

        $this->add_element('show_modal_window','HTML',array('title'=>'Детализация сотрудников в должности: '.$_work_names[$work_id]['_work_name'].'','width'=>'fit-content'));
    }




    // ************************************************************************************************************************************************************************
    //
    // КАРТОЧКА СОТРУДНИКА
    //
    // ************************************************************************************************************************************************************************

    function usersInfo(){
        $setting = array('sel'=>$_POST);

        //print_r($setting);

        $_org_id = $setting['sel']['_org_id']; // _org_id
        $podr = $setting['sel']['pos']; // $otdel_id
        $work_id= $setting['sel']['work_id']; // work_id
        $pkey = $setting['sel']['usid'];
        $usname = $setting['sel']['usname'];

        $date = $setting['sel']['date'];

        // Получаем данные для графика
        function getGrapDenum($_org_id, $podr, $work_id, $pkey,$date){

            // v 1.0
            // выбираем все опросы по id

            $dataDenum = execSQL('select 
                                            t1.c_data_d,
                                            sum(t1.answer_ball) as sm,
                                            count(t1.answer_ball) as cnt 

                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey
                                        WHERE t2._org_id='.$_org_id.' AND  t2._otdel_id='.$podr.' AND t2.working='.$work_id.' AND t2.pkey='.$pkey.'
                                        
                                        AND t2.clss=211 AND t2.enabled=1 AND t1.answer_ball > 0 
                                        group by t1.c_data_d
                            ');


            $dataDenumWORK = execSQL('select 
                                            t1.c_data_d,
                                            sum(t1.answer_ball) as sm,
                                            count(t1.answer_ball) as cnt 

                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey
                                        WHERE t2._org_id='.$_org_id.' AND  t2._otdel_id='.$podr.' AND t2.working='.$work_id.' 
                                        
                                        AND t2.clss=211 AND t2.enabled=1 AND t1.answer_ball > 0 
                                        group by t1.c_data_d
                            ');

            // Кол-во сотрудников в должности
            $cntUsers = execSQL('select t1.pkey 
                                     from view_personals t1
                                     LEFT JOIN post_shift_poll t2  ON t2.personal_id = t1.pkey
                                     WHERE t1._org_id='.$_org_id.' AND t1._otdel_id='.$podr.' AND t1.working='.$work_id.' AND t1.enabled=1
                                     AND t2.answer_ball > 0 
                                     ');

            $cntALL = 0; // кол-во за всё время
            $smALL = 0; // Сумма за всё время
            $cntCNT = 0; // Колличество на контроле
            $smCNT = 0; // Сумма на контроле


            $predZ = 'null';

            $arrGRAP = [];

            if (sizeof($dataDenumWORK)) foreach ($dataDenumWORK as $key => $value) {


                if($dataDenum[$key]['sm'] and $dataDenum[$key]['cnt']){
                    $srWork = $dataDenum[$key]['sm'] / $dataDenum[$key]['cnt'];
                    $predZ = $srWork;


                    $cntALL = $cntALL + $dataDenum[$key]['cnt'];// Была смена
                    $smALL = $smALL + $dataDenum[$key]['sm']; // Сумма баллов смен


                }else{
                    $srWork = 'null';
                }

                $sr = $value['sm'] / $value['cnt'];
                $today = date('d-m-Y', $key);
                $newDannData = date("d.m.y", strtotime("$today +1 day"));
                //$newDannData = date("d.m.y", strtotime("$today +0 day")); // FIX BAG FIX BAGFIX BAGFIX BAGFIX BAGFIX BAG



                if($date === $newDannData){
                    $cntr = '100';
                }else{
                    if(!$cntr){
                        $cntr = '0';
                    }
                }

                if($cntr == 100){
                    $cntCNT = $cntCNT + $dataDenum[$key]['cnt'];// Была смена
                    $smCNT = $smCNT + $dataDenum[$key]['sm']; // Сумма баллов смен
                }

                if($sr){
                    $sr = round($sr, 2);
                }

                if($srWork){
                    $srWork = round($srWork, 2);
                }

                $str = "['".$newDannData."', ".$sr.", ".$srWork.", ".$cntr."],";
                array_push($arrGRAP, $str);
            }



            if($smALL and $cntALL){
                $srAll = round($smALL / $cntALL, 2);
            }else{
                $srAll = 0;
            }

            if($smCNT and $cntCNT){
                $srCNT = round($smCNT / $cntCNT, 2);
            }else{
                $srCNT = 0;
            }


            $returnArr = [
                    'arrGRAP' => $arrGRAP, // Массив для графика
                    'smALL' => $smALL, // Сумма всех
                    'cntALL' => $cntALL, // Кол-во всех смен
                    'smCNT' => $smCNT, // Сумма на контроле
                    'cntCNT' => $cntCNT, //
                    'srAll' => $srAll,  // Среднее за всё время
                    'srCNT' => $srCNT,  // Среднее за контроль
                    'cntUsers' => $cntUsers // Сотрудников всего
            ];

            return $returnArr;
        }


        $getGrapDenum = getGrapDenum($_org_id, $podr, $work_id, $pkey, $date);

        ?>

        <style>
            .jBox-content{
                padding-right: 0px !important;
            }
        </style>

        <div style="height: 90vh; max-width:1800px;padding-right: 30px;overflow: auto;">

            <div>
                <div class="card_t_1_a mt-4">
                    <div class="card_t_1">
                        <div class="card_t_1_title" id="button1">Смены</div>
                        <div id="re_date" class="card_t_1_des mb-0">Колличество смен выбранного сотрудника</div>
                        <div id="re_date" class="text_max"><?=$getGrapDenum['cntALL']?> Смен</div>
                    </div>
                </div>
                <div class="card_t_1_a mt-4">
                    <div class="card_t_1">
                        <div class="card_t_1_title" id="button1">Средний балл</div>
                        <div id="re_date" class="card_t_1_des mb-0">Средний балл сотрудника за всё время</div>
                        <div id="re_date" class="text_max"><?=$getGrapDenum['srAll']?></div>
                    </div>
                </div>


                <div class="card_t_1_a mt-4">
                    <div class="card_t_1">
                        <div class="card_t_1_title" id="button1">Сумма оценок</div>
                        <div id="re_date" class="card_t_1_des mb-0">За весь период времени </div>
                        <div id="re_date" class="text_max"><?=$getGrapDenum['smALL']?></div>
                    </div>
                </div>

                <div class="card_t_1_a mt-4">
                    <div class="card_t_1">
                        <div class="card_t_1_title" id="button1">Окружние</div>
                        <div id="re_date" class="card_t_1_des mb-0">Сотрудников в должности (имеющих баллы)</div>
                        <div id="re_date" class="text_max"><?=count($getGrapDenum['cntUsers'])?> Сотрудник</div>
                    </div>
                </div>


                <div class="card_t_1_a mt-4">
                    <div class="card_t_1">
                        <div class="card_t_1_title" id="button1">Контроль</div>
                        <div id="re_date" class="card_t_1_des mb-0">Средний балл в диапазоне контроля</div>
                        <div id="re_date" class="text_max"><?=$getGrapDenum['srCNT']?></div>
                    </div>
                </div>


            </div>

            <script>
                google.charts.load('current', {'packages':['corechart']});
                google.charts.setOnLoadCallback(drawChart);

                function drawChart() {

                    var data = google.visualization.arrayToDataTable([
                        ['date', 'Ср. оценка должности', 'Ср. оценка сотрудника', 'Область контроля'],
                        <?
                        if (sizeof($getGrapDenum['arrGRAP'])) foreach ($getGrapDenum['arrGRAP'] as $key => $value) {
                            echo $value.'
                    ';

                        }
                        ?>
                    ]);

                    var options = {
                        title: 'Динамика среднего балла сотрудника',
                        subtitle: 'По отношению к должности и учётом постановки на контроль',
                        vAxis: {
                            title: 'Среднее значение',
                            viewWindow: {
                                min: 1,
                                max: 5
                            }
                        },
                        hAxis: {title: 'Даты'},

                        /*series: {1:
                                {
                                    type: 'bars',
                                }
                        },*/
                    };
                    var chart = new google.visualization.SteppedAreaChart(document.getElementById('linechart_material_32'));
                    chart.draw(data, options);
                }
            </script>
            <div id="linechart_material_32" style="height: 500px;border: 1px solid #eee;padding: 15px;border-radius: 9px;margin-bottom: 15px;width: calc(100% - 47px);min-width: 1700px"></div>

            <style>

                .jBox-content {
                    padding: 8px 10px;
                    overflow: auto;
                    -webkit-transition: opacity .15s;
                    transition: opacity .15s;
                }

                .jBox-Modal .jBox-content {
                    padding: 12px 15px;
                }


                .form_2_test{
                    width: calc(100% - 30px);
                    margin-bottom: 18px;
                    padding: 15px;
                    border-radius: 4px;
                    border: 1px solid #d8d8d8;
                }
                .tt-1{
                    margin-bottom: 25px;
                    font-size: 14px;
                    font-weight: 800;
                }


                .card-text-str-1{
                    font-size: 11px;
                    margin-bottom: 5px;
                    font-weight: 600;
                    color: #6f6f6f;
                }

                .card-text-str-2{
                    font-size: 15px;
                    font-weight: 600;
                }

                .card-text-str-3{
                    margin-bottom: 15px;
                    margin-top: 15px;
                    font-size: 13px;
                }

                .card-text-str-4{
                    font-size: 11px;
                    margin-bottom: 5px;
                    font-weight: 600;
                    color: #6bbee3;
                }

                .card-text-str-5{
                    background: #f9f9f9;
                    border: 1px solid #eee;
                    width: 100%;
                    margin-top: 20px;
                    margin-bottom: 5px;
                    padding: 15px;
                    border-radius: 6px;
                }
            </style>

            <?php
            // view_personals
            $usrInfo = execSQL('select * from view_personals WHERE _org_id='.$_org_id.' AND _otdel_id='.$podr.' AND working='.$work_id.' AND pkey='.$pkey.'');
            //print_r($usrInfo);
            ?>

            <style>
                .bt-s1{
                    color: #5a5a5a;
                    margin-bottom: 13px !important;
                }

                .nt-f-2{
                    width: calc(100% - 15px);
                    padding: 22px;
                    font-weight: 600;
                    text-align: center;
                    background: #f9ffc6;
                    border-radius: 6px;
                    border: 1px solid #e4eaaf;
                    margin-bottom: 20px;
                    color: #3a3c2c;
                    margin-top: 10px;
                }
            </style>
            <div class="card_t_1_a" style="float: left">
                <div class="card_t_1">
                    <div class="card_t_1_title" id="button1">Информация о сотруднике</div>
                    <div id="re_date" class="card_t_1_des mb-0 mt-4 bt-s1"><b>ФИО:</b> <?=$usname?></div>
                    <div id="re_date" class="card_t_1_des mb-0 bt-s1"><b>Организация:</b> <?=$usrInfo[$pkey]['_org_name']?></div>
                    <div id="re_date" class="card_t_1_des mb-0 bt-s1"><b>Подразделение:</b> <?=$usrInfo[$pkey]['_otdel_name']?></div>
                    <div id="re_date" class="card_t_1_des mb-0 bt-s1"><b>Должность:</b> <?=$usrInfo[$pkey]['_work_name']?></div>
                    <div id="re_date" class="card_t_1_des mb-0 bt-s1"><b>Год рождения:</b> <?=$usrInfo[$pkey]['dr']?></div>
                </div>
            </div>

            <div style="min-width: 650px;margin: auto;text-align: left;    max-width: 800px;float: left">
                <div class="card_t_1" style="width: 100%;">
                    <form>
                        <div class="in_card_title">Заголовок:</div>
                        <input class="sel_in" name="str1" value="" style="    width: calc(100% - 30px);">
                        <div class="in_card_title">Описание:</div>
                        <input class="sel_in" name="str2" value="" style="    width: calc(100% - 30px);">
                        <br>
                        <button class="bt_s_3 icon_sort card_t_1_bt v2" style="border: 0px;" cmd="post_shift_poll/newJournalSRT" _org_id="<?=$usrInfo[$pkey]['_org_id']?>" pos="<?=$usrInfo[$pkey]['_otdel_id']?>" work_id="<?=$usrInfo[$pkey]['working']?>" pkey="<?=$usrInfo[$pkey]['pkey']?>" srb="<?=$getGrapDenum['srAll']?>">Создать запись</button>
                    </form>
                </div>
                <div id="conyainerList_notify"></div>
                <div id="conyainerList"><?
                    $allStr = execSQL('select * from post_shift_poll_employee_log WHERE personal_id='.$pkey.'');

                    $allStr = array_reverse($allStr);

                    if (sizeof($allStr)) foreach ($allStr as $key => $value){

                        echo '<div  class="card-text-str-5">
                                        <div class="card-text-str-1">Дата и время запси: '.date('d.m.y H:i', $value['c_data']).'  </div>
                                        <div class="card-text-str-2">'.$value['title'].'  </div>
                                        <div class="card-text-str-3">'.$value['obj_name'].'  </div>
                                        <div class="card-text-str-4">Средний балл при создании записи: '.$value['srB'].'</div>
                                      </div>';
                    }

                    ?></div>
            </div>



        </div>

        <?php
        $this->add_element('show_modal_window','HTML',array('title'=>'Информация о пользователе: '.$usname.'','width'=>'fit-content'));
    }




    // ************************************************************************************************************************************************************************
    //
    // Создать запись о сотруднике
    //
    // ************************************************************************************************************************************************************************

    function newJournalSRT(){
        // создаём запись для конкретного сотрудника
        $setting = array('sel'=>$_POST);
        //$this->add_element('show_notife','Сотрудник: '.$setting['sel']['name'].' успешно снят с контроля',array('color'=>'green'));
        //$this->add_element('conyainerList.HTML','----!'); // Переписываем содержимое id

        $title = $_POST['str1'];
        $des = $_POST['str2'];

        $_org_id = $setting['sel']['_org_id'];
        $pos = $setting['sel']['pos'];
        $work_id = $setting['sel']['work_id'];
        $personal_id = $setting['sel']['pkey'];

        $date = microtime(true);
        $srB = $setting['sel']['srb'];

        $id = '';

        $answer = '';

        if($title){
            if($des){

                $dell = 0;


{
                    // пишем в таблицу
                    if($_org_id and $pos and $work_id and $personal_id)
                    {

                        // Создаём запись
                        POST_SHIFT_POLL()->employee_log_append(['personal_id'=>$personal_id,
                                                                'org_id'=>$_org_id,
                                                                'work_id'=>$work_id,
                                                                'pos'=>$pos,
                                                                'title'=>$title,
                                                                'obj_name'=>$des,
                                                                'srB'=>$srB,
                                                                ]);


                        // Выводим список записей

                        $allStr = execSQL('select * from post_shift_poll_employee_log WHERE personal_id='.$personal_id.'');

                        $xml = '';
                        if (sizeof($allStr)) foreach ($allStr as $key => $value){

                            $block = '<div  class="card-text-str-5">
                                        <div class="card-text-str-1">Дата и время запси: '.date('d.m.y H:i', $value['c_data']).'  </div>
                                        <div class="card-text-str-2">'.$value['title'].'  </div>
                                        <div class="card-text-str-3">'.$value['obj_name'].'  </div>
                                        <div class="card-text-str-4">Средний балл при создании записи: '.$value['srB'].'</div>
                                      </div>';

                            $xml = $block.''.$xml;
                        }

                        $this->add_element('conyainerList.HTML', $xml); // Переписываем содержимое id


                    }else{
                        $this->add_element('show_notife','Произошла ошибка необходимо обновить страницу',array('color'=>'red'));
                        $answer = '<div class="nt-f-2">Произошла ошибка необходимо обновить страницу</div>';
                    }
                }

            }else{
                $this->add_element('show_notife','Необходимо добавить описание',array('color'=>'red'));
                $answer = '<div class="nt-f-2">Необходимо добавить описание</div>';
            }
        }else{
            $this->add_element('show_notife','Необходимо указать заголовок',array('color'=>'red'));
            $answer = '<div class="nt-f-2">Необходимо указать заголовок</div>';
        }

        $this->add_element('conyainerList_notify.HTML',$answer); // Переписываем содержимое id





        //$this->add_element('show_modal_window','HTML',array('title'=>'Информация о пользователе: ','width'=>'fit-content'));
        //$this->add_element('show_notife','Запись создана',array('color'=>'green')); // Выводим оповещение
    }




    // ************************************************************************************************************************************************************************
    //
    // Карточка, что произошло в опредёлённую дату в определённой должности
    //
    // ************************************************************************************************************************************************************************



    function warn_data(){
        // Обрабатываем сохранение записи на контроль
        $setting = array('sel'=>$_POST);

        if($_POST['editid'] and $_POST['str2'])
        {
            POST_SHIFT_POLL()->analytic_table_control_append(['personal_id'=>$_POST['editid'],
                                                              'obj_name'=>$_POST['str2'],
                                                              'FXmark'=>$_POST['_average_by_name'],
                                                             ]) ;
        }

        $setting = array('sel'=>$_POST);

        $sc_inter = $setting['sel']['sc_inter']; // Средний балл от которого перешли
        $_org_id = $setting['sel']['_org_id']; // _org_id
        $podr = $setting['sel']['pos']; // $otdel_id
        $work_id= $setting['sel']['work_id']; // work_id
        $in = $setting['sel']['sel_in'];
        $period = $setting['sel']['period'];

        $day = $setting['sel']['date']; // День по которому работаем



        $_work_names = execSQL('select working, _work_name from view_personals WHERE _org_id="'.$_org_id.'" group by working'); // Подразделения



        // Получаем данные для графика



        function getGrapDenum($_org_id, $podr, $work_id, $day){

            // v 1.0
            // выбираем все опросы по id

            $dataDenum = execSQL('select 
                                            t1.c_data_d,
                                            sum(t1.answer_ball) as sm,
                                            count(t1.answer_ball) as cnt 
             
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey
                                        WHERE t2._org_id='.$_org_id.' AND  t2._otdel_id='.$podr.' AND t2.working='.$work_id.' 
                                        
                                        AND t2.clss=211 AND t2.enabled=1 AND t1.answer_ball > 0 
                                        group by t1.c_data_d
                            ');

            $grap = '';

            if (sizeof($dataDenum)) foreach ($dataDenum as $key => $value) {

                //echo date('d.m.y', $key);
                //echo '('.$value['sm'].' / '.$value['cnt'].')';
                //echo '   |||  ';

                $sr = $value['sm'] / $value['cnt'];
                $today = date('d-m-Y', $key);

                $newDannData = date("d.m.y", strtotime("$today +1 day")); // Плюс один день FIX BAG
                //$newDannData = date("d.m.y", strtotime("$today +0 day")); // FIX BAG FIX BAGFIX BAGFIX BAGFIX BAGFIX BAG


                if($newDannData != $day){
                    $line = 'null';
                }else{
                    $line = $sr;
                    $CR = round($sr, 2);
                    $return = $key;
                }

                $grap.= "['".$newDannData."', ".$sr.", $line],
                ";
            }

            if(!$return){
                $return = 0;
            }


            $ans = [
                0 => $return,
                1 => $grap,
                2 => $CR,
            ];

            return $ans;
        }






        /// new lite version

        function graphicalDifference($value,$max,$min){
            if($value < 0){
                $width_red = 100 * abs($value);
                if($width_red > 100){
                    $width_red = 100;
                }
                $pl = 100 - $width_red;
            }else{
                $width_blue = 100 * $value;
                if($width_blue > 100){
                    $width_blue = 100;
                }
                $pr = 100 - $width_blue;
            }
            $value = round($value, 2);

            if($value !=0){
                $xml = '<div class="signal_block_viever">
                         <div class="container_signal_block_viever_left" style="width: 50%"><div class="red_grap" style="width: '.$width_red.'%;margin-left: '.$pl.'%;float: right;"></div></div>
                         <div class="container_signal_block_viever_rigth" style="width: 50%"><div class="blue_grap" style="width: '.$width_blue.'%;margin-right: '.$pr.'%;float: left;"></div></div>
                     </div><div class="number_value">'.$value.'</div>';

            }else{
                $xml = '<div class="signal_block_viever">
                         <div class="container_signal_block_viever_left" style="width: 50%"><div class="red_grap" style="width: '.$width_red.'%;margin-left: '.$pl.'%;float: right;"></div></div>
                         <div class="container_signal_block_viever_rigth" style="width: 50%"><div class="blue_grap" style="width: '.$width_blue.'%;margin-right: '.$pr.'%;float: left;"></div></div>
                     </div><div class="number_value">'.$value.'</div>';
            }

            return $xml;
        } // Рисуем сигналы

        $srd = '<div class="srd" title="Нет данных в этом диапазоне или сотрудники пропускали оценку">?</div>';

        $d_in = array(
            1 => array(1=>'1', 2=>'2', 3=>'3', 4=>'4', 5=>'5', 6=>'6', 7=>'7', 8=>'8', 9=>'9'), // day
            2 => array(1=>'7', 2=>'14', 3=>'21', 4=>'28', 5=>'35', 6=>'42', 7=>'49', 8=>'56', 9=>'63'), // week
            3 => array(1=>'30', 2=>'60', 3=>'90', 4=>'120', 5=>'150', 6=>'180', 7=>'210', 8=>'240', 9=>'270'), // month
            4 => array(1=>'1', 2=>'2', 3=>'4', 4=>'8', 5=>'16', 6=>'32', 7=>'62', 8=>'128', 9=>'256'), // progressive
        );

        function getData($day){
            $date = getdate(mktime(0, 0, 0, date('m'), date('d') - $day, date('Y')));
            return $date[0];
        } // Получение даты в строковом зачении при вычитании несколких ней

        function getB_per($allPer, $personal_id, $step){
            if($allPer[$step][$personal_id]['sm'] and $allPer[$step][$personal_id]['cnt']){
                $ans = round($allPer[$step][$personal_id]['sm'] / $allPer[$step][$personal_id]['cnt'], 2);
            }else{
                $ans = '';
            }
            return $ans;
        }

        // Запрос к БД
        function getSrB_in_per($d_in, $in, $_org_id, $otdel_id, $work_id){
            $step = 6;
            $per = 1;

            $allPer = [];

            while($per <= $step){
                $startDay = getData($d_in[$in][$per]);
                $endDay = getData($d_in[$in][$per - 1]);

                $c_USR = execSQL('select 
                                            t1.personal_id,
                                            sum(t1.answer_ball) as sm,
                                            count(t1.answer_ball) as cnt
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey
                                        WHERE 
                                              t1.c_data >= '.$startDay.' AND t1.c_data <= '.$endDay.' AND
                                        t2._org_id='.$_org_id.' AND t2.clss=211 AND t2.enabled=1 AND t1.answer_ball > 0 AND t2._otdel_id='.$otdel_id.' AND t2.working='.$work_id.'
                                        group by t1.personal_id
                            ');
                array_push($allPer, $c_USR);
                $per++;
            }

            return $allPer;
        }

        // Запрос к БД
        function getUSR_Data($_org_id, $otdel_id, $work_id){

            $c_USR = execSQL('select 
                                            t1.personal_id,
                                            t2.pkey,
                                            t2.obj_name,
                                            sum(t1.answer_ball) as sm,
                                            count(t1.answer_ball) as cnt
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey
                                        WHERE 
                                        t2._org_id='.$_org_id.' AND t2.clss=211 AND t2.enabled=1 AND t1.answer_ball > 0 AND t2._otdel_id='.$otdel_id.' AND t2.working='.$work_id.'
                                        group by t1.personal_id
                            ');

            return $c_USR;
        }

        $c_USR = getUSR_Data($_org_id, $podr, $work_id);

        $cnt = 0;
        $sum = 0;
        if (sizeof($c_USR)) foreach ($c_USR as $key => $value){
            $cnt = $cnt + $value['cnt'];
            $sum = $sum + $value['sm'];
        }

        if($sum and $cnt){
            $srBall = round($sum / $cnt, 2);
        }else{
            $srBall = 0;
        }






        $data = getGrapDenum($_org_id, $podr, $work_id, $day);

        $dateFY = $data[0];
        $grapFY = $data[1];

        $dat = execSQL('select t2.pkey, t2.obj_name, t1.answer_ball
                                        FROM post_shift_poll t1 
                                        LEFT JOIN view_personals t2 ON t1.personal_id = t2.pkey
                                        WHERE t2._org_id='.$_org_id.' AND  t2._otdel_id='.$podr.' AND t2.working='.$work_id.' 
                                        
                                        AND t2.clss=211 AND t2.enabled=1 AND t1.answer_ball > 0 AND c_data_d='.$dateFY.'
                                        group by t1.personal_id
                            ');

        ?>

        <style>
            .back-bt{
                margin-right: 15px;
                float: right;
                background: #f9f9f9;
                border: 1px solid #efefef;
                border-radius: 6px;
                padding: 10px 31px;
                display: inline-block;
                color: #4e69a0;
                text-decoration: auto;
                font-weight: 600;
            }
            .control-bt{
                margin: 0px !important;
            }
            .bg-y{
                background: #fffeca;
            }
            .bg-tr-1 > td{
                padding-left: 15px;
                padding-right: 15px;
            }

            .colorPiker{
                width: 15px;
                height: 15px;
                float: left;
                margin-right: 10px;
                margin-top: 11px;
                border-radius: 10px;
                border: 1px solid #e9e9e9;
                cursor: pointer;
            }

            .colorPikerTitle{
                font-size: 12px;
                font-weight: 700;
            }

            .colorPikerBlovk{

            }
        </style>

        <script>
            function colorPikerBlock(id,color){
                document.getElementById(id).style.display = 'block';
                document.getElementById(id).style.borderTop = '6px solid '+ color;
                document.getElementById(id).style.borderRight = '6px solid '+ color;
            }
        </script>

        <div class="colorPikerBlovk">
            <div class="colorPikerTitle">Поставить отметку</div>
            <div class="colorPiker v2" cmd="post_shift_poll/flagUsrs"  workid="<?=$work_id?>" pid="<?=md5($day.''.$work_id)?>"  color="#1cc92e" date="<?=$day?>" onclick="colorPikerBlock('<?=md5($day.''.$work_id)?>','#1cc92e')" style="background: #1cc92e"></div>
            <div class="colorPiker v2" cmd="post_shift_poll/flagUsrs"  workid="<?=$work_id?>" pid="<?=md5($day.''.$work_id)?>"   color="#fff200" date="<?=$day?>" onclick="colorPikerBlock('<?=md5($day.''.$work_id)?>','#fff200')" style="background: #fff200"></div>
            <div class="colorPiker v2" cmd="post_shift_poll/flagUsrs"  workid="<?=$work_id?>" pid="<?=md5($day.''.$work_id)?>"   color="#000" date="<?=$day?>" onclick="colorPikerBlock('<?=md5($day.''.$work_id)?>','#000')" style="background: #000"></div>
            <div class="colorPiker v2" cmd="post_shift_poll/flagUsrs"  workid="<?=$work_id?>"  pid="<?=md5($day.''.$work_id)?>"  color="#fff" date="<?=$day?>" onclick="colorPikerBlock('<?=md5($day.''.$work_id)?>','#fff')" style="background: #fff"></div>

            <?
            // class="v2" cmd="post_shift_poll/flagUsrs"  workid="10062"  color="" date=""
            ?>

            <div id="conyainerList_2"></div>
        </div>

        <a class="back-bt v2" p_url="" cmd="post_shift_poll/breakdown_of_posts" sel_in="<?=$in?>" period="<?=$period?>" org_id="<?=$_org_id?>" otdel_id="<?=$podr?>">Назад</a>

        <div style="max-height: 90vh;max-width: 95vw">

            <div style="margin-top: 42px;">
                <div class="card_t_1_a mt-4">
                    <div class="card_t_1">
                        <div class="card_t_1_title" id="button1">Сотрудников</div>
                        <div id="re_date" class="card_t_1_des mb-0">Сотрудников в должности (имеющих баллы)</div>
                        <div id="re_date" class="text_max"><?=count($c_USR)?> Сотрудников</div>
                    </div>
                </div>

                <div class="card_t_1_a mt-4">
                    <div class="card_t_1">
                        <div class="card_t_1_title" id="button1">Средний балл</div>
                        <div id="re_date" class="card_t_1_des mb-0">Средний балл безопасности в должности</div>
                        <div id="re_date" class="text_max"><?=$srBall?></div>
                    </div>
                </div>

                <?
                if($sc_inter){
                    ?>

                    <div class="card_t_1_a mt-4">
                        <div class="card_t_1">
                            <div class="card_t_1_title" id="button1">Средний в точке</div>
                            <div id="re_date" class="card_t_1_des mb-0">Средний балл в выбранной дате</div>
                            <div id="re_date" class="text_max"><?=$data[2]?></div>
                        </div>
                    </div>

                    <?
                }
                ?>

                <div class="card_t_1_a mt-4">
                    <div class="card_t_1">
                        <div class="card_t_1_title" id="button1">Сумма оценок</div>
                        <div id="re_date" class="card_t_1_des mb-0">За весь период времени</div>
                        <div id="re_date" class="text_max"><?=$sum?></div>
                    </div>
                </div>

                <div class="card_t_1_a mt-4">
                    <div class="card_t_1">
                        <div class="card_t_1_title" id="button1">Колличество оценок</div>
                        <div id="re_date" class="card_t_1_des mb-0">За весь период времени</div>
                        <div id="re_date" class="text_max"><?=$cnt?></div>
                    </div>
                </div>

            </div>


            <script>
                google.charts.load('current', {'packages':['line']});
                google.charts.setOnLoadCallback(drawChart);

                function drawChart(){

                    var data = new google.visualization.DataTable();
                    data.addColumn('string', '15 Дней');
                    data.addColumn('number', 'Средняя оценка');
                    data.addColumn('number', 'Выбранная дата');

                    data.addRows([
                        <?


                        echo $grapFY;

                        ?>
                    ]);

                    var options = {

                        hAxis: {title: 'Дни по датам'},
                        vAxis: {
                            title: 'Среднее значение',
                            viewWindow: {
                                min: 1,
                                max: 5
                            }
                        },

                        chart: {
                            title: 'Динамика среднего балла в должности',
                        },

                        height: 500,

                    };

                    var chart = new google.charts.Line(document.getElementById('linechart_material_2'));
                    chart.draw(data, google.charts.Line.convertOptions(options));
                }
            </script>
            <div id="linechart_material_2" style="height: 500px;border: 1px solid #eee;padding: 15px;border-radius: 9px;margin-bottom: 15px;width: calc(100% - 47px);"></div>






            <script>
                $(function() {
                    $("#myTable33").tablesorter();
                });

                $(function() {
                    $("#myTable33").tablesorter({ sortList: [[0,0], [1,0]] });
                });
            </script>



            <?
            function p($in){
                $day = strtotime(date('d.m.Y', strtotime('-'.$in.' DAY')).'');
                echo date('d.m.y', $day);
            }
            ?>

            <table id="myTable_2" class="tablesorter table_main" cellpadding="0" cellspacing="0" style="width: calc(100% - 15px);min-width: 1500px;    border-radius: 9px;
    overflow: hidden;">
                <thead>
                <tr class="title_tab_table">
                    <td title="Нажмите на заголовок, чтобы отсортировать колонку">№</td>
                    <td title="Нажмите на заголовок, чтобы отсортировать колонку">Действие</td>
                    <td title="Нажмите на заголовок, чтобы отсортировать колонку">ФИО</td>
                    <td>Присутствие</td>
                    <td>Оценка</td>
                    <td title="Нажмите на заголовок, чтобы отсортировать колонку">Общий балл</td>
                    <td title="Нажмите на заголовок, чтобы отсортировать колонку">Балл ниже средних</td>
                    <td title="Нажмите на заголовок, чтобы отсортировать колонку">Балл падения</td>

                    <td title="Нажмите на заголовок, чтобы отсортировать колонку">ср. по ФИО</td>
                    <td title="Нажмите на заголовок, чтобы отсортировать колонку">К должности</td>
                    <td title="Нажмите на заголовок, чтобы отсортировать колонку"><?=p($d_in[$in][1])?></td>
                    <td title="Нажмите на заголовок, чтобы отсортировать колонку"><?=p($d_in[$in][2])?></td>
                    <td title="Нажмите на заголовок, чтобы отсортировать колонку"><?=p($d_in[$in][3])?></td>
                    <td title="Нажмите на заголовок, чтобы отсортировать колонку"><?=p($d_in[$in][4])?></td>
                    <td title="Нажмите на заголовок, чтобы отсортировать колонку"><?=p($d_in[$in][5])?></td>
                    <td title="Нажмите на заголовок, чтобы отсортировать колонку"><?=p($d_in[$in][6])?></td>
                </tr>
                </thead>
                <tbody>
                <?php


                $allPer = getSrB_in_per($d_in, $in, $_org_id, $podr, $work_id);

                // Считаем данные для таблицы

                $analytic_table_control = execSQL('select personal_id, c_data, FXmark FROM analytic_table_control');
                $WorkUSR_all = [];
                if (sizeof($c_USR)) foreach ($c_USR as $key => $value) {

                    // Средний по фио
                    if($value['sm'] and $value['cnt']){
                        $srBall_fio = round($value['sm'] / $value['cnt'], 2);
                    }else{
                        $srBall_fio = 0;
                    }



                    //print_r($allPer);

                    getB_per($allPer, $value['personal_id'], '0');

                    $WorkUSR = [
                        'pkey' => $value['pkey'],
                        'fio' => $value['obj_name'],
                        'sr_fio' => $srBall_fio,
                        'in_work' => $srBall_fio - $srBall,
                        'p_1' => getB_per($allPer, $value['personal_id'], '0'),
                        'p_2' => getB_per($allPer, $value['personal_id'], '1'),
                        'p_3' => getB_per($allPer, $value['personal_id'], '2'),
                        'p_4' => getB_per($allPer, $value['personal_id'], '3'),
                        'p_5' => getB_per($allPer, $value['personal_id'], '4'),
                        'p_6' => getB_per($allPer, $value['personal_id'], '5'),
                    ];
                    array_push($WorkUSR_all, $WorkUSR);
                }

                function cmp($a, $b) {
                    if ($a['sr_fio'] == $b['sr_fio']) {
                        return 0;
                    }
                    return ($a['sr_fio'] < $b['sr_fio']) ? -1 : 1;
                }

                uasort($WorkUSR_all, 'cmp');

                function drop_score($ar){
                    $ar = array_diff($ar, array(''));
                    $drop_score = 0;
                    if (sizeof($ar)) foreach ($ar as $key => $value) {
                        if($ar[$key] and $ar[$key + 1]){
                            if($ar[$key] < $ar[$key + 1]) $drop_score++;
                        }
                    }
                    return  $drop_score;
                } // Балл падения по 6 периодам

                function srbALL($WorkUSR_all){
                    $sm = 0;
                    $count = 0;
                    if (sizeof($WorkUSR_all)) foreach ($WorkUSR_all as $key => $value) {
                        $sm = $sm + $value['sr_fio'];
                        $count++;
                    }

                    if($sm and $count){
                        $ans = round($sm / $count, 2);
                    }else{
                        $ans = 0;
                    }
                    return $ans;
                } // Средний балл на основе 6 периудов

                function min_score($ar, $sr){
                    $ar = array_diff($ar, array(''));
                    $min = 0;
                    if (sizeof($ar)) foreach ($ar as $key => $value) {
                        if($value < $sr){
                            $min++;
                        }
                    }
                    return $min;
                } // Бал ниже среднего



                $srbALL = srbALL($WorkUSR_all);



                $r = 1;
                if (sizeof($WorkUSR_all)) foreach ($WorkUSR_all as $key => $value) {

                    $arrPer_for_padenie = [$value['p_1'], $value['p_2'], $value['p_3'], $value['p_4'], $value['p_5'], $value['p_6']];

                    if($analytic_table_control[$value['pkey']]){
                        $fixBall = $analytic_table_control[$value['pkey']]['FXmark'];

                        // Цвет и обозначение
                        if($fixBall < $value['sr_fio']){
                            $viev = '<i class="fa fa-angle-double-up"></i>';
                            $colorMark = 'green';
                        }else{
                            if($fixBall > $value['sr_fio']){
                                $viev = '<i class="fa fa-angle-double-down"></i>';
                                $colorMark = 'red';
                            }else{
                                $viev = '';
                                $colorMark = 'gray';
                            }
                        }


                        $class = 'bg-y';
                        $style = 'cursor: help';
                        $bt = '<b style="color: '.$colorMark.'" title="Зафиксированный бал при постановке на контроль">'.$fixBall.' '.$viev.'</b>';

                        $titleControl = 'Сотрудник на контроле с '.date('d.m.y', $analytic_table_control[$value['pkey']]['c_data']);
                    }else{
                        $style = '';
                        // [period] => 0
                        // [sel_in] => 2
                        // [sc_inter] => 3.97
                        // [_org_id] => 15057
                        // [pos] => 21072
                        // [work_id] => 1540
                        // period="'.$setting['sel']['period'].'" sel_in="'.$setting['sel']['sel_in'].'" sc_inter="'.$setting['sel']['sc_inter'].'" _org_id="'.$setting['sel']['_org_id'].'" pos="'.$setting['sel']['pos'].'" work_id="'.$setting['sel']['work_id'].'"
                        $class = '';
                        $style = 'padding: 0px;text-align: center;';
                        $titleControl = 'Начать отслеживать сотрудника';
                        $bt = '<button class="control-bt v2" cmd="post_shift_poll/newControl" _average_by_name="'.$value['sr_fio'].'" value="'.$value['fio'].'" usid="'.$value['pkey'].'" _work_id="'.$setting['sel']['work_id'].'"       period="'.$setting['sel']['period'].'" sel_in="'.$setting['sel']['sel_in'].'" sc_inter="'.$setting['sel']['sc_inter'].'" _org_id="'.$setting['sel']['_org_id'].'" pos="'.$setting['sel']['pos'].'" work_id="'.$setting['sel']['work_id'].'">Контроль</button>';
                    }

                    if($value['in_work'] < 0){
                        $color = 'style="color:red"';
                    }else{
                        $color = '';
                    }

                    $min_score = min_score($arrPer_for_padenie, $srBall);
                    $drop_score = drop_score($arrPer_for_padenie);

                    $over_b = $min_score + $drop_score;


                    //  Информация по дню


                    if($dat[$value['pkey']]){
                        $status = 'Да';

                        // Цвет и обозначение
                        if($dat[$value['pkey']]['answer_ball'] > $data[2]){
                            $viev = '<i class="fa fa-angle-double-up"></i>';
                            $colorMark = 'green';
                            $bg_s1 = 'background: #f8f8f8;  padding: 0px 15px;';
                        }else{
                            if($dat[$value['pkey']]['answer_ball'] < $data[2]){
                                $viev = '<i class="fa fa-angle-double-down"></i>';
                                $colorMark = 'red';
                                if($dat[$value['pkey']]['answer_ball'] >= $value['sr_fio']){
                                    $bg_s1 = 'background: #f8f8f8;  padding: 0px 15px;';
                                }else{
                                    $bg_s1 = 'background: rgba(255,237,237,1);  padding: 0px 15px;';
                                }
                            }else{
                                $viev = '';
                                if($dat[$value['pkey']]['answer_ball'] >= $value['sr_fio']){
                                    $bg_s1 = 'background: #f8f8f8;  padding: 0px 15px;';
                                }else{
                                    $bg_s1 = 'background: rgba(255,237,237,1);  padding: 0px 15px;';
                                }
                                $colorMark = 'gray';
                            }
                        }

                        $style = 'padding:0px;text-align: center;';
                        $techBall = '<b style="color: '.$colorMark.';">'.$dat[$value['pkey']]['answer_ball'].' '.$viev.'</b>';
                        //$nameStyle = 'font-weight:600';
                    }else{
                        $status = '';
                        $techBall = '';
                        $bg_s1 = 'background: #f8f8f8;';
                        $nameStyle = '';
                    }


                    echo'
            <tr class="'.$class.'">
                <td>'.$r.'</td>
                <td title="'.$titleControl.'" style="'.$style.'">'.$bt.'</td>
                <td title="ФИО" style="'.$nameStyle.'">'.$value['fio'].'</td>
                
                <td style="background: #f8f8f8;">'.$status.'</td>
                <td style="'.$bg_s1.'">'.$techBall.'</td>
                
                <td title="Общий балл">'.$over_b.'</td>
                <td title="Балл ниже средних">'.$min_score.'</td>
                <td title="Балл падения">'.$drop_score.'</td>
                <td '.$color.' title="ср. по ФИО"><b>'.$value['sr_fio'].'</b></td>
                <td title="К должности" style="padding: 0px;">'.graphicalDifference($value['in_work'], 3, -3).'</td>
               
                <td title="Средний балл за выбранный период">'.$value['p_1'].'</td>
                <td title="Средний балл за выбранный период">'.$value['p_2'].'</td>
                <td title="Средний балл за выбранный период">'.$value['p_3'].'</td>
                <td title="Средний балл за выбранный период">'.$value['p_4'].'</td>
                <td title="Средний балл за выбранный период">'.$value['p_5'].'</td>
                <td title="Средний балл за выбранный период">'.$value['p_6'].'</td>
            </tr>
            ';
                    $r++;
                }
                ?>
                </tbody>
            </table><br>

            <script>
                $(function() {
                    $("#myTable_2").tablesorter();
                });

                $(function() {
                    $("#myTable_2").tablesorter({ sortList: [[0,0], [1,0]] });
                });
            </script>

        </div>
        <?

        $this->add_element('show_modal_window','HTML',array('title'=>'Детализация сотрудников в должности: '.$_work_names[$work_id]['_work_name'].'','width'=>'fit-content'));
    }




    // ************************************************************************************************************************************************************************
    //
    // Функция поставить флаг
    //
    // ************************************************************************************************************************************************************************



    function flagUsrs(){
        $setting = array('sel'=>$_POST);

        $_org_id = $setting['sel']['workid'];
        $date = $setting['sel']['date'];
        $color = $setting['sel']['color'];
        $pid = $setting['sel']['pid'];
        // pid

        $r_text = '-';

        print_r($setting);

            // пишем в таблицу
            if($_org_id and $date and $color)
            {
                // Создаём запись
                POST_SHIFT_POLL()->analytic_table_marker_append(['workid'=>$_org_id,
                                                                 'pid'=>$pid,
                                                                 'c_data'=>(int)$date,
                                                                 'color'=>$color,
                                                                 'r_text'=>$r_text,
                                                                ]);
                $answer = '<div class="nt-f-2">Запись добавлена</div>';

                $this->add_element('conyainerList_2.HTML', $answer); // Переписываем содержимое id

            }
            else
            {
                $this->add_element('show_notife','Произошла ошибка необходимо обновить страницу',array('color'=>'red'));
                $answer = '<div class="nt-f-2">Произошла ошибка необходимо обновить страницу</div>';
            }



        //$this->add_element('show_modal_window','HTML',array('title'=>'Установка маркера','width'=>'fit-content'));

        $this->add_element('show_notife','Флаг установлен',array('color'=>'green'));
    }















    /*
    //$arr_events=execSQL_row('select pkey,obj_name from obj_site_events_schedule where ext like "%poll%" and enabled=1 and status!=5') ;
    /*ob_start() ;
    ?><script type="text/javascript">
        $j('#button_summary').removeAttr('disabled') ;
    </script><?
    $text=ob_get_clean() ;
    $this->add_element('JSCODE',$text);

    //$this->add_element('show_notife','Ответ добавлен',array('color'=>'green')); // Выводим оповещение
    //$this->add_element('button_general_schedule.HTML','УРА!'); // Переписываем содержимое id

    */

}
