コード例 #1
0
ファイル: review.php プロジェクト: Devenet/MoodPicker
*/
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
ファイル: details.php プロジェクト: Devenet/MoodPicker
 $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
ファイル: index.php プロジェクト: Devenet/MoodPicker
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);
     }
 }