예제 #1
0
*/
use Picker\Mood;
use Picker\MoodLevel;
use Utils\Session;
use Utils\Cookie;
use Utils\TextHelper;
// results of the day
$dayMoods = Mood::CountDayMoods();
$dayBads = $dayMoods[MoodLevel::BAD];
$dayGoods = $dayMoods[MoodLevel::GOOD];
$dayCount = $dayMoods['count'];
$this->assign('moods', $dayCount);
if ($dayCount > 0) {
    $this->assign('goods_percentage', $dayGoods * 100 / $dayCount);
    $this->assign('bads_percentage', $dayBads * 100 / $dayCount);
    $s = "\n    \$(function(){\n        var data = [\n            {\n                value: " . $dayBads . ",\n                color: \$('#color_picker .progress-bar-danger').css('background-color'),\n                label: 'Bad Mood'\n            },\n            {\n                value: " . $dayGoods . ",\n                color: \$('#color_picker .progress-bar-success').css('background-color'),\n                label: 'Good Mood'\n            }\n        ]; \n        new Chart(document.getElementById('dayChart').getContext('2d')).Doughnut(data, { \n            animation: true, animationEasing: 'linear', animationSteps: 25,\n            tooltipFontFamily: \$('body').css('font-family'),\n            tooltipFontSize: 12,\n            segmentShowStroke: false,\n            percentageInnerCutout : 60\n        });\n    });";
    $this->register('script', TextHelper::removeLineBreak($s));
}
// stats of the month
$monthMoods = Mood::CountMonthMoods();
$monthGoods = $monthMoods[MoodLevel::GOOD];
$monthBads = $monthMoods[MoodLevel::BAD];
$monthCount = max(1, $monthBads + $monthGoods);
$this->assign('month_goods_percentage', $monthGoods * 100 / $monthCount);
$this->assign('month_bads_percentage', $monthBads * 100 / $monthCount);
$this->assign('month_goods', $monthGoods);
$this->assign('month_bads', $monthBads);
// javascript dependancy
if ($dayCount > 0) {
    $this->register('script_file', 'chart.min.js');
}
예제 #2
0
 $year_moods = Mood::CountYearMoods($year);
 $year_nb_moods = $year_moods['count'];
 $year_nb_goods = $year_moods[MoodLevel::GOOD];
 $year_nb_bads = $year_moods[MoodLevel::BAD];
 if (empty($year_nb_moods)) {
     $year_nb_moods = 1;
 }
 $this->assign('year_goods_percentage', $year_nb_goods * 100 / $year_nb_moods);
 $this->assign('year_bads_percentage', $year_nb_bads * 100 / $year_nb_moods);
 $this->assign('year_goods', $year_nb_goods);
 $this->assign('year_bads', $year_nb_bads);
 // months stats
 $diplayMonths = array();
 $monthsGraph = array();
 foreach ($months as $m) {
     $monthMoods = Mood::CountMonthMoods($m, $year);
     $t = $monthMoods['count'];
     $tg = $monthMoods[MoodLevel::GOOD];
     $tb = $monthMoods[MoodLevel::BAD];
     $diplayMonths[$m] = array('total' => $t, 'goods' => $tg, 'bads' => $tb, 'goods_percentage' => $tg * 100 / $t, 'bads_percentage' => $tb * 100 / $t);
     $monthsGraph['name'][] = date('M.', mktime(0, 0, 0, $m, 1));
     $monthsGraph['value'][] = round($diplayMonths[$m]['goods_percentage'], 2);
     $s .= "\n            new Chart(document.getElementById('chartMonth" . $m . "').getContext('2d')).Doughnut(\n                [\n                    {\n                        value: " . $tb . ",\n                        color: \$('#color_picker .progress-bar-danger').css('background-color'),\n                        label: 'Bad Mood'\n                    },\n                    {\n                        value: " . $tg . ",\n                        color: \$('#color_picker .progress-bar-success').css('background-color'),\n                        label: 'Good Mood'\n                    }\n                ]\n                , {\n                    animation: true,\n                    animationEasing: 'linear', animationSteps: 25,\n                    segmentShowStroke: false,\n                    percentageInnerCutout : 60\n                }\n            );\n        ";
 }
 $this->assign('months', $diplayMonths);
 // draw year line graph
 if (count($months) > 1) {
     $monthsGraph = array_map('array_reverse', $monthsGraph);
     $s .= "\n        var dataYear = {\n            labels: ['" . implode("', '", $monthsGraph['name']) . "'],\n            datasets: [\n                {\n                    label: 'Mood',\n                    fillColor: 'rgba(220,220,220,0.2)',\n                    strokeColor: \$('#color_picker .progress-bar-success').css('background-color'),\n                    pointColor: \$('#color_picker .progress-bar-success').css('background-color'),\n                    data: [" . implode(", ", $monthsGraph['value']) . "]\n                }\n            ]\n        };\n        var chartYear = new Chart(document.getElementById('chartYear').getContext('2d')).Line(dataYear, { responsive: true });\n        ";
 } else {
     $s .= "\$('#chartYear').parent().hide();";
예제 #3
0
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Code source hosted on https://github.com/Devenet/MoodPicker
*/
use Utils\Cookie;
use Utils\Session;
use Picker\Mood;
use Picker\MoodLevel;
use Core\Config;
if (isset($_POST['mood']) && $this->acceptToken()) {
    $_POST['mood'] = $_POST['mood'] + 0;
    if (!MoodLevel::isValidValue($_POST['mood'])) {
        $this->errorPage('Invalid value', 'The given value for your current mood is unknow.');
    }
    if (!Cookie::Exists('voted') && !Session::Exists('voted')) {
        $m = new Mood($_POST['mood'], time(), Config::IP());
        $m->save();
        Cookie::add('voted', true, Cookie::HOUR * 2);
        Session::add('voted', true);
        header('Location: ./review');
        exit;
    }
    $this->errorPage('Already voted', 'An entry has already been enregistred from your computer. <br />You have to wait some times before submitting an other mood.');
} else {
    $this->getToken();
    $this->assign('good', MoodLevel::GOOD);
    $this->assign('bad', MoodLevel::BAD);
}
예제 #4
0
파일: api.php 프로젝트: Devenet/MoodPicker
 public function submit($data)
 {
     if (empty($data)) {
         $this->error(400);
     }
     try {
         $data = json_decode($data, true);
         $this->checkToken($data);
         if (!isset($data[self::P_MOOD]) || empty($data[self::P_MOOD])) {
             $this->error(422, self::E_EMPTY_MOOD);
         }
         if (!MoodLevel::isValidValue($data[self::P_MOOD] + 0)) {
             $this->error(422, self::E_FORMAT_MOOD);
         }
         $m = new Mood($data[self::P_MOOD], time(), Config::IP());
         $m->save();
         $this->data['mood'] = $m->getMood();
         $this->data['timestamp'] = $m->getTime();
         $this->send();
     } catch (\Exception $ex) {
         $this->error(400);
     }
 }