public function indexAjax() { return BootstrapUI::tableRemoteResponse()->search(array('name'))->column('name')->column('total', function ($value, $row) { return "<div class=\"text-right\">{$value}</div>"; })->column('action', function ($value, $row) { return \Bootstrap::anchor(\Bootstrap::icon('search'), \Koldy\Url::href('reports', 'search', array('provider_id' => $row['id'])))->title('Find reports sent from this provider')->asButton()->size('xs')->color('red'); })->resultSet(Provider::resultSet())->handle(); }
public function indexAjax() { return BootstrapUI::tableRemoteResponse()->search(array('country'))->column('flag', function ($value, $row) { return '<img src="' . \Koldy\Url::link('img/flag/' . $row['tld'] . '.png') . '" />'; })->column('tld')->column('country')->column('total', function ($value, $row) { return "<div class=\"text-right\">{$value}</div>"; })->column('action', function ($value, $row) { return \Bootstrap::anchor(\Bootstrap::icon('search'), \Koldy\Url::href('reports', 'search', array('country_id' => $row['id'])))->title('Find reports from this country')->asButton()->size('xs')->color('red'); })->resultSet(Country::resultSet())->handle(); }
public function indexAjax() { return BootstrapUI::tableRemoteResponse()->search(array('summary'))->column('id', function ($value, $row) { $user = \Session::get('user'); $previousLogin = $user['previous_login']; return $row['created_at'] >= $previousLogin ? "{$value} " . \Bootstrap::label('NEW')->color('red') : $value; })->column('summary', function ($value, $row) { return "<pre class=\"text-danger\">{$value}</pre>"; })->column('total', function ($value, $row) { $search = \Bootstrap::anchor(\Bootstrap::icon('search'), \Koldy\Url::href('reports', 'search', array('stack_trace_id' => $row['id'])))->title('Find reports with this stack trace')->asButton()->size('xs')->color('red'); $open = \BootstrapUI::buttonRemote(\Bootstrap::icon('eye-open'))->progressText(\Bootstrap::icon('zoom-in'))->param('stack_trace_id', $row['id'])->url(\Koldy\Url::href('stack-traces', 'find-any'))->size('xs')->color('green'); return "<p class=\"text-right\">{$value}</p>{$search} {$open}"; })->resultSet(Stack\Trace::resultSet())->handle(); }
public function stackTracesAjax() { $osVersionId = (int) Input::post('os_version_id'); if ($osVersionId <= 0) { Application::throwError(400, 'Bad request'); } $resultSet = new Stack\Trace\ResultSet\OsVersion(); $resultSet->setOsVersionId($osVersionId); return BootstrapUI::tableRemoteResponse()->primaryKey('stack_trace_id')->column('total', function ($value, $row) { return \Bootstrap::label($value)->color('red'); })->column('summary', function ($value, $row) { return "<pre class=\"text-danger\">{$value}</pre>"; })->column('action', function ($value, $row) use($osVersionId) { return \Bootstrap::anchor(\Bootstrap::icon('search'), \Koldy\Url::href('reports', 'search', array('os_version_id' => $osVersionId, 'stack_trace_id' => $row['stack_trace_id'])))->title('Find reports with this os_version and package')->asButton()->size('xs')->color('red'); })->resultSet($resultSet)->handle(); }
public function searchAjax() { $validator = Validator::create(array('package_id' => 'required|integer', 'package_version_id' => 'required|integer', 'brand_id' => 'required|integer', 'os_version_id' => 'required|integer', 'product_id' => 'required|integer', 'model_id' => 'required|integer', 'country_id' => 'required|integer', 'provider_id' => 'required|integer', 'date_from' => null, 'date_to' => null, 'stack_trace_id' => 'required|integer')); if ($validator->failed()) { Application::throwError(400, 'Bad request'); } else { $params = $validator->getParamsObj(); $prms = array(); $query = new ResultSet(); $count = new Select(); $count->from('crash_archive', 'a')->field('COUNT(*)', 'total'); $query->from('crash_archive', 'a')->field('a.id')->field('a.created_at')->leftJoin('package p', 'p.id', '=', 'a.package_id')->field('p.name', 'package_name')->leftJoin('package_version pv', 'pv.id', '=', 'a.package_version_id')->field('pv.value', 'package_version')->leftJoin('brand b', 'b.id', '=', 'a.brand_id')->field('b.name', 'brand_name')->leftJoin('stack_trace st', 'st.id', '=', 'a.stack_trace_id')->field('st.summary', 'stack_trace')->leftJoin('version v', 'v.id', '=', 'a.os_version_id')->field('v.os', 'os_name')->field('v.name', 'os_version_name')->leftJoin('country c', 'c.id', '=', 'a.country_id')->field('c.country', 'country_name')->field('c.tld', 'tld'); if ($params->date_from !== null) { $dateFrom = new DateTime($params->date_from); $query->where('a.created_at', '>=', Misc::utcFromUser('Y-m-d H:i:s', $dateFrom)); $count->where('a.created_at', '>=', Misc::utcFromUser('Y-m-d H:i:s', $dateFrom)); $prms['date_from'] = $params->date_from; } if ($params->date_to !== null) { $dateTo = new DateTime($params->date_to); $query->where('a.created_at', '<', Misc::utcFromUser('Y-m-d H:i:s', $dateTo)); $count->where('a.created_at', '<', Misc::utcFromUser('Y-m-d H:i:s', $dateTo)); $prms['date_to'] = $params->date_to; } if ($params->package_id > 0) { $query->where('a.package_id', $params->package_id); $count->where('a.package_id', $params->package_id); $prms['package_id'] = $params->package_id; } if ($params->package_version_id > 0) { $query->where('a.package_version_id', $params->package_version_id); $count->where('a.package_version_id', $params->package_version_id); $prms['package_version_id'] = $params->package_version_id; } if ($params->brand_id > 0) { $query->where('a.brand_id', $params->brand_id); $count->where('a.brand_id', $params->brand_id); $prms['brand_id'] = $params->brand_id; } if ($params->os_version_id > 0) { $query->where('a.os_version_id', $params->os_version_id); $count->where('a.os_version_id', $params->os_version_id); $prms['os_version_id'] = $params->os_version_id; } if ($params->product_id > 0) { $query->where('a.product_id', $params->product_id); $count->where('a.product_id', $params->product_id); $prms['product_id'] = $params->product_id; } if ($params->model_id > 0) { $query->where('a.model_id', $params->model_id); $count->where('a.model_id', $params->model_id); $prms['model_id'] = $params->model_id; } if ($params->country_id > 0) { $query->where('a.country_id', $params->country_id); $count->where('a.country_id', $params->country_id); $prms['country_id'] = $params->country_id; } if ($params->provider_id > 0) { $query->where('a.provider_id', $params->provider_id); $count->where('a.provider_id', $params->provider_id); $prms['provider_id'] = $params->provider_id; } if ($params->stack_trace_id > 0) { $query->where('a.stack_trace_id', $params->stack_trace_id); $count->where('a.stack_trace_id', $params->stack_trace_id); $prms['stack_trace_id'] = $params->stack_trace_id; } if (sizeof($prms) == 1) { // speed up count(*) ... because we have that precalculated if (isset($prms['stack_trace_id'])) { $count = new Select(); $count->from('stack_trace')->field('total')->where('id', $prms['stack_trace_id']); } else { if (isset($prms['brand_id'])) { $count = new Select(); $count->from('brand')->field('total')->where('id', $prms['brand_id']); } else { if (isset($prms['package_id'])) { $count = new Select(); $count->from('package')->field('total')->where('id', $prms['package_id']); } else { if (isset($prms['package_version_id'])) { $count = new Select(); $count->from('package_version')->field('total')->where('id', $prms['package_version_id']); } else { if (isset($prms['os_version_id'])) { $count = new Select(); $count->from('version')->field('total')->where('id', $prms['os_version_id']); } else { if (isset($prms['country_id'])) { $count = new Select(); $count->from('country')->field('total')->where('id', $prms['country_id']); } else { if (isset($prms['provider_id'])) { $count = new Select(); $count->from('provider')->field('total')->where('id', $prms['provider_id']); } else { if (isset($prms['model_id'])) { $count = new Select(); $count->from('phone_model')->field('total')->where('id', $prms['model_id']); } } } } } } } } } $query->setCountQuery($count); return BootstrapUI::tableRemoteResponse()->column('country_name', function ($value, $row) { if ($row['tld'] !== null) { $country = \Koldy\Html::quotes($row['country_name']); return '<img src="' . \Koldy\Url::link("img/flag/{$row['tld']}.png") . '" title="' . $country . '" />'; } else { return ''; } })->column('created_at', function ($value, $row) { $user = \Koldy\Session::get('user'); return \Koldy\Timezone::date($user['timezone'], 'd.m.Y', strtotime($value)) . '<br/>' . \Koldy\Timezone::date($user['timezone'], 'H:i:s', strtotime($value)); })->column('package_name', function ($value, $row) { $html = $value; $html .= "<details><summary>View stack trace summary</summary><pre class=\"text-danger\">{$row['stack_trace']}</pre></details>"; return $html; })->column('package_version')->column('brand_name')->column('os_version_name', function ($value, $row) { return "{$row['os_name']} {$row['os_version_name']}"; })->column('country')->column('action', function ($value, $row) { return \Bootstrap::anchor(\Bootstrap::icon('eye-open'), \Koldy\Url::href('report', $row['id']))->title('View report')->size('xs'); })->resultSet($query)->handle(); } }
public function versionsAjax() { $packageId = (int) Input::post('package_id'); if ($packageId <= 0) { Application::throwError(400, 'Bad request'); } $resultSet = new Package\ResultSet\Version(); $resultSet->setPackageId($packageId, Input::post('last')); $timeFrom = $resultSet->getFromTime(); return BootstrapUI::tableRemoteResponse()->primaryKey('package_version_id')->column('total', function ($value, $row) { return \Bootstrap::label($value)->color('red'); })->column('name')->column('action', function ($value, $row) use($packageId, $timeFrom) { return \Bootstrap::anchor(\Bootstrap::icon('search'), \Koldy\Url::href('reports', 'search', array('package_version_id' => $row['package_version_id'], 'date_from' => \Misc::userDate('Y-m-d H:i:s', strtotime($timeFrom)))))->title('Find reports with this package version')->asButton()->size('xs')->color('red'); })->resultSet($resultSet)->handle(); }
/** * Get the list of users from database * @return \Bootstrap\Response\TableRemote */ public function usersAjax() { return BootstrapUI::tableRemoteResponse()->column('username')->column('first_name')->column('last_name')->column('action', function ($value, $row) { $edit = \Bootstrap::anchor(\Bootstrap::icon('edit'), \Koldy\Url::href('system', 'edit-user', array($row['id'])))->asButton()->size('xs')->color('blue'); $delete = \BootstrapUI::buttonRemote(\Bootstrap::icon('remove'))->url(\Koldy\Url::href('system', 'delete-user'))->param('id', $row['id'])->promptText("Do you really want to delete user {$row['username']}?")->size('xs')->color('red'); return "{$edit} {$delete}"; })->search(array('username', 'first_name', 'last_name'))->resultSet(User::resultSet())->handle(); }