add formatDate and convertBytes functions
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
export function convertBytes(bytes: number) {
|
||||
if (!bytes) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
const units = ['B', 'KB', 'MB', 'GB', 'TB'];
|
||||
|
||||
if (bytes === 0) return '0 B';
|
||||
|
||||
let i = 0;
|
||||
let value = bytes;
|
||||
|
||||
while (value >= 1024 && i < units.length - 1) {
|
||||
value /= 1024;
|
||||
i++;
|
||||
}
|
||||
|
||||
return `${value.toFixed(1)} ${units[i]}`;
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
// Форматирование даты из timestamp
|
||||
export const formatDate = (timestamp: number | string) => {
|
||||
if (!timestamp) {
|
||||
return '---'
|
||||
}
|
||||
|
||||
const date = new Date(timestamp);
|
||||
const day = date.getDate().toString().padStart(2, '0');
|
||||
const month = (date.getMonth() + 1).toString().padStart(2, '0');
|
||||
const year = date.getFullYear();
|
||||
|
||||
return `${day}.${month}.${year}`;
|
||||
};
|
||||
|
||||
export const formatDateTime = (timestamp: number | string) => {
|
||||
if (!timestamp) {
|
||||
return '---'
|
||||
}
|
||||
|
||||
const date = new Date(timestamp);
|
||||
const hours = date.getHours().toString().padStart(2, '0');
|
||||
const minutes = date.getMinutes().toString().padStart(2, '0');
|
||||
|
||||
return `${hours}:${minutes}`;
|
||||
};
|
||||
@@ -16,6 +16,21 @@ export default function GeneralInfoUsers() {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="stat-card">
|
||||
<div className="stat-card-group">
|
||||
<span className="stat-card-title">Новых за 30 дней</span>
|
||||
<div className="stat-card-value">0</div>
|
||||
</div>
|
||||
<div className="stat-card-group">
|
||||
<span className="stat-card-title">Новых за предыдущие 30 дней</span>
|
||||
<div className="stat-card-value">0</div>
|
||||
</div>
|
||||
<div className="stat-card-group">
|
||||
<span className="stat-card-title">Дельта</span>
|
||||
<div className="stat-card-value">0</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="stat-card">
|
||||
<div className="stat-card-group">
|
||||
<span className="stat-card-title">Новых за текущий месяц</span>
|
||||
@@ -25,9 +40,6 @@ export default function GeneralInfoUsers() {
|
||||
<span className="stat-card-title">Новых за прошлый месяц</span>
|
||||
<div className="stat-card-value">0</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="stat-card">
|
||||
<div className="stat-card-group">
|
||||
<span className="stat-card-title">Дельта</span>
|
||||
<div className="stat-card-value">0</div>
|
||||
|
||||
@@ -14,6 +14,7 @@ export default function UsersTop() {
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<div className="users-top-user">Сидоров Станислав Андреевич</div>
|
||||
@@ -22,6 +23,7 @@ export default function UsersTop() {
|
||||
<td>0</td>
|
||||
<td>0 MB</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<div className="users-top-user">Валерка</div>
|
||||
@@ -30,6 +32,7 @@ export default function UsersTop() {
|
||||
<td>0</td>
|
||||
<td>0 MB</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<div className="users-top-user">Игорь Викторович</div>
|
||||
@@ -38,6 +41,7 @@ export default function UsersTop() {
|
||||
<td>0</td>
|
||||
<td>0 MB</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<div className="users-top-user">Синицын Игорь Владимирович</div>
|
||||
@@ -46,6 +50,16 @@ export default function UsersTop() {
|
||||
<td>0</td>
|
||||
<td>0 MB</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<div className="users-top-user">test test</div>
|
||||
<div className="users-top-mail">test@no-copy.ru</div>
|
||||
</td>
|
||||
<td>0</td>
|
||||
<td>0 MB</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user