Skip to content

Commit

Permalink
Merge pull request #2 from Jsanchez93/develop
Browse files Browse the repository at this point in the history
support multiple apps
  • Loading branch information
Jsanchez93 committed Jun 20, 2018
2 parents 4cce4ea + a95b5a5 commit ee4cd56
Show file tree
Hide file tree
Showing 6 changed files with 104 additions and 85 deletions.
Binary file added cover.jpg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion resources/assets/css/crashes.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion resources/assets/css/crashes.styl
@@ -1,7 +1,7 @@
blanco = #ffffff
casi-negro = #333333

.show-crash
.show-crash-cont
background-color blanco
box-shadow 5px 5px 20px rgba(0, 0, 0, .1)
padding 20px 15px
Expand Down
147 changes: 82 additions & 65 deletions resources/views/browse.blade.php
Expand Up @@ -11,61 +11,73 @@
@stop

@section('css')
<style type="text/css">.show-crash {background-color: #fff;box-shadow: 5px 5px 20px rgba(0,0,0,0.1);padding: 20px 15px;}.show-crash h2 {border-bottom: 1px solid rgba(51,51,51,0.5);margin-bottom: 25px;text-align: center;}.show-crash h2 span {background-color: #fff;font-size: 0.6em;padding: 0 5px;position: relative;top: 12px;left: 0px;}.show-crash h3 {font-size: 2em;margin: 0 0 20px 0;}.show-crash p span:nth-child(2) {color: #f00;}.show-crash p span:nth-child(1) {font-size: 1.1em;font-weight: 400;}</style>
<style type="text/css">.show-crash-cont{background-color:#fff;box-shadow:5px 5px 20px rgba(0,0,0,0.1);padding:20px 15px;}.show-crash-cont h2{border-bottom:1px solid rgba(51,51,51,0.5);margin-bottom:25px;text-align:center;}.show-crash-cont h2 span{background-color:#fff;font-size:.6em;padding:0 5px;position:relative;top:12px;left:0}.show-crash-cont h3{font-size:2em;margin:0 0 20px 0}.show-crash-cont p span:nth-child(2){color:#f00}.show-crash-cont p span:nth-child(1){font-size:1.1em;font-weight:400}</style>
@endsection

@section('content')
<div class="page-content container-fluid" id="voyagerBreadEditAdd">
<div class="row">


<div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">
<div class="table-responsive">
<table id="dataTable" class="table table-hover">
<thead>
<tr>
<th>App version</th>
<th>Impacted users</th>
<th>Reason</th>
<th>Last occurrence</th>
<td></td>
</tr>
</thead>
<tbody>
@foreach ($data->crash_groups as $info)
<tr>
<td class="text-center">{{ $info->app_version }}</td>
<td class="text-center">{{ $info->impacted_users }}</td>
<td>{{ $info->crash_reason }}</td>
<td>{{ \Carbon\Carbon::parse($info->last_occurrence)->format('d/m/Y - h:i:sA') }}</td>
<td><a data-id='{{ $info->crash_group_id }}' href="#!" class="btn-sm btn-primary view_report">More</a></td>
</tr>
@endforeach
</tbody>
</table>

@foreach($datas as $key => $data)
<div class="panel panel-primary panel-bordered">
<div class="panel-heading">
<h3 class="panel-title panel-icon"><i class="voyager-phone"></i> {{$key}}</h3>
<div class="panel-actions">
<a class="panel-action panel-collapsed voyager-angle-down" data-toggle="panel-collapse" aria-hidden="true"></a>
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">
<div class="show-crash hide">
<h3>General</h3>
<div class="general">
<p><span>App version: </span><span class="appG"></span></p>
<p><span>Build: </span><span class="buildG"></span></p>
<p><span>Count: </span><span class="countG"></span></p>
<p><span>Impacted users: </span><span class="impactedG"></span></p>
<p><span>First occurrence: </span><span class="firstG"></span></p>
<p><span>Last occurrence: </span><span class="lastG"></span></p>
<div class="panel-body collapse">
<div class="row">
<div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">
<div class="table-responsive">
<table id="dataTable-{{$key}}" class="table table-hover">
<thead>
<tr>
<th>App version</th>
<th>Impacted users</th>
<th>Reason</th>
<th>Last occurrence</th>
<td></td>
</tr>
</thead>
<tbody>
@foreach ($data->crash_groups as $info)
<tr>
<td class="text-center">{{ $info->app_version }}</td>
<td class="text-center">{{ $info->impacted_users }}</td>
<td>{{ $info->crash_reason }}</td>
<td>{{ \Carbon\Carbon::parse($info->last_occurrence)->format('d/m/Y - h:i:sA') }}</td>
<td><a data-id='{{ $info->crash_group_id }}' href="#!" class="btn-sm btn-primary view_report-{{$key}}">More</a></td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
<h2><span>Reasons (devs)</span></h2>
<div class="reasons">
<p><span class="fatalR"></span></p>
<p><span>Crash reason: </span><span class="crashR"></span></p>
<div class="reasons_frame"></div>
<div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">
<div class="show-crash-cont show-crash-{{$key}} hide">
<h3>General</h3>
<div class="general">
<p><span>App version: </span><span class="appG-{{$key}}"></span></p>
<p><span>Build: </span><span class="buildG-{{$key}}"></span></p>
<p><span>Count: </span><span class="countG-{{$key}}"></span></p>
<p><span>Impacted users: </span><span class="impactedG-{{$key}}"></span></p>
<p><span>First occurrence: </span><span class="firstG-{{$key}}"></span></p>
<p><span>Last occurrence: </span><span class="lastG-{{$key}}"></span></p>
</div>
<h2><span>Reasons (devs)</span></h2>
<div class="reasons">
<p><span class="fatalR-{{$key}}"></span></p>
<p><span>Crash reason: </span><span class="crashR-{{$key}}"></span></p>
<div class="reasons_frame-{{$key}}"></div>
</div>

</div>
</div>

</div>
</div><!-- .row -->
</div>
</div><!-- .row -->
</div>
@endforeach

</div><!-- .page-content -->

@stop
Expand All @@ -77,32 +89,38 @@

<!-- DataTables -->
<script>
$(document).ready(function () {
var table = $('#dataTable').DataTable({!! json_encode(
$(document).ready(function () {
var data = [];
@foreach($datas as $key => $data)
$('#dataTable-{{$key}}').DataTable({!! json_encode(
array_merge([
"order" => [],
"language" => __('voyager.datatable'),
],
config('voyager.dashboard.data_tables', []))
, true) !!});
var data = {};
@foreach ($data->crash_groups as $info)
data['{{ $info->crash_group_id }}'] = {!! json_encode($info, JSON_HEX_QUOT) !!};
@endforeach
$(".view_report").on('click', function(event){
@endforeach
$("#voyagerBreadEditAdd").on('click', ".view_report-{{$key}}",function(event){
event.preventDefault();
var info = data[$(this).data("id")];
$('.appG').text( info.app_version );
$('.buildG').text( info.build );
$('.countG').text( info.count );
$('.impactedG').text( info.impacted_users );
$('.firstG').text( info.first_occurrence );
$('.lastG').text( info.last_occurrence );
$('.fatalR').text( info.fatal?'Fatal Error':'Non-fatal error' );
$('.crashR').text( info.crash_reason );
$(".reasons_frame").empty();
$('.appG-{{$key}}').text( info.app_version );
$('.buildG-{{$key}}').text( info.build );
$('.countG-{{$key}}').text( info.count );
$('.impactedG-{{$key}}').text( info.impacted_users );
$('.firstG-{{$key}}').text( info.first_occurrence );
$('.lastG-{{$key}}').text( info.last_occurrence );
$('.fatalR-{{$key}}').text( info.fatal?'Fatal Error':'Non-fatal error' );
$('.crashR-{{$key}}').text( info.crash_reason );
$(".reasons_frame-{{$key}}").empty();
for(var k in info.reason_frame) {
if(k!='code_formatted'){
var p = $("<p></p>");
Expand All @@ -113,17 +131,16 @@
span.text(info.reason_frame[k]);
p.append(span);
$(".reasons_frame").append(p);
$(".reasons_frame-{{$key}}").append(p);
}
}
$(".show-crash").removeClass('hide');
$(".show-crash-{{$key}}").removeClass('hide');
});
@endforeach
});
</script>
Expand Down
34 changes: 18 additions & 16 deletions src/Http/Controllers/AppcenterErrorController.php
Expand Up @@ -8,29 +8,31 @@

class AppcenterErrorController extends \App\Http\Controllers\Controller
{
public function browse(Request $request){

public function browse(Request $request){
$owner = env('APPCENTER_OWNER_APP', null);
$appName = env('APPCENTER_APP_NAME', null);
$apiToken = env('APPCENTER_API_TOKEN', null);
$lastOccurrence_from = Carbon::createFromFormat('d-m-Y', env('APPCENTER_LAST_OCCURRENCE_FROM', '01-01-2000'))->toAtomString();
if(!$owner || !$appName || !$apiToken){
abort(404);
abort(403, 'Appcenter credentials not provided.');
}


$apps = explode(',', $appName);
$datas = array();

$client = new Client(['base_uri' => 'https://api.appcenter.ms/v0.1/']);
$response = $client->request('GET', "apps/$owner/$appName/crash_groups", [
'headers' => [
'Accept' => 'application/json',
'X-API-Token' => $apiToken,
'Content-Type' => 'application/json'
],
'query' => ['last_occurrence_from' => $lastOccurrence_from]
]);
$data = json_decode($response->getBody());
foreach ($apps as $value) {
$client = new Client(['base_uri' => 'https://api.appcenter.ms/v0.1/']);
$response = $client->request('GET', "apps/$owner/$value/crash_groups", [
'headers' => [
'Accept' => 'application/json',
'X-API-Token' => $apiToken,
'Content-Type' => 'application/json'
],
'query' => ['last_occurrence_from' => $lastOccurrence_from]
]);
$datas[$value] = json_decode($response->getBody());
}

return view('crashes::browse', compact('data'));
return view('crashes::browse', compact('datas'));
}
}
}
4 changes: 2 additions & 2 deletions src/VoyagerAppcenterCrashesServiceProvider.php
Expand Up @@ -48,8 +48,8 @@ public function addAppcenterErrorMenuItem(Menu $menu){

protected function ensurePermissionExist(){
$permissions = [
Permission::firstOrNew(['key' => 'browse_polls', 'table_name' => 'crashes']),
Permission::firstOrNew(['key' => 'read_polls', 'table_name' => 'crashes']),
Permission::firstOrNew(['key' => 'browse_crashes', 'table_name' => 'crashes']),
Permission::firstOrNew(['key' => 'read_crashes', 'table_name' => 'crashes']),
];

foreach($permissions as $permission){
Expand Down

0 comments on commit ee4cd56

Please sign in to comment.