2013-11-02 2 views
0

그곳에!동적으로 진행률 표시 줄 업데이트 yyiframework

나는 백분율을 계산하는 함수가 있는데,이 백분율은 시간을 기준으로합니다. 시작 시간 (예 : 15:00)과 종료 시간 (예 : 15:05)이 있습니다. 15:02에이 함수를 호출하면 결과는 40 %가됩니다.

public function getBuildPercentage() { 
    $currentTime = strtotime(date('Y-m-d H:i:s')); //50 
    $boughtTime = strtotime($this->boughtTime); 
    $finishTime = strtotime($this->finishTime); //100 

    $first = $currentTime - $boughtTime; 
    $second = $finishTime - $boughtTime; 

    $percentage = round(($first/$second) * 100);  

    // if the percentage is higher than 100 -> item is finished 
    if($percentage >= 100) 
     $this->setToFinished($this->id); 

    return $percentage; 
} 

나는 다음과 같은 부트 스트랩 진행 막대 위젯을 사용하여이 비율을 표시합니다

<?php 
    $this->widget(
     'bootstrap.widgets.TbProgress', 
     array(
      'type' => 'success', 
      'percent' => $item->getBuildPercentage(), 
      'htmlOptions' => array(
       'data-toggle' => 'tooltip', 
       'title' => 'Approximately ...to go.' 
       )         
      ) 
     ) 
?> 

현재 사용자가 비율 및 정확한 진행률 표시 줄의 정확한 값을 볼 수있는 페이지를 새로 고침 할 수 있습니다.

progressbar가 동적으로 업데이트되면 (새로 고침을하지 않으면) 정말 멋지다.

가장 좋은 방법은 무엇입니까? 아약스? (나는 그런 경험이 없으므로 예제를 줄 수 있다면 정말 좋을 것입니다!)

시간과 노력에 감사드립니다.

답변

2

먼저, AJAX를 위해 당신은 요청을 통해 기능에 액세스 할 수 있어야합니다, 그래서 당신의 컨트롤러에 코드를 삽입 :

public function actionPercentage($id) { 
if (Yii::app()->request->isAjaxRequest) { 
    $item = YourModelName::model()->findByPk($id); //obtain instance of object containing your function 
    echo $item->getBuildPercentage(); //to return value in ajax, simply echo it 
} 
} 

그런 다음보기에서 각 두 번째 서버로 요청을 보내드립니다 스크립트를 등록 할 수 있습니다 현재의 비율을 얻을 :

Yii::app()->clientScript->registerCoreScript('jquery'); 
Yii::app()->clientScript->registerScript('ajax-percentage',' 
    var interval = 1000; 
    setInterval(function() { $.ajax(
     type: "GET", 
     url: '.Yii::app()->createUrl('yourController/percentage', array('id'=>$item->id)).', 
     success: function (percents) { 
      // you have got your percents, so you can now assign it to progressbar value here 
     } 
)}, interval); 
'); 

나는 또한 부트 스트랩 위젯에 문제가있을 경우는 JQuery UI Progressbar을 사용하는 것이 좋습니다.

+0

고마워요! 이것이 제가 찾고 있던 것입니다. – Shark

관련 문제