mirror of
https://github.com/lnbits/lnbits-legend.git
synced 2025-02-26 15:42:30 +01:00
* feat: add shortcuts for insert_query and update_query into `Database` example: await db.insert("table_name", base_model) * remove where from argument * chore: code clean-up * extension manager * lnbits-qrcode components * parse date from dict * refactor: make `settings` a fixture * chore: remove verbose key names * fix: time column * fix: cast balance to `int` * extension toggle vue3 * vue3 @input migration * fix: payment extra and payment hash * fix dynamic fields and ext db migration * remove shadow on cards in dark theme * screwed up and made more css pushes to this branch * attempt to make chip component in settings dynamic fields * dynamic chips * qrscanner * clean init admin settings * make get_user better * add dbversion model * remove update_payment_status/extra/details * traces for value and assertion errors * refactor services * add PaymentFiatAmount * return Payment on api endpoints * rename to get_user_from_account * refactor: just refactor (#2740) * rc5 * Fix db cache (#2741) * [refactor] split services.py (#2742) * refactor: spit `core.py` (#2743) * refactor: make QR more customizable * fix: print.html * fix: qrcode options * fix: white shadow on dark theme * fix: datetime wasnt parsed in dict_to_model * add timezone for conversion * only parse timestamp for sqlite, postgres does it * log internal payment success * fix: export wallet to phone QR * Adding a customisable border theme, like gradient (#2746) * fixed mobile scan btn * fix test websocket * fix get_payments tests * dict_to_model skip none values * preimage none instead of defaulting to 0000... * fixup test real invoice tests * fixed pheonixd for wss * fix nodemanager test settings * fix lnbits funding * only insert extension when they dont exist --------- Co-authored-by: Vlad Stan <stan.v.vlad@gmail.com> Co-authored-by: Tiago Vasconcelos <talvasconcelos@gmail.com> Co-authored-by: Arc <ben@arc.wales> Co-authored-by: Arc <33088785+arcbtc@users.noreply.github.com>
132 lines
4.4 KiB
HTML
132 lines
4.4 KiB
HTML
{% extends "base.html" %} {% from "macros.jinja" import window_vars with context
|
|
%} {% block page %} {% include "users/_walletDialog.html" %} {% include
|
|
"users/_topupDialog.html" %} {% include "users/_createUserDialog.html" %} {%
|
|
include "users/_createWalletDialog.html" %}
|
|
|
|
<h3 class="text-subtitle q-my-none" v-text="$t('users')"></h3>
|
|
|
|
<div class="row q-col-gutter-md justify-center">
|
|
<div class="col q-gutter-y-md" style="width: 300px">
|
|
<div style="width: 100%; max-width: 2000px">
|
|
<canvas ref="chart1"></canvas>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row q-col-gutter-md justify-center">
|
|
<div class="col q-gutter-y-md">
|
|
<q-card>
|
|
<q-card-section>
|
|
<div class="row items-center no-wrap q-mb-sm">
|
|
<q-btn :label="$t('topup')" @click="topupDialog.show = true">
|
|
<q-tooltip
|
|
>{%raw%}{{ $t('add_funds_tooltip') }}{%endraw%}</q-tooltip
|
|
>
|
|
</q-btn>
|
|
</div>
|
|
<q-table
|
|
row-key="id"
|
|
:rows="users"
|
|
:columns="usersTable.columns"
|
|
v-model:pagination="usersTable.pagination"
|
|
:no-data-label="$t('no_users')"
|
|
:filter="usersTable.search"
|
|
:loading="usersTable.loading"
|
|
@request="fetchUsers"
|
|
>
|
|
<template v-slot:header="props">
|
|
<q-tr :props="props">
|
|
<q-th auto-width></q-th>
|
|
<q-th
|
|
v-for="col in props.cols"
|
|
v-text="col.label"
|
|
:key="col.name"
|
|
:props="props"
|
|
></q-th>
|
|
</q-tr>
|
|
</template>
|
|
<template v-slot:body="props">
|
|
<q-tr auto-width :props="props">
|
|
<q-td>
|
|
<q-btn
|
|
round
|
|
icon="list"
|
|
size="sm"
|
|
color="secondary"
|
|
@click="fetchWallets(props.row.id)"
|
|
>
|
|
<q-tooltip>Show Wallets</q-tooltip>
|
|
</q-btn>
|
|
<q-btn
|
|
round
|
|
icon="content_copy"
|
|
size="sm"
|
|
color="primary"
|
|
class="q-ml-xs"
|
|
@click="copyText(props.row.id)"
|
|
>
|
|
<q-tooltip>Copy User ID</q-tooltip>
|
|
</q-btn>
|
|
<q-btn
|
|
round
|
|
v-if="!props.row.is_super_user"
|
|
icon="build"
|
|
size="sm"
|
|
:color="props.row.is_admin ? 'primary' : 'grey'"
|
|
class="q-ml-xs"
|
|
@click="toggleAdmin(props.row.id)"
|
|
>
|
|
<q-tooltip>Toggle Admin</q-tooltip>
|
|
</q-btn>
|
|
<q-btn
|
|
round
|
|
v-if="props.row.is_super_user"
|
|
icon="build"
|
|
size="sm"
|
|
color="positive"
|
|
class="q-ml-xs"
|
|
>
|
|
<q-tooltip>Super User</q-tooltip>
|
|
</q-btn>
|
|
<q-btn
|
|
round
|
|
icon="refresh"
|
|
size="sm"
|
|
color="secondary"
|
|
@click="resetPassword(props.row.id)"
|
|
>
|
|
<q-tooltip>Generate and copy password reset url</q-tooltip>
|
|
</q-btn>
|
|
<q-btn
|
|
round
|
|
icon="delete"
|
|
size="sm"
|
|
color="negative"
|
|
class="q-ml-xs"
|
|
@click="deleteUser(props.row.id, props)"
|
|
>
|
|
<q-tooltip>Delete User</q-tooltip>
|
|
</q-btn>
|
|
</q-td>
|
|
<q-td
|
|
auto-width
|
|
v-text="formatSat(props.row.balance_msat)"
|
|
></q-td>
|
|
<q-td auto-width v-text="props.row.wallet_count"></q-td>
|
|
<q-td auto-width v-text="props.row.transaction_count"></q-td>
|
|
<q-td auto-width v-text="props.row.username"></q-td>
|
|
<q-td auto-width v-text="props.row.email"></q-td>
|
|
<q-td
|
|
auto-width
|
|
v-text="formatDate(props.row.last_payment)"
|
|
></q-td>
|
|
</q-tr>
|
|
</template>
|
|
</q-table>
|
|
</q-card-section>
|
|
</q-card>
|
|
</div>
|
|
</div>
|
|
|
|
{% endblock %} {% block scripts %} {{ window_vars(user) }}
|
|
<script src="{{ static_url_for('static', 'js/users.js') }}"></script>
|
|
{% endblock %}
|