@abtnode/ux 1.16.13-beta-0656f92f → 1.16.13-beta-2eb54cbc
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/{monitor → analytics}/card.js +8 -11
- package/lib/{monitor/cpu.js → analytics/chart.js} +43 -44
- package/lib/analytics/cpu.js +44 -0
- package/lib/analytics/memory.js +80 -0
- package/lib/{blocklet/monitor.js → analytics/runtime.js} +20 -22
- package/lib/analytics/traffic.js +269 -0
- package/lib/blocklet/component/index.js +4 -3
- package/lib/blocklet/overview.js +3 -2
- package/lib/blocklet/runtime-info.js +4 -6
- package/lib/blocklet/storage/backups.js +18 -30
- package/lib/blocklet/storage/connected.js +8 -0
- package/lib/blocklet/storage/disconnect.js +29 -15
- package/lib/blocklet/transfer-owner.js +2 -4
- package/lib/certificate.js +4 -3
- package/lib/hooks/blocklet.js +25 -8
- package/lib/invitation/invitation-receive.js +1 -1
- package/lib/locales/en.js +21 -3
- package/lib/locales/zh.js +21 -3
- package/lib/logs/download.js +1 -1
- package/lib/relative-time.js +2 -2
- package/lib/subscription.js +1 -1
- package/lib/team/members/invite-member.js +3 -2
- package/lib/team/members/member.js +4 -3
- package/lib/team/members/passport-issuances.js +3 -2
- package/lib/team/members/transfer-node.js +2 -4
- package/lib/util/index.js +12 -40
- package/package.json +16 -15
- package/lib/monitor/memory.js +0 -144
- /package/lib/{monitor → analytics}/disk.js +0 -0
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = TrafficInsights;
|
|
7
|
+
exports.getDefaultRanges = void 0;
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
var _dayjs = _interopRequireDefault(require("@abtnode/util/lib/dayjs"));
|
|
10
|
+
var _nthArg = _interopRequireDefault(require("lodash/nthArg"));
|
|
11
|
+
var _urlJoin = _interopRequireDefault(require("url-join"));
|
|
12
|
+
var _filesize = _interopRequireDefault(require("filesize"));
|
|
13
|
+
var _useAsyncRetry = _interopRequireDefault(require("react-use/lib/useAsyncRetry"));
|
|
14
|
+
var _reactIframe = _interopRequireDefault(require("react-iframe"));
|
|
15
|
+
var _Alert = _interopRequireDefault(require("@mui/material/Alert"));
|
|
16
|
+
var _CircularProgress = _interopRequireDefault(require("@mui/material/CircularProgress"));
|
|
17
|
+
var _Grid = _interopRequireDefault(require("@mui/material/Grid"));
|
|
18
|
+
var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
|
|
19
|
+
var _Button = _interopRequireDefault(require("@mui/material/Button"));
|
|
20
|
+
var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
|
|
21
|
+
var _Popover = _interopRequireDefault(require("@mui/material/Popover"));
|
|
22
|
+
var _LaunchOutlined = _interopRequireDefault(require("@mui/icons-material/LaunchOutlined"));
|
|
23
|
+
var _muiDaterangePicker = require("mui-daterange-picker");
|
|
24
|
+
var _xDatePickers = require("@mui/x-date-pickers");
|
|
25
|
+
var _AdapterDayjs = require("@mui/x-date-pickers/AdapterDayjs");
|
|
26
|
+
var _LocalizationProvider = require("@mui/x-date-pickers/LocalizationProvider");
|
|
27
|
+
var _context = require("@arcblock/ux/lib/Locale/context");
|
|
28
|
+
var _constant = require("@abtnode/constant");
|
|
29
|
+
var _dateFns = require("date-fns");
|
|
30
|
+
var _util = require("../util");
|
|
31
|
+
var _node = require("../contexts/node");
|
|
32
|
+
var _chart = _interopRequireDefault(require("./chart"));
|
|
33
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
34
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
35
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
36
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
37
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
38
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
39
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } /* eslint-disable react/prop-types */ /* eslint-disable react-hooks/exhaustive-deps */
|
|
40
|
+
const noop = (0, _nthArg.default)(0);
|
|
41
|
+
const getDefaultRanges = (date, locale) => [{
|
|
42
|
+
label: 'This Week',
|
|
43
|
+
startDate: (0, _dateFns.startOfWeek)(date, {
|
|
44
|
+
locale
|
|
45
|
+
}),
|
|
46
|
+
endDate: (0, _dateFns.endOfWeek)(date, {
|
|
47
|
+
locale
|
|
48
|
+
})
|
|
49
|
+
}, {
|
|
50
|
+
label: 'Last Week',
|
|
51
|
+
startDate: (0, _dateFns.startOfWeek)((0, _dateFns.addWeeks)(date, -1), {
|
|
52
|
+
locale
|
|
53
|
+
}),
|
|
54
|
+
endDate: (0, _dateFns.endOfWeek)((0, _dateFns.addWeeks)(date, -1), {
|
|
55
|
+
locale
|
|
56
|
+
})
|
|
57
|
+
}, {
|
|
58
|
+
label: 'Last 7 Days',
|
|
59
|
+
startDate: (0, _dateFns.addWeeks)(date, -1),
|
|
60
|
+
endDate: date
|
|
61
|
+
}, {
|
|
62
|
+
label: 'This Month',
|
|
63
|
+
startDate: (0, _dateFns.startOfMonth)(date),
|
|
64
|
+
endDate: (0, _dateFns.endOfMonth)(date)
|
|
65
|
+
}, {
|
|
66
|
+
label: 'Last Month',
|
|
67
|
+
startDate: (0, _dateFns.startOfMonth)((0, _dateFns.addMonths)(date, -1)),
|
|
68
|
+
endDate: (0, _dateFns.endOfMonth)((0, _dateFns.addMonths)(date, -1))
|
|
69
|
+
}, {
|
|
70
|
+
label: 'This Year',
|
|
71
|
+
startDate: (0, _dateFns.startOfYear)(date),
|
|
72
|
+
endDate: (0, _dateFns.endOfYear)(date)
|
|
73
|
+
}, {
|
|
74
|
+
label: 'Last Year',
|
|
75
|
+
startDate: (0, _dateFns.startOfYear)((0, _dateFns.addYears)(date, -1)),
|
|
76
|
+
endDate: (0, _dateFns.endOfYear)((0, _dateFns.addYears)(date, -1))
|
|
77
|
+
}];
|
|
78
|
+
exports.getDefaultRanges = getDefaultRanges;
|
|
79
|
+
function TrafficInsights(_ref) {
|
|
80
|
+
let {
|
|
81
|
+
client,
|
|
82
|
+
did
|
|
83
|
+
} = _ref;
|
|
84
|
+
const maxDate = (0, _dayjs.default)().subtract(1, 'day').toDate();
|
|
85
|
+
const {
|
|
86
|
+
info,
|
|
87
|
+
inService
|
|
88
|
+
} = (0, _node.useNodeContext)();
|
|
89
|
+
const {
|
|
90
|
+
t,
|
|
91
|
+
locale
|
|
92
|
+
} = (0, _context.useLocaleContext)();
|
|
93
|
+
const [anchorEl, setAnchorEl] = (0, _react.useState)(null);
|
|
94
|
+
const [loaded, setLoaded] = (0, _react.useState)(false);
|
|
95
|
+
const [date, setDate] = (0, _react.useState)(maxDate);
|
|
96
|
+
const [dateRange, setDateRange] = (0, _react.useState)({
|
|
97
|
+
startDate: (0, _dayjs.default)().subtract(30, 'day').toDate(),
|
|
98
|
+
endDate: maxDate
|
|
99
|
+
});
|
|
100
|
+
const data = (0, _useAsyncRetry.default)(async () => {
|
|
101
|
+
const result = await client.getTrafficInsights({
|
|
102
|
+
input: {
|
|
103
|
+
did,
|
|
104
|
+
startDate: (0, _dayjs.default)(dateRange.startDate).format('YYYY-MM-DD'),
|
|
105
|
+
endDate: (0, _dayjs.default)(dateRange.endDate).format('YYYY-MM-DD')
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
return result.list;
|
|
109
|
+
});
|
|
110
|
+
(0, _react.useEffect)(() => {
|
|
111
|
+
if (data.loading) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
if (dateRange.startDate && dateRange.endDate) {
|
|
115
|
+
data.retry();
|
|
116
|
+
}
|
|
117
|
+
}, [dateRange]);
|
|
118
|
+
const onTriggerClick = e => {
|
|
119
|
+
if (anchorEl) {
|
|
120
|
+
setAnchorEl(null);
|
|
121
|
+
} else {
|
|
122
|
+
setAnchorEl(e.currentTarget);
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
const list = data.value || [];
|
|
126
|
+
const {
|
|
127
|
+
loading,
|
|
128
|
+
error
|
|
129
|
+
} = data;
|
|
130
|
+
if (!list.length && loading) {
|
|
131
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_CircularProgress.default, {});
|
|
132
|
+
}
|
|
133
|
+
if (error) {
|
|
134
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.default, {
|
|
135
|
+
severity: "error",
|
|
136
|
+
children: (0, _util.formatError)(error)
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
const metrics = {
|
|
140
|
+
totalRequests: noop,
|
|
141
|
+
validRequests: noop,
|
|
142
|
+
failedRequests: noop,
|
|
143
|
+
uniqueVisitors: noop,
|
|
144
|
+
uniqueFiles: noop,
|
|
145
|
+
uniqueReferrers: noop,
|
|
146
|
+
uniqueNotFound: noop,
|
|
147
|
+
uniqueStaticFiles: noop,
|
|
148
|
+
logSize: _filesize.default,
|
|
149
|
+
bandwidth: _filesize.default
|
|
150
|
+
};
|
|
151
|
+
const charts = Object.keys(metrics).map(key => ({
|
|
152
|
+
id: "".concat(key, "_chart"),
|
|
153
|
+
title: t("analytics.traffic.".concat(key)),
|
|
154
|
+
current: list.length ? metrics[key](list[0][key]) : 0,
|
|
155
|
+
data: list.map(v => ({
|
|
156
|
+
date: v.date,
|
|
157
|
+
value: v[key]
|
|
158
|
+
})).reverse(),
|
|
159
|
+
dateFn: noop,
|
|
160
|
+
valueFn: metrics[key]
|
|
161
|
+
}));
|
|
162
|
+
const open = Boolean(anchorEl);
|
|
163
|
+
const id = open ? 'date-range-picker-popover' : undefined;
|
|
164
|
+
|
|
165
|
+
// eslint-disable-next-line no-nested-ternary
|
|
166
|
+
const pathPrefix = inService ? _constant.WELLKNOWN_SERVICE_PATH_PREFIX : process.env.NODE_ENV === 'production' ? info.routing.adminPath : '';
|
|
167
|
+
const breakdownUrl = (0, _urlJoin.default)(window.location.origin, pathPrefix, "/api/analytics/traffic?date=".concat((0, _dayjs.default)(date).format('YYYY-MM-DD'), "&did=").concat(did));
|
|
168
|
+
const onRangeChange = range => {
|
|
169
|
+
setDateRange(range);
|
|
170
|
+
setAnchorEl(null);
|
|
171
|
+
};
|
|
172
|
+
const onDateChange = newDate => {
|
|
173
|
+
setDate(newDate.toDate());
|
|
174
|
+
setLoaded(false);
|
|
175
|
+
};
|
|
176
|
+
const onOpenBreakdown = () => {
|
|
177
|
+
window.open(breakdownUrl);
|
|
178
|
+
};
|
|
179
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
180
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Typography.default, {
|
|
181
|
+
component: "div",
|
|
182
|
+
variant: "h5",
|
|
183
|
+
className: "page-header",
|
|
184
|
+
color: "textPrimary",
|
|
185
|
+
style: {
|
|
186
|
+
fontSize: 18,
|
|
187
|
+
fontWeight: 'bold'
|
|
188
|
+
},
|
|
189
|
+
mb: 2,
|
|
190
|
+
children: [t('analytics.trend'), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Button.default, {
|
|
191
|
+
onClick: onTriggerClick,
|
|
192
|
+
variant: "outlined",
|
|
193
|
+
size: "small",
|
|
194
|
+
color: "secondary",
|
|
195
|
+
children: [(0, _util.formatToDate)(dateRange.startDate, locale), " - ", (0, _util.formatToDate)(dateRange.endDate, locale)]
|
|
196
|
+
})]
|
|
197
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Popover.default, {
|
|
198
|
+
id: id,
|
|
199
|
+
open: open,
|
|
200
|
+
anchorEl: anchorEl,
|
|
201
|
+
onClose: () => setAnchorEl(null),
|
|
202
|
+
anchorOrigin: {
|
|
203
|
+
vertical: 'bottom',
|
|
204
|
+
horizontal: 'left'
|
|
205
|
+
},
|
|
206
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_muiDaterangePicker.DateRangePicker, {
|
|
207
|
+
open: true,
|
|
208
|
+
toggle: onTriggerClick,
|
|
209
|
+
maxDate: maxDate,
|
|
210
|
+
definedRanges: getDefaultRanges(date),
|
|
211
|
+
onChange: onRangeChange
|
|
212
|
+
})
|
|
213
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Grid.default, {
|
|
214
|
+
container: true,
|
|
215
|
+
spacing: 4,
|
|
216
|
+
children: charts.map(x => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Grid.default, {
|
|
217
|
+
item: true,
|
|
218
|
+
lg: 3,
|
|
219
|
+
md: 6,
|
|
220
|
+
sm: 6,
|
|
221
|
+
xs: 12,
|
|
222
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_chart.default, _objectSpread({}, x))
|
|
223
|
+
}, x.id))
|
|
224
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Typography.default, {
|
|
225
|
+
component: "div",
|
|
226
|
+
variant: "h5",
|
|
227
|
+
className: "page-header",
|
|
228
|
+
color: "textPrimary",
|
|
229
|
+
style: {
|
|
230
|
+
fontSize: 18,
|
|
231
|
+
fontWeight: 'bold'
|
|
232
|
+
},
|
|
233
|
+
mt: 4,
|
|
234
|
+
mb: 1,
|
|
235
|
+
children: [t('analytics.detail'), /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
|
|
236
|
+
children: [loaded && /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
|
|
237
|
+
onClick: onOpenBreakdown,
|
|
238
|
+
style: {
|
|
239
|
+
marginRight: 32
|
|
240
|
+
},
|
|
241
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_LaunchOutlined.default, {})
|
|
242
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_LocalizationProvider.LocalizationProvider, {
|
|
243
|
+
dateAdapter: _AdapterDayjs.AdapterDayjs,
|
|
244
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_xDatePickers.DatePicker, {
|
|
245
|
+
disableFuture: true,
|
|
246
|
+
format: "ll",
|
|
247
|
+
value: (0, _dayjs.default)(date),
|
|
248
|
+
onChange: onDateChange,
|
|
249
|
+
slotProps: {
|
|
250
|
+
textField: {
|
|
251
|
+
size: 'small'
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
})
|
|
255
|
+
})]
|
|
256
|
+
})]
|
|
257
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIframe.default, {
|
|
258
|
+
url: breakdownUrl,
|
|
259
|
+
width: "100%",
|
|
260
|
+
height: "100%",
|
|
261
|
+
frameBorder: 0,
|
|
262
|
+
onLoad: () => setLoaded(true),
|
|
263
|
+
styles: {
|
|
264
|
+
border: 0,
|
|
265
|
+
minHeight: '400vh'
|
|
266
|
+
}
|
|
267
|
+
})]
|
|
268
|
+
});
|
|
269
|
+
}
|
|
@@ -153,7 +153,8 @@ function ComponentItem(_ref) {
|
|
|
153
153
|
app
|
|
154
154
|
} = _ref;
|
|
155
155
|
const {
|
|
156
|
-
t
|
|
156
|
+
t,
|
|
157
|
+
locale
|
|
157
158
|
} = (0, _react.useContext)(_context.LocaleContext);
|
|
158
159
|
const [expand, setExpand] = (0, _react.useState)(true);
|
|
159
160
|
const [componentInfo, setComponentInfo] = (0, _react.useState)();
|
|
@@ -217,10 +218,10 @@ function ComponentItem(_ref) {
|
|
|
217
218
|
})
|
|
218
219
|
}, blocklet.status === 'running' ? {
|
|
219
220
|
name: t('blocklet.startedAt'),
|
|
220
|
-
value: (0, _util2.formatToDatetime)(blocklet.startedAt)
|
|
221
|
+
value: (0, _util2.formatToDatetime)(blocklet.startedAt, locale)
|
|
221
222
|
} : null, blocklet.status !== 'running' ? {
|
|
222
223
|
name: t('blocklet.stoppedAt'),
|
|
223
|
-
value: (0, _util2.formatToDatetime)(blocklet.stoppedAt)
|
|
224
|
+
value: (0, _util2.formatToDatetime)(blocklet.stoppedAt, locale)
|
|
224
225
|
} : null, {
|
|
225
226
|
name: t('common.mountPoint'),
|
|
226
227
|
value: mountPoint
|
package/lib/blocklet/overview.js
CHANGED
|
@@ -93,7 +93,8 @@ const LinkDiv = _styled.default.span(_templateObject || (_templateObject = _tagg
|
|
|
93
93
|
function BlockletOverview() {
|
|
94
94
|
var _blocklet$environment, _blocklet$controller, _blocklet$controller2, _blocklet$controller3, _blocklet$settings, _blocklet$site;
|
|
95
95
|
const {
|
|
96
|
-
t
|
|
96
|
+
t,
|
|
97
|
+
locale
|
|
97
98
|
} = (0, _context.useLocaleContext)();
|
|
98
99
|
const {
|
|
99
100
|
info: nodeInfo,
|
|
@@ -153,7 +154,7 @@ function BlockletOverview() {
|
|
|
153
154
|
})
|
|
154
155
|
} : null, {
|
|
155
156
|
name: t('blocklet.installedAt'),
|
|
156
|
-
value: (0, _util2.formatToDatetime)(blocklet.installedAt)
|
|
157
|
+
value: (0, _util2.formatToDatetime)(blocklet.installedAt, locale)
|
|
157
158
|
}, {
|
|
158
159
|
name: t('blocklet.overview.accessControl'),
|
|
159
160
|
value: t("team.whoCanAccess.".concat((0, _util.getWhoCanAccess)(blocklet), ".title"))
|
|
@@ -8,8 +8,8 @@ var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
|
8
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
9
|
var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
|
|
10
10
|
var _Grid = _interopRequireDefault(require("@mui/material/Grid"));
|
|
11
|
-
var _cpu = _interopRequireDefault(require("../
|
|
12
|
-
var _memory = _interopRequireDefault(require("../
|
|
11
|
+
var _cpu = _interopRequireDefault(require("../analytics/cpu"));
|
|
12
|
+
var _memory = _interopRequireDefault(require("../analytics/memory"));
|
|
13
13
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
14
|
var _templateObject;
|
|
15
15
|
const _excluded = ["blocklet", "cpuHistory", "memoryHistory"];
|
|
@@ -48,8 +48,7 @@ function BlockletRuntimeInfo(_ref) {
|
|
|
48
48
|
history: cpuHistory,
|
|
49
49
|
style: {
|
|
50
50
|
height: 150
|
|
51
|
-
}
|
|
52
|
-
hideDescription: true
|
|
51
|
+
}
|
|
53
52
|
})
|
|
54
53
|
}, "cpu"), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Grid.default, {
|
|
55
54
|
item: true,
|
|
@@ -62,8 +61,7 @@ function BlockletRuntimeInfo(_ref) {
|
|
|
62
61
|
history: memoryHistory,
|
|
63
62
|
style: {
|
|
64
63
|
height: 150
|
|
65
|
-
}
|
|
66
|
-
hideDescription: true
|
|
64
|
+
}
|
|
67
65
|
})
|
|
68
66
|
}, "memory")]
|
|
69
67
|
})
|
|
@@ -11,7 +11,7 @@ var _material = require("@mui/material");
|
|
|
11
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
12
|
var _lodash = require("lodash");
|
|
13
13
|
var _ahooks = require("ahooks");
|
|
14
|
-
var _dayjs = _interopRequireDefault(require("dayjs"));
|
|
14
|
+
var _dayjs = _interopRequireDefault(require("@abtnode/util/lib/dayjs"));
|
|
15
15
|
var _HelpOutline = _interopRequireDefault(require("@mui/icons-material/HelpOutline"));
|
|
16
16
|
var _propTypes = require("prop-types");
|
|
17
17
|
var _node = require("../../contexts/node");
|
|
@@ -208,35 +208,23 @@ function SpacesBackupRecords(_ref2) {
|
|
|
208
208
|
}
|
|
209
209
|
}
|
|
210
210
|
}];
|
|
211
|
-
return /*#__PURE__*/(0, _jsxRuntime.
|
|
212
|
-
children:
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
options: {
|
|
229
|
-
download: false,
|
|
230
|
-
filter: false,
|
|
231
|
-
print: false
|
|
232
|
-
}
|
|
233
|
-
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
|
|
234
|
-
color: "#9397A1",
|
|
235
|
-
marginTop: "24px",
|
|
236
|
-
children: t('storage.spaces.record.emptyData')
|
|
237
|
-
})
|
|
238
|
-
})]
|
|
239
|
-
});
|
|
211
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, _objectSpread(_objectSpread({}, rest), {}, {
|
|
212
|
+
children: backups !== null && backups !== void 0 && backups.length ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Datatable.default, {
|
|
213
|
+
title: t('storage.spaces.backup.records'),
|
|
214
|
+
data: backups,
|
|
215
|
+
columns: columns,
|
|
216
|
+
emptyNode: t('storage.spaces.record.emptyData', locale),
|
|
217
|
+
options: {
|
|
218
|
+
download: false,
|
|
219
|
+
filter: false,
|
|
220
|
+
print: false
|
|
221
|
+
}
|
|
222
|
+
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
|
|
223
|
+
color: "#9397A1",
|
|
224
|
+
marginTop: "24px",
|
|
225
|
+
children: t('storage.spaces.record.emptyData')
|
|
226
|
+
})
|
|
227
|
+
}));
|
|
240
228
|
}
|
|
241
229
|
SpacesBackupRecords.propTypes = {
|
|
242
230
|
progress: _propTypes.object.isRequired,
|
|
@@ -17,6 +17,7 @@ var _node = require("../../contexts/node");
|
|
|
17
17
|
var _spaces = require("../../util/spaces");
|
|
18
18
|
var _useBackupProgress = _interopRequireDefault(require("../../hooks/use-backup-progress"));
|
|
19
19
|
var _spaceGateway = require("../../util/space-gateway");
|
|
20
|
+
var _diskInfo = _interopRequireDefault(require("../disk-info"));
|
|
20
21
|
var _util = require("../../util");
|
|
21
22
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
22
23
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -192,6 +193,13 @@ function Connected() {
|
|
|
192
193
|
},
|
|
193
194
|
spaceGateways: spaceGateways,
|
|
194
195
|
progress: progress
|
|
196
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
|
|
197
|
+
fontSize: "1.2rem",
|
|
198
|
+
fontWeight: "bold",
|
|
199
|
+
mb: 2,
|
|
200
|
+
children: t('common.dataStorage')
|
|
201
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_diskInfo.default, {
|
|
202
|
+
blocklet: blocklet
|
|
195
203
|
})]
|
|
196
204
|
});
|
|
197
205
|
}
|
|
@@ -7,7 +7,9 @@ exports.default = void 0;
|
|
|
7
7
|
var _react = _interopRequireDefault(require("react"));
|
|
8
8
|
var _material = require("@mui/material");
|
|
9
9
|
var _context = require("@arcblock/ux/lib/Locale/context");
|
|
10
|
+
var _blocklet = require("../../../lib/contexts/blocklet");
|
|
10
11
|
var _connectTo = _interopRequireDefault(require("./connect-to"));
|
|
12
|
+
var _diskInfo = _interopRequireDefault(require("../disk-info"));
|
|
11
13
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
15
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -210,23 +212,35 @@ function Disconnect() {
|
|
|
210
212
|
const {
|
|
211
213
|
t
|
|
212
214
|
} = (0, _context.useLocaleContext)();
|
|
215
|
+
const {
|
|
216
|
+
blocklet
|
|
217
|
+
} = (0, _blocklet.useBlockletContext)();
|
|
213
218
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
219
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
|
|
220
|
+
minHeight: "40vh",
|
|
221
|
+
display: "flex",
|
|
222
|
+
flexDirection: "column",
|
|
223
|
+
justifyContent: "center",
|
|
224
|
+
alignItems: "center",
|
|
225
|
+
alignContent: "center",
|
|
226
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(EmptySpacesNFT, {
|
|
227
|
+
style: {
|
|
228
|
+
width: 200,
|
|
229
|
+
height: 250
|
|
230
|
+
}
|
|
231
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
|
|
232
|
+
marginTop: "24px",
|
|
233
|
+
marginBottom: "24px",
|
|
234
|
+
children: t('storage.spaces.connect.provider')
|
|
235
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_connectTo.default, {})]
|
|
225
236
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
237
|
+
fontSize: "1.2rem",
|
|
238
|
+
fontWeight: "bold",
|
|
239
|
+
mb: 2,
|
|
240
|
+
children: t('common.dataStorage')
|
|
241
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_diskInfo.default, {
|
|
242
|
+
blocklet: blocklet
|
|
243
|
+
})]
|
|
230
244
|
});
|
|
231
245
|
}
|
|
232
246
|
Disconnect.propTypes = {};
|
|
@@ -38,12 +38,10 @@ function TransferOwner(_ref) {
|
|
|
38
38
|
} = (0, _react.useContext)(_session.SessionContext);
|
|
39
39
|
const [loading, setLoading] = (0, _react.useState)(false);
|
|
40
40
|
const {
|
|
41
|
+
t,
|
|
41
42
|
locale
|
|
42
43
|
} = (0, _context.useLocaleContext)();
|
|
43
44
|
const [error, setError] = (0, _react.useState)('');
|
|
44
|
-
const {
|
|
45
|
-
t
|
|
46
|
-
} = (0, _context.useLocaleContext)();
|
|
47
45
|
const [openTransferOwner, setOpenTransferOwner] = (0, _react.useState)(false);
|
|
48
46
|
const [activeStep, setActiveStep] = (0, _react.useState)(0);
|
|
49
47
|
const [result, setResult] = (0, _react.useState)('');
|
|
@@ -131,7 +129,7 @@ function TransferOwner(_ref) {
|
|
|
131
129
|
mt: 2,
|
|
132
130
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Bold, {
|
|
133
131
|
children: t('team.transferApp.transferDialog.createSuccessTip2', {
|
|
134
|
-
expireDate: (0, _util.formatToDatetime)(result.expireDate)
|
|
132
|
+
expireDate: (0, _util.formatToDatetime)(result.expireDate, locale)
|
|
135
133
|
})
|
|
136
134
|
})
|
|
137
135
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
|
package/lib/certificate.js
CHANGED
|
@@ -24,7 +24,8 @@ function Certificate(_ref) {
|
|
|
24
24
|
const [anchorEl, setAnchorEl] = (0, _react.useState)(null);
|
|
25
25
|
const node = (0, _node.useNodeContext)();
|
|
26
26
|
const {
|
|
27
|
-
t
|
|
27
|
+
t,
|
|
28
|
+
locale
|
|
28
29
|
} = (0, _context.useLocaleContext)();
|
|
29
30
|
const handlePopoverOpen = event => {
|
|
30
31
|
setAnchorEl(event.currentTarget);
|
|
@@ -91,10 +92,10 @@ function Certificate(_ref) {
|
|
|
91
92
|
children: "".concat(t('common.issuer'), ": ").concat((0, _get.default)(certificate, 'issuer.commonName', ''))
|
|
92
93
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
|
|
93
94
|
component: "div",
|
|
94
|
-
children: "".concat(t('router.cert.issuedOn'), ": ").concat((0, _util.formatToDate)(certificate.validFrom))
|
|
95
|
+
children: "".concat(t('router.cert.issuedOn'), ": ").concat((0, _util.formatToDate)(certificate.validFrom, locale))
|
|
95
96
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
|
|
96
97
|
component: "div",
|
|
97
|
-
children: "".concat(t('router.cert.expiryOn'), ": ").concat((0, _util.formatToDate)(certificate.validTo))
|
|
98
|
+
children: "".concat(t('router.cert.expiryOn'), ": ").concat((0, _util.formatToDate)(certificate.validTo, locale))
|
|
98
99
|
})]
|
|
99
100
|
})]
|
|
100
101
|
})
|
package/lib/hooks/blocklet.js
CHANGED
|
@@ -20,7 +20,7 @@ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typ
|
|
|
20
20
|
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
21
21
|
// eslint-disable-next-line import/prefer-default-export
|
|
22
22
|
function useBlocklet(_ref) {
|
|
23
|
-
var _blocklet$site, _blocklet$site$domain, _blocklet$meta, _blocklet$meta2, _blocklet$meta3, _blocklet$meta4, _blocklet$meta5, _blocklet$meta6, _blocklet$meta7
|
|
23
|
+
var _blocklet$site, _blocklet$site$domain, _blocklet$meta, _blocklet$meta2, _blocklet$meta3, _blocklet$meta4, _blocklet$meta5, _blocklet$meta6, _blocklet$meta7;
|
|
24
24
|
let {
|
|
25
25
|
did,
|
|
26
26
|
client,
|
|
@@ -189,14 +189,31 @@ function useBlocklet(_ref) {
|
|
|
189
189
|
[data.domain]: _objectSpread(_objectSpread({}, pre[data.domain]), data)
|
|
190
190
|
}));
|
|
191
191
|
}, [blocklet === null || blocklet === void 0 ? void 0 : (_blocklet$meta = blocklet.meta) === null || _blocklet$meta === void 0 ? void 0 : _blocklet$meta.did, !disableSubscription]);
|
|
192
|
-
useSubscription(_constant.BlockletEvents.statusChange,
|
|
192
|
+
useSubscription(_constant.BlockletEvents.statusChange, data => {
|
|
193
|
+
var _data$meta3;
|
|
194
|
+
if ((data === null || data === void 0 ? void 0 : (_data$meta3 = data.meta) === null || _data$meta3 === void 0 ? void 0 : _data$meta3.did) === blocklet.meta.did) {
|
|
195
|
+
setBlocklet(oldBlocklet => {
|
|
196
|
+
const newBlocklet = _objectSpread({}, oldBlocklet);
|
|
197
|
+
newBlocklet.status = (0, _constant.fromBlockletStatus)(data.status);
|
|
198
|
+
(newBlocklet.children || []).forEach(x => {
|
|
199
|
+
const y = data.children.find(z => {
|
|
200
|
+
var _z$meta, _x$meta;
|
|
201
|
+
return ((_z$meta = z.meta) === null || _z$meta === void 0 ? void 0 : _z$meta.did) === ((_x$meta = x.meta) === null || _x$meta === void 0 ? void 0 : _x$meta.did);
|
|
202
|
+
});
|
|
203
|
+
if (y) {
|
|
204
|
+
x.status = (0, _constant.fromBlockletStatus)(y.status);
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
return newBlocklet;
|
|
208
|
+
});
|
|
209
|
+
handleRefreshWithoutRuntime(data);
|
|
210
|
+
}
|
|
211
|
+
}, [blocklet === null || blocklet === void 0 ? void 0 : (_blocklet$meta2 = blocklet.meta) === null || _blocklet$meta2 === void 0 ? void 0 : _blocklet$meta2.did, !disableSubscription]); // eslint-disable-line prettier/prettier
|
|
193
212
|
useSubscription(_constant.BlockletEvents.storeChange, handleRefreshWithoutRuntime, [blocklet === null || blocklet === void 0 ? void 0 : (_blocklet$meta3 = blocklet.meta) === null || _blocklet$meta3 === void 0 ? void 0 : _blocklet$meta3.did, !disableSubscription]);
|
|
194
|
-
useSubscription(_constant.BlockletEvents.
|
|
195
|
-
useSubscription(_constant.BlockletEvents.
|
|
196
|
-
useSubscription(_constant.BlockletEvents.
|
|
197
|
-
useSubscription(_constant.BlockletEvents.
|
|
198
|
-
useSubscription(_constant.BlockletEvents.downgraded, handleRefresh, [blocklet === null || blocklet === void 0 ? void 0 : (_blocklet$meta8 = blocklet.meta) === null || _blocklet$meta8 === void 0 ? void 0 : _blocklet$meta8.did, !disableSubscription]);
|
|
199
|
-
useSubscription(_constant.BlockletEvents.updated, handleRefresh, [blocklet === null || blocklet === void 0 ? void 0 : (_blocklet$meta9 = blocklet.meta) === null || _blocklet$meta9 === void 0 ? void 0 : _blocklet$meta9.did, !disableSubscription]);
|
|
213
|
+
useSubscription(_constant.BlockletEvents.installed, handleRefresh, [blocklet === null || blocklet === void 0 ? void 0 : (_blocklet$meta4 = blocklet.meta) === null || _blocklet$meta4 === void 0 ? void 0 : _blocklet$meta4.did, !disableSubscription]);
|
|
214
|
+
useSubscription(_constant.BlockletEvents.upgraded, handleRefresh, [blocklet === null || blocklet === void 0 ? void 0 : (_blocklet$meta5 = blocklet.meta) === null || _blocklet$meta5 === void 0 ? void 0 : _blocklet$meta5.did, !disableSubscription]);
|
|
215
|
+
useSubscription(_constant.BlockletEvents.downgraded, handleRefresh, [blocklet === null || blocklet === void 0 ? void 0 : (_blocklet$meta6 = blocklet.meta) === null || _blocklet$meta6 === void 0 ? void 0 : _blocklet$meta6.did, !disableSubscription]);
|
|
216
|
+
useSubscription(_constant.BlockletEvents.updated, handleRefresh, [blocklet === null || blocklet === void 0 ? void 0 : (_blocklet$meta7 = blocklet.meta) === null || _blocklet$meta7 === void 0 ? void 0 : _blocklet$meta7.did, !disableSubscription]);
|
|
200
217
|
const data = blocklet ? (0, _merge.default)(blocklet, {
|
|
201
218
|
site: {
|
|
202
219
|
domainAliases: blocklet.site.domainAliases.map(x => {
|
|
@@ -71,7 +71,7 @@ function InvitationReceive(_ref) {
|
|
|
71
71
|
children: t('invite.receive')
|
|
72
72
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
73
73
|
className: "invite-receive__until",
|
|
74
|
-
children: [t('invite.validUntil'), (0, _util.formatDateTime)(invitation.expireDate)]
|
|
74
|
+
children: [t('invite.validUntil'), (0, _util.formatDateTime)(invitation.expireDate, locale)]
|
|
75
75
|
})]
|
|
76
76
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Connect.default, {
|
|
77
77
|
popup: true,
|
package/lib/locales/en.js
CHANGED
|
@@ -131,7 +131,7 @@ module.exports = {
|
|
|
131
131
|
createdAt: 'Created At',
|
|
132
132
|
createdBy: 'Created By',
|
|
133
133
|
dAddress: 'Decentralized Identifiers (DID)',
|
|
134
|
-
dataStorage: '
|
|
134
|
+
dataStorage: 'Storage on Local Disk',
|
|
135
135
|
delConfirm: 'Delete',
|
|
136
136
|
delConfirmDescription: 'Confirm delete {data}?',
|
|
137
137
|
delete: 'Delete',
|
|
@@ -202,7 +202,9 @@ module.exports = {
|
|
|
202
202
|
members: 'Members',
|
|
203
203
|
memory: 'Memory',
|
|
204
204
|
meta: 'Meta Data',
|
|
205
|
-
|
|
205
|
+
analytics: 'Analytics',
|
|
206
|
+
runtime: 'Runtime',
|
|
207
|
+
traffic: 'Traffic',
|
|
206
208
|
more: 'More',
|
|
207
209
|
mountPoint: 'MountPoint',
|
|
208
210
|
name: 'Name',
|
|
@@ -691,7 +693,7 @@ module.exports = {
|
|
|
691
693
|
verifying: 'Verifying Blocklet Server v{version}',
|
|
692
694
|
rollback: 'Rollback Blocklet Server',
|
|
693
695
|
complete: 'Upgrade complete!',
|
|
694
|
-
progress: 'Upgrading Blocklet Server
|
|
696
|
+
progress: 'Upgrading Blocklet Server {version}',
|
|
695
697
|
check: 'Check for Updates',
|
|
696
698
|
latest: 'You are running the latest version.'
|
|
697
699
|
},
|
|
@@ -1461,5 +1463,21 @@ module.exports = {
|
|
|
1461
1463
|
},
|
|
1462
1464
|
loading: 'Load subscription...',
|
|
1463
1465
|
loadFailed: 'Failed to load subscription info, please retry!'
|
|
1466
|
+
},
|
|
1467
|
+
analytics: {
|
|
1468
|
+
trend: 'Trends',
|
|
1469
|
+
detail: 'Breakdown',
|
|
1470
|
+
traffic: {
|
|
1471
|
+
totalRequests: 'Total Requests',
|
|
1472
|
+
validRequests: 'Success Requests',
|
|
1473
|
+
failedRequests: 'Failed Requests',
|
|
1474
|
+
uniqueVisitors: 'Unique Visitors',
|
|
1475
|
+
uniqueFiles: 'Unique URLs',
|
|
1476
|
+
uniqueReferrers: 'Unique Referrers',
|
|
1477
|
+
uniqueNotFound: 'Unique 404',
|
|
1478
|
+
uniqueStaticFiles: 'Unique Static Files',
|
|
1479
|
+
logSize: 'Log Size',
|
|
1480
|
+
bandwidth: 'Bandwidth'
|
|
1481
|
+
}
|
|
1464
1482
|
}
|
|
1465
1483
|
};
|