shadowsocks-manager
Version:
A shadowsocks manager tool for multi user and traffic control.
120 lines (119 loc) • 6.2 kB
HTML
<div layout="row" layout-wrap>
<div flex-xs="100" flex-sm="100" flex-gt-sm="50">
<md-card>
<md-card-header>
<md-card-header-text>
<span class="md-headline" translate>最新注册用户</span>
</md-card-header-text>
</md-card-header>
<md-card-content>
<md-list>
<md-divider></md-divider>
<md-list-item ng-repeat="user in signupUsers" ng-click="toUser(user.id)">
<div flex layout="row" layout-align="space-between center">
<div style="word-break: keep-all; white-space:nowrap; overflow: hidden; text-overflow:ellipsis;" flex="70" flex-xs="60">{{user.username}}</div>
<div flex="30" flex-xs="40" style="text-align: right; color: #aaa; font-size: 0.8em;" ng-if="user.createTime">{{user.createTime | timeagoshort | translateTime}}</div>
</div>
<md-divider></md-divider>
</md-list-item>
</md-list>
</md-card-content>
</md-card>
</div>
<div flex-xs="100" flex-sm="100" flex-gt-sm="50">
<md-card>
<md-card-header>
<md-card-header-text>
<span class="md-headline" translate>最近登录用户</span>
</md-card-header-text>
</md-card-header>
<md-card-content>
<md-list>
<md-divider></md-divider>
<md-list-item ng-repeat="user in loginUsers" ng-click="toUser(user.id)">
<div flex layout="row" layout-align="space-between center">
<div style="word-break: keep-all; white-space:nowrap; overflow: hidden; text-overflow:ellipsis;" flex="70" flex-xs="60">{{user.username}}</div>
<div flex="30" flex-xs="40" style="text-align: right; color: #aaa; font-size: 0.8em;" ng-if="user.lastLogin">{{user.lastLogin | timeagoshort | translateTime}}</div>
</div>
<md-divider></md-divider>
</md-list-item>
</md-list>
</md-card-content>
</md-card>
</div>
<div flex-xs="100" flex-sm="100" flex-gt-sm="50" ng-show="orders.length">
<md-card>
<md-card-header>
<md-card-header-text>
<span class="md-headline" translate>支付宝订单</span>
</md-card-header-text>
</md-card-header>
<md-card-content>
<md-list>
<md-divider></md-divider>
<md-list-item ng-repeat="order in orders">
<div flex layout="row" layout-align="space-between center" ng-click="showOrderInfo(order)">
<div flex="30" flex-xs="60">
<span style="font-size: 0.9em;">{{ order.orderId }}</span><br><span style="font-size: 0.9em;">{{ order.createTime | timeago }}</span>
</div>
<div flex="30" flex-xs="40" style="text-align: right;">
<span style="font-size: 0.9em; color: #555">{{order.amount}}</span><br><span style="font-size: 0.9em; color: #000">{{ order.status | order | translate }}</span>
</div>
</div>
<md-divider></md-divider>
</md-list-item>
</md-list>
</md-card-content>
</md-card>
</div>
<div flex-xs="100" flex-sm="100" flex-gt-sm="50" ng-show="paypalOrders.length">
<md-card>
<md-card-header>
<md-card-header-text>
<span class="md-headline" translate>PayPal订单</span>
</md-card-header-text>
</md-card-header>
<md-card-content>
<md-list>
<md-divider></md-divider>
<md-list-item ng-repeat="order in paypalOrders">
<div flex layout="row" layout-align="space-between center" ng-click="showOrderInfo(order)">
<div flex="30" flex-xs="60">
<span style="font-size: 0.9em;">{{ order.orderId }}</span><br><span style="font-size: 0.9em;">{{ order.createTime | timeago }}</span>
</div>
<div flex="30" flex-xs="40" style="text-align: right;">
<span style="font-size: 0.9em; color: #555">{{order.amount}}</span><br><span style="font-size: 0.9em; color: #000">{{ order.status | order | translate }}</span>
</div>
</div>
<md-divider></md-divider>
</md-list-item>
</md-list>
</md-card-content>
</md-card>
</div>
<div flex-xs="100" flex-sm="100" flex-gt-sm="50">
<md-card>
<md-card-header>
<md-card-header-text>
<span class="md-headline" translate>今日流量排行</span>
</md-card-header-text>
</md-card-header>
<md-card-content>
<md-list>
<md-divider></md-divider>
<md-list-item ng-repeat="tf in topFlow">
<div flex layout="row" layout-align="space-between center" ng-click="toTopUser(tf)">
<div flex="30" flex-xs="60">
<span>{{ tf.email || tf.port }}</span>
</div>
<div flex="30" flex-xs="40" style="text-align: right;">
<span style="color: #555">{{ tf.sumFlow | flow }}</span>
</div>
</div>
<md-divider></md-divider>
</md-list-item>
</md-list>
</md-card-content>
</md-card>
</div>
</div>