diff --git a/app/Http/Controllers/AdminController.php b/app/Http/Controllers/AdminController.php index 95bfbc1b..0714e64b 100644 --- a/app/Http/Controllers/AdminController.php +++ b/app/Http/Controllers/AdminController.php @@ -165,15 +165,25 @@ class AdminController extends Controller return view('admin.users'); } - public function getUserData() + public function getUserData(Request $request) { - $users = User::select(['uid', 'email', 'nickname', 'score', 'permission', 'register_at']); + $users = collect(); + + if ($request->has('uid')) { + $users = User::select(['uid', 'email', 'nickname', 'score', 'permission', 'register_at']) + ->where('uid', intval($request->input('uid'))); + } else { + $users = User::select(['uid', 'email', 'nickname', 'score', 'permission', 'register_at']); + } return Datatables::of($users)->editColumn('email', function ($user) { return $user->email ?: 'EMPTY'; }) ->setRowId('uid') ->addColumn('operations', app('user.current')->getPermission()) + ->addColumn('players_count', function ($user) { + return Player::where('uid', $user->uid)->count(); + }) ->make(true); } @@ -188,9 +198,15 @@ class AdminController extends Controller return view('admin.players'); } - public function getPlayerData() + public function getPlayerData(Request $request) { - $players = Player::select(['pid', 'uid', 'player_name', 'preference', 'tid_steve', 'tid_alex', 'tid_cape', 'last_modified']); + $players = collect(); + if ($request->has('uid')) { + $players = Player::select(['pid', 'uid', 'player_name', 'preference', 'tid_steve', 'tid_alex', 'tid_cape', 'last_modified']) + ->where('uid', intval($request->input('uid'))); + } else { + $players = Player::select(['pid', 'uid', 'player_name', 'preference', 'tid_steve', 'tid_alex', 'tid_cape', 'last_modified']); + } return Datatables::of($players)->setRowId('pid')->make(true); } diff --git a/resources/assets/src/scripts/admin.js b/resources/assets/src/scripts/admin.js index 7de0e5b0..2c244b46 100644 --- a/resources/assets/src/scripts/admin.js +++ b/resources/assets/src/scripts/admin.js @@ -2,7 +2,7 @@ * @Author: printempw * @Date: 2016-07-22 14:02:44 * @Last Modified by: g-plane - * @Last Modified time: 2017-04-27 08:46:33 + * @Last Modified time: 2017-04-27 17:58:47 */ 'use strict'; @@ -25,11 +25,11 @@ $(document).ready(function() { serverSide: true }); - if (window.location.href == url('admin/users')) { + if (window.location.href.indexOf(url('admin/users')) >= 0) { initUsersTable(); - } else if (window.location.href == url('admin/players')) { + } else if (window.location.href.indexOf(url('admin/players')) >= 0) { initPlayersTable(); - } else if (window.location.href == url('admin/plugins/manage')) { + } else if (window.location.href.indexOf(url('admin/plugins/manage')) >= 0) { initPluginsTable(); } }); @@ -552,8 +552,12 @@ function downloadUpdates() { } function initUsersTable() { + let dataUrl = url('admin/user-data'); + if (getQueryString('uid')) { + dataUrl += '?uid=' + getQueryString('uid'); + } $('#user-table').DataTable({ - ajax: url('admin/user-data'), + ajax: dataUrl, scrollY: ($('.content-wrapper').height() - $('.content-header').outerHeight()) * 0.7, rowCallback: (row, data) => { $(row).attr('id', `user-${data.uid}`); @@ -581,6 +585,16 @@ function initUsersTable() { }, { targets: 4, + data: 'players_count', + render: (data, type, row) => { + return `${data}`; + } + }, + { + targets: 5, data: 'permission', render: data => { switch (data) { @@ -596,11 +610,11 @@ function initUsersTable() { } }, { - targets: 5, + targets: 6, data: 'register_at' }, { - targets: 6, + targets: 7, data: 'operations', searchable: false, orderable: false, @@ -662,8 +676,12 @@ function initUsersTable() { } function initPlayersTable() { + let dataUrl = url('admin/player-data'); + if (getQueryString('uid')) { + dataUrl += '?uid=' + getQueryString('uid'); + } $('#player-table').DataTable({ - ajax: url('admin/player-data'), + ajax: dataUrl, scrollY: ($('.content-wrapper').height() - $('.content-header').outerHeight()) * 0.7, columnDefs: [ { @@ -673,7 +691,13 @@ function initPlayersTable() { }, { targets: 1, - data: 'uid' + data: 'uid', + render: (data, type, row) => { + return `${data}`; + } }, { targets: 2, diff --git a/resources/lang/en/admin.yml b/resources/lang/en/admin.yml index 5a09158b..4c6256cc 100644 --- a/resources/lang/en/admin.yml +++ b/resources/lang/en/admin.yml @@ -6,6 +6,8 @@ index: overview: Overview users: + players-count: + title: Players Count status: title: Status normal: Normal diff --git a/resources/lang/en/locale.js b/resources/lang/en/locale.js index a9195cef..70f0533f 100644 --- a/resources/lang/en/locale.js +++ b/resources/lang/en/locale.js @@ -119,6 +119,8 @@ newUserPassword: 'Please enter the new password:', deleteUserNotice: 'Are you sure to delete this user? It\' permanent.', scoreTip: 'Press ENTER to submit new score', + doubleClickToSeeUser: 'Double click to see info of this user', + doubleClickToSeePlayers: 'Double click to see his/her players', // Status banned: 'Banned', diff --git a/resources/lang/zh_CN/admin.yml b/resources/lang/zh_CN/admin.yml index 0896c105..a968d37e 100644 --- a/resources/lang/zh_CN/admin.yml +++ b/resources/lang/zh_CN/admin.yml @@ -6,6 +6,8 @@ index: overview: 概览 users: + players-count: + title: 拥有角色数 status: title: 状态 normal: 普通用户 diff --git a/resources/lang/zh_CN/locale.js b/resources/lang/zh_CN/locale.js index 0bbd74b0..49f718dd 100644 --- a/resources/lang/zh_CN/locale.js +++ b/resources/lang/zh_CN/locale.js @@ -119,6 +119,8 @@ newUserPassword: '请输入新密码:', deleteUserNotice: '真的要删除此用户吗?此操作不可恢复', scoreTip: '输入修改后的积分,回车提交', + doubleClickToSeeUser: '双击可查看该用户的信息', + doubleClickToSeePlayers: '双击可查看该用户的角色', // Status banned: '封禁', diff --git a/resources/views/admin/users.tpl b/resources/views/admin/users.tpl index d9006d0e..8c1bc779 100644 --- a/resources/views/admin/users.tpl +++ b/resources/views/admin/users.tpl @@ -24,6 +24,7 @@