forked from projects/thebadspace
simplified pagination, cleaned up front controller
Adding total actions count to location data has made it possible to simplify backend data queries, so the custom pagination was optimized and location repositories have been cleaned up. the front end controller has been cleaned up as well, which has resulted in the appropriate template being polished up as well.
This commit is contained in:
parent
fdaf90b89f
commit
2bcb887d19
4 changed files with 36 additions and 74 deletions
|
@ -17,33 +17,24 @@ class FrontIndexController extends Controller
|
|||
|
||||
public function start()
|
||||
{
|
||||
$list = $this->locationRepository->getRecent();
|
||||
$latest_date = $list[0]->updated_at->format('Y M d');
|
||||
return view('front.index', [
|
||||
'count' => count($list),
|
||||
'count' => count($this->locationRepository->getActiveLocations()),
|
||||
'sources' => count(Source::where("active", true)->get()),
|
||||
'recent' => $list,
|
||||
'latest_date' => $latest_date,
|
||||
'recent' => $this->locationRepository->getRecent(),
|
||||
'latest_date' => $this->locationRepository->getRecent()[0]->updated_at->format('Y M d'),
|
||||
'title' => "The Bad Space"
|
||||
]);
|
||||
}
|
||||
|
||||
public function indexSearch(Request $request)
|
||||
{
|
||||
// this grabs the search results from the db
|
||||
$results = $this->locationRepository->search($request);
|
||||
|
||||
//this gets recent updates to display under search results
|
||||
$list = $this->locationRepository->getRecent();
|
||||
$latest_date = $list[0]->updated_at->format('Y M d');
|
||||
return view('front.index', [
|
||||
'count' => count($list),
|
||||
'count' => count($this->locationRepository->getActiveLocations()),
|
||||
'sources' => count(Source::where("active", true)->get()),
|
||||
'recent' => $list,
|
||||
'results' => $results,
|
||||
'recent' => $list,
|
||||
'recent' => $this->locationRepository->getRecent(),
|
||||
'results' => $this->locationRepository->search($request),
|
||||
'terms' => $request->index_search,
|
||||
'latest_date' => $latest_date,
|
||||
'latest_date' => $this->locationRepository->getRecent()[0]->updated_at->format('Y M d'),
|
||||
'title' => "Search Results",
|
||||
]);
|
||||
}
|
||||
|
|
|
@ -129,6 +129,15 @@ class LocationController extends Controller
|
|||
}
|
||||
}
|
||||
|
||||
//TODO: maintenance script to set locations to inactive if they haven't been updated
|
||||
// over 90 days
|
||||
|
||||
//$diff=date_diff($location->updated_at, new DateTime());
|
||||
//$days = $diff->format("%R%a days")
|
||||
|
||||
//$interval = $location->updated_at->diff(new DateTime());
|
||||
//$days = $interval->format("%a");
|
||||
|
||||
//get all locations and sort which are present in unified or not
|
||||
/*
|
||||
$sorted = [];
|
||||
|
|
|
@ -38,54 +38,25 @@ class LocationRepository
|
|||
return $this->model::where("uuid", $uuid)->first();
|
||||
}
|
||||
|
||||
public function getActiveLocations()
|
||||
{
|
||||
return $this->model::where("active", true)->where('actions_count', '>=', 2)->get();
|
||||
}
|
||||
|
||||
public function getRecent()
|
||||
{
|
||||
$locations = $this->model::where("active", true)->orderByDesc('updated_at')->get();
|
||||
$list = [];
|
||||
foreach ($locations as $location) {
|
||||
if (($location->block_count + $location->silence_count) >= 2) {
|
||||
array_push($list, $location);
|
||||
}
|
||||
}
|
||||
return $list;
|
||||
return $locations = $this->model::where("active", true)->where('actions_count', '>=', 2)
|
||||
->orderByDesc('updated_at')->limit(10)->get();
|
||||
}
|
||||
|
||||
public function getPage($pageNum)
|
||||
{
|
||||
$locations = $this->model::where("active", true)->get();
|
||||
$active = [];
|
||||
foreach ($locations as $location) {
|
||||
if (($location->block_count + $location->silence_count) >= 2) {
|
||||
array_push($active, $location);
|
||||
}
|
||||
}
|
||||
|
||||
$pages = [];
|
||||
|
||||
if (count($active) != 0) {
|
||||
if (count($active) < $this->limit) {
|
||||
$this->limit = count($active) - 1;
|
||||
}
|
||||
$range = $pageNum * $this->limit - $this->limit;
|
||||
|
||||
if ($range != 0) {
|
||||
$range = $range + 1;
|
||||
}
|
||||
for ($i = 0; $i <= $this->limit; ++$i) {
|
||||
if (isset($active[$i + $range])) {
|
||||
array_push($pages, $active[$i + $range]);
|
||||
} else {
|
||||
// chill out
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$active = $this->model::where("active", true)->where('actions_count', '>=', 2)->get();
|
||||
$locations = $this->model::where("active", true)->where('actions_count', '>=', 2)
|
||||
->limit($this->limit)->offset($range)->orderBy('id', 'asc')->get();
|
||||
$pageCount = ceil(count($active) / $this->limit);
|
||||
|
||||
if ($range != 0) {
|
||||
$range = $range + 1;
|
||||
}
|
||||
|
||||
$next = $pageNum + 1;
|
||||
if ($next > $pageCount) {
|
||||
$next = 1;
|
||||
|
@ -97,6 +68,6 @@ class LocationRepository
|
|||
$prev = $pageCount;
|
||||
}
|
||||
|
||||
return $result = [$pages, $pageCount, $prev, $next];
|
||||
return $result = [$locations, $pageCount, $prev, $next];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,12 +17,8 @@
|
|||
<article>
|
||||
<h2>Found {{count($results)}} results for {{$terms}}</h2>
|
||||
@foreach($results as $item)
|
||||
@php
|
||||
$action = $item->block_count + $item->silence_count;
|
||||
$rating = ($action / $sources)*100;
|
||||
@endphp
|
||||
<a class="list-link" role="listitem" href="/location/{{$item->uuid}}">
|
||||
<span class="item-rating">{{$rating}}%</span>
|
||||
<span class="item-rating">{{($item->actions_count / $sources)*100}}%</span>
|
||||
<label class="item-name">{{$item->name}}</label>
|
||||
<div class="item-silence">
|
||||
<img class="item-icon" src="/assets/images/global/status-silence.svg" title="silenced" />
|
||||
|
@ -40,24 +36,20 @@
|
|||
<section class="index-meta">
|
||||
<article>
|
||||
<h2>Recent Updates</h2>
|
||||
@for($i = 0; $i < 10; $i++)
|
||||
@php
|
||||
$action = $recent[$i]->block_count + $recent[$i]->silence_count;
|
||||
$rating = ($action / $sources)*100;
|
||||
@endphp
|
||||
<a class="list-link" role="listitem" href="/location/{{$recent[$i]->uuid}}">
|
||||
<span class="item-rating">{{$rating}}%</span>
|
||||
<label class="item-name">{{$recent[$i]->name}}</label>
|
||||
@foreach($recent as $item)
|
||||
<a class="list-link" role="listitem" href="/location/{{$item->uuid}}">
|
||||
<span class="item-rating">{{($item->actions_count / $sources)*100}}%</span>
|
||||
<label class="item-name">{{$item->name}}</label>
|
||||
<div class="item-silence">
|
||||
<img class="item-icon" src="/assets/images/global/status-silence.svg" title="silenced" />
|
||||
{{$recent[$i]->silence_count}}
|
||||
{{$item->silence_count}}
|
||||
</div>
|
||||
<div class="item-block">
|
||||
<img class="item-icon" src="/assets/images/global/status-suspend.svg" title="suspended" />
|
||||
{{$recent[$i]->block_count}}
|
||||
{{$item->block_count}}
|
||||
</div>
|
||||
</a>
|
||||
@endfor
|
||||
@endforeach
|
||||
<h2>Info</h2>
|
||||
<div class="index-meta">
|
||||
<label>Locations Tracked</label>
|
||||
|
@ -67,7 +59,6 @@
|
|||
<label>Latest Update</label>
|
||||
<label>{{$latest_date}}</label>
|
||||
</div>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
@endsection
|
Loading…
Reference in a new issue