import React, { Component } from "react"; import { Button, Space, Form, message, Tag } from "antd"; import HostKeyHeader from "@/pages/HostKeyHeader"; import Log from "@/services/LogService"; import QuickMonacoEditor from "@/components/QuickMonacoEditor"; import intl from "react-intl-universal"; import LocaleUtils from "@/utils/LocaleUtils"; import BufferUtils from "@/utils/BufferUtils"; var lodash = window.require("lodash"); /** *hostkey-string-管理 * * @class HostKeyString * @extends {Component} */ class HostKeyString extends Component { initValues = { value: "" }; /** * 只执行一次。第一次渲染后调用,只在客户端 */ componentDidMount() { let redisKey = this.props.redisKey; this.refreshValue(redisKey); } /** *组件更新 * * @param {*} prevProps * @memberof HostKeyString */ componentDidUpdate(prevProps) { if (this.props.redisKey !== prevProps.redisKey) { let redisKey = this.props.redisKey; this.refreshValue(redisKey); } } /** * 刷新 value */ refreshValue(key) { let redis = this.props.node.redis; let form = this.refs.form; if (form === undefined) { return; } let bufferKey = BufferUtils.hexToBuffer(key); redis.getBuffer(bufferKey).then( (value) => { if (value === null || value === undefined) { value = ""; } value = BufferUtils.bufferToString(value); value = lodash.truncate(value, { length: 102400, omission: "......", }); let autoFormatJson = LocaleUtils.readSystemConfig(false).autoFormatJson; if (autoFormatJson) { try { let formatJson = JSON.stringify( JSON.parse(value), null, 4 ); value = formatJson; } catch (error) { // 非json格式,忽略 } } form.setFieldsValue({ value: value }); }, (err) => { message.error("" + err); Log.error("HostKeyString refreshValue error", err); } ); } /** * 保存值 */ saveValue() { // 取form的redisKey值 let redisKey = this.refs.hostKeyHeader.refs.form.getFieldValue("redisKey"); if (redisKey === "") { // 如果没有输入,则提示 message.error(intl.get("HostKey.String.save.input.key")); return; } // 更新 state oldRedisKey this.refs.hostKeyHeader.setState({ oldRedisKey: redisKey }); let redis = this.props.node.redis; let form = this.refs.form; if (form === undefined) { return; } let newValue = form.getFieldValue("value"); let newKeyBuffer = BufferUtils.hexToBuffer(redisKey); let newValueBuffer = BufferUtils.hexToBuffer(newValue); redis.set(newKeyBuffer, newValueBuffer).then( (value) => { message.info(intl.get("common.save.success")); }, (err) => { message.error("" + err); Log.error("HostKeyString saveValue error", err); } ); } render() { return ( <div> <Space size="small" direction="vertical" style={{ width: "100%" }} > <Tag color="#1890ff">type: string</Tag> <HostKeyHeader ref="hostKeyHeader" redisKey={this.props.redisKey} node={this.props.node} deleteKey={this.props.deleteKey.bind(this)} refreshValue={this.refreshValue.bind(this)} ></HostKeyHeader> <Form initialValues={{ ...this.initValues }} ref="form"> <Form.Item name="value"> <QuickMonacoEditor height="60vh" language="json" saveValue={this.saveValue.bind(this)} /> </Form.Item> </Form> <Button onClick={this.saveValue.bind(this)}> {intl.get("common.save")} </Button> </Space> </div> ); } } export default HostKeyString;