diff --git a/app/Http/Controllers/UsersController.php b/app/Http/Controllers/UsersController.php index b7ab1a2c0..90a81904a 100644 --- a/app/Http/Controllers/UsersController.php +++ b/app/Http/Controllers/UsersController.php @@ -246,20 +246,34 @@ class UsersController extends Controller 'Achievement' ); + $perPage = [ + 'scoresBest' => 5, + 'scoresFirsts' => 5, + 'beatmapPlaycounts' => 5, + 'scoresRecent' => 5, + + 'favouriteBeatmapsets' => 6, + 'rankedAndApprovedBeatmapsets' => 6, + 'unrankedBeatmapsets' => 6, + 'graveyardBeatmapsets' => 2, + + 'recentlyReceivedKudosu' => 5, + ]; + $beatmapsets = [ - 'most_played' => $this->mostPlayedBeatmapsets($user), - 'ranked_and_approved' => $this->rankedAndApprovedBeatmapsets($user), - 'favourite' => $this->favouriteBeatmapsets($user), - 'unranked' => $this->unrankedBeatmapsets($user), - 'graveyard' => $this->graveyardBeatmapsets($user), + 'most_played' => $this->mostPlayedBeatmapsets($user, $perPage['beatmapPlaycounts'] + 1), + 'ranked_and_approved' => $this->rankedAndApprovedBeatmapsets($user, $perPage['rankedAndApprovedBeatmapsets'] + 1), + 'favourite' => $this->favouriteBeatmapsets($user, $perPage['favouriteBeatmapsets'] + 1), + 'unranked' => $this->unrankedBeatmapsets($user, $perPage['unrankedBeatmapsets'] + 1), + 'graveyard' => $this->graveyardBeatmapsets($user, $perPage['graveyardBeatmapsets'] + 1), ]; - $kudosu = $this->recentKudosu($user); + $kudosu = $this->recentKudosu($user, $perPage['recentlyReceivedKudosu'] + 1); $scores = [ - 'best' => $this->scoresBest($user, $currentMode), - 'firsts' => $this->scoresFirsts($user, $currentMode), - 'recent' => $this->scoresRecent($user, $currentMode), + 'best' => $this->scoresBest($user, $currentMode, $perPage['scoresBest'] + 1), + 'firsts' => $this->scoresFirsts($user, $currentMode, $perPage['scoresFirsts'] + 1), + 'recent' => $this->scoresRecent($user, $currentMode, $perPage['scoresRecent'] + 1), ]; $jsonChunks = [ @@ -271,6 +285,7 @@ class UsersController extends Controller 'scores' => $scores, 'statistics' => $statistics, 'user' => $userArray, + 'perPage' => $perPage, ]; return view('users.show', compact( @@ -318,7 +333,7 @@ class UsersController extends Controller } } - private function recentKudosu($user, $perPage = 6, $offset = 0) + private function recentKudosu($user, $perPage = 10, $offset = 0) { return json_collection( $user->receivedKudosu() @@ -331,7 +346,7 @@ class UsersController extends Controller ); } - private function mostPlayedBeatmapsets($user, $perPage = 6, $offset = 0) + private function mostPlayedBeatmapsets($user, $perPage = 10, $offset = 0) { $beatmapsets = $user->beatmapPlaycounts() ->with('beatmap', 'beatmap.beatmapset') @@ -347,7 +362,7 @@ class UsersController extends Controller return json_collection($beatmapsets, 'BeatmapPlaycount'); } - private function rankedAndApprovedBeatmapsets($user, $perPage = 7, $offset = 0) + private function rankedAndApprovedBeatmapsets($user, $perPage = 10, $offset = 0) { return json_collection( $user->profileBeatmapsetsRankedAndApproved() @@ -359,7 +374,7 @@ class UsersController extends Controller ); } - private function favouriteBeatmapsets($user, $perPage = 7, $offset = 0) + private function favouriteBeatmapsets($user, $perPage = 10, $offset = 0) { return json_collection( $user->profileBeatmapsetsFavourite() @@ -371,7 +386,7 @@ class UsersController extends Controller ); } - private function unrankedBeatmapsets($user, $perPage = 7, $offset = 0) + private function unrankedBeatmapsets($user, $perPage = 10, $offset = 0) { return json_collection( $user->profileBeatmapsetsUnranked() @@ -383,7 +398,7 @@ class UsersController extends Controller ); } - private function graveyardBeatmapsets($user, $perPage = 3, $offset = 0) + private function graveyardBeatmapsets($user, $perPage = 10, $offset = 0) { return json_collection( $user->profileBeatmapsetsGraveyard() @@ -395,7 +410,7 @@ class UsersController extends Controller ); } - private function scoresBest($user, $mode, $perPage = 6, $offset = 0) + private function scoresBest($user, $mode, $perPage = 10, $offset = 0) { $scores = $user->scoresBest($mode, true) ->orderBy('pp', 'DESC') @@ -406,7 +421,7 @@ class UsersController extends Controller return json_collection($scores, 'Score', ['beatmap', 'beatmapset', 'weight']); } - private function scoresFirsts($user, $mode, $perPage = 6, $offset = 0) + private function scoresFirsts($user, $mode, $perPage = 10, $offset = 0) { $scores = $user->scoresFirst($mode, true) ->orderBy('score_id', 'desc') @@ -420,7 +435,7 @@ class UsersController extends Controller return json_collection($scores, 'Score', ['beatmap', 'beatmapset']); } - private function scoresRecent($user, $mode, $perPage = 6, $offset = 0) + private function scoresRecent($user, $mode, $perPage = 10, $offset = 0) { $scores = $user->scores($mode, true) ->with('beatmap', 'beatmap.beatmapset') diff --git a/resources/assets/coffee/react/profile-page.coffee b/resources/assets/coffee/react/profile-page.coffee index 3e4654cc3..d7e8b07cd 100644 --- a/resources/assets/coffee/react/profile-page.coffee +++ b/resources/assets/coffee/react/profile-page.coffee @@ -31,3 +31,4 @@ reactTurbolinks.register 'profile-page', ProfilePage.Main, -> recentActivities: user.recentActivities recentlyReceivedKudosu: osu.parseJson('json-kudosu') achievements: _.keyBy osu.parseJson('json-achievements'), 'id' + perPage: osu.parseJson('json-perPage') diff --git a/resources/assets/coffee/react/profile-page/beatmaps.coffee b/resources/assets/coffee/react/profile-page/beatmaps.coffee index a52d847eb..1843297b8 100644 --- a/resources/assets/coffee/react/profile-page/beatmaps.coffee +++ b/resources/assets/coffee/react/profile-page/beatmaps.coffee @@ -21,6 +21,9 @@ el = React.createElement class ProfilePage.Beatmaps extends React.PureComponent render: => + perPageOverride = + graveyardBeatmapsets: 6 + allBeatmapsets = favouriteBeatmapsets: @props.favouriteBeatmapsets rankedAndApprovedBeatmapsets: @props.rankedAndApprovedBeatmapsets @@ -52,7 +55,7 @@ class ProfilePage.Beatmaps extends React.PureComponent collection: beatmapsets propertyName: section pagination: @props.pagination[section] - perPage: @props.perPage[section] + perPage: perPageOverride ? @props.perPage[section] route: laroute.route 'users.beatmapsets', user: @props.user.id type: sectionSnaked diff --git a/resources/assets/coffee/react/profile-page/main.coffee b/resources/assets/coffee/react/profile-page/main.coffee index ddfb060e2..a67f0c4f4 100644 --- a/resources/assets/coffee/react/profile-page/main.coffee +++ b/resources/assets/coffee/react/profile-page/main.coffee @@ -27,17 +27,6 @@ currentLocation = -> class ProfilePage.Main extends React.PureComponent - perPage: - scoresBest: 5 - scoresFirsts: 5 - beatmapPlaycounts: 5 - scoresRecent: 5 - favouriteBeatmapsets: 6 - rankedAndApprovedBeatmapsets: 6 - unrankedBeatmapsets: 6 - graveyardBeatmapsets: 2 - recentlyReceivedKudosu: 5 - constructor: (props) -> super props @@ -73,12 +62,12 @@ class ProfilePage.Main extends React.PureComponent recentlyReceivedKudosu: @props.recentlyReceivedKudosu showMorePagination: {} - for own elem, perPage of @perPage + for own elem, perPage of @props.perPage @state.showMorePagination[elem] ?= {} @state.showMorePagination[elem].hasMore = @state[elem].length > perPage - if @state[elem].length > perPage - @state[elem] = @state[elem][0...-1] + if @state.showMorePagination[elem].hasMore + @state[elem].pop() componentDidMount: => $.subscribe 'user:update.profilePage', @userUpdate @@ -170,7 +159,7 @@ class ProfilePage.Main extends React.PureComponent unrankedBeatmapsets: @state.user.unrankedBeatmapsetCount[0] graveyardBeatmapsets: @state.user.graveyardBeatmapsetCount[0] pagination: @state.showMorePagination - perPage: @perPage + perPage: @props.perPage component: ProfilePage.Beatmaps medals: