This commit is contained in:
parent
bc81ae0407
commit
1b42e9a9af
@ -109,6 +109,7 @@
|
|||||||
"blockies": "0.0.2",
|
"blockies": "0.0.2",
|
||||||
"bytes": "^2.4.0",
|
"bytes": "^2.4.0",
|
||||||
"es6-promise": "^3.2.1",
|
"es6-promise": "^3.2.1",
|
||||||
|
"file-saver": "^1.3.3",
|
||||||
"format-json": "^1.0.3",
|
"format-json": "^1.0.3",
|
||||||
"format-number": "^2.0.1",
|
"format-number": "^2.0.1",
|
||||||
"geopattern": "^1.2.3",
|
"geopattern": "^1.2.3",
|
||||||
|
57
js/src/ui/Actionbar/Export/export.js
Normal file
57
js/src/ui/Actionbar/Export/export.js
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
// Copyright 2015, 2016 Ethcore (UK) Ltd.
|
||||||
|
// This file is part of Parity.
|
||||||
|
|
||||||
|
// Parity is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
|
||||||
|
// Parity is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import React, { Component, PropTypes } from 'react';
|
||||||
|
import FileSaver from 'file-saver';
|
||||||
|
import FileDownloadIcon from 'material-ui/svg-icons/file/file-download';
|
||||||
|
|
||||||
|
import { Button } from '../../';
|
||||||
|
|
||||||
|
class ActionbarExport extends Component {
|
||||||
|
static propTypes = {
|
||||||
|
content: PropTypes.oneOfType([
|
||||||
|
PropTypes.string,
|
||||||
|
PropTypes.object
|
||||||
|
]).isRequired,
|
||||||
|
filename: PropTypes.string.isRequired,
|
||||||
|
className: PropTypes.string
|
||||||
|
}
|
||||||
|
|
||||||
|
render () {
|
||||||
|
const { className } = this.props;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Button
|
||||||
|
className={ className }
|
||||||
|
icon={ <FileDownloadIcon /> }
|
||||||
|
label='export'
|
||||||
|
onClick={ this.onDownloadBackup } />
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
onDownloadBackup = () => {
|
||||||
|
const { filename, content } = this.props;
|
||||||
|
|
||||||
|
const text = (typeof content === 'string')
|
||||||
|
? content
|
||||||
|
: JSON.stringify(content, null, 4);
|
||||||
|
|
||||||
|
const blob = new Blob([ text ], { type: 'text/plain;charset=utf-8' });
|
||||||
|
FileSaver.saveAs(blob, filename);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default ActionbarExport;
|
17
js/src/ui/Actionbar/Export/index.js
Normal file
17
js/src/ui/Actionbar/Export/index.js
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
// Copyright 2015, 2016 Ethcore (UK) Ltd.
|
||||||
|
// This file is part of Parity.
|
||||||
|
|
||||||
|
// Parity is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
|
||||||
|
// Parity is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
export default from './export';
|
@ -15,6 +15,7 @@
|
|||||||
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
import Actionbar from './Actionbar';
|
import Actionbar from './Actionbar';
|
||||||
|
import ActionbarExport from './Actionbar/Export';
|
||||||
import ActionbarSearch from './Actionbar/Search';
|
import ActionbarSearch from './Actionbar/Search';
|
||||||
import ActionbarSort from './Actionbar/Sort';
|
import ActionbarSort from './Actionbar/Sort';
|
||||||
import Badge from './Badge';
|
import Badge from './Badge';
|
||||||
@ -39,6 +40,7 @@ import TxHash from './TxHash';
|
|||||||
|
|
||||||
export {
|
export {
|
||||||
Actionbar,
|
Actionbar,
|
||||||
|
ActionbarExport,
|
||||||
ActionbarSearch,
|
ActionbarSearch,
|
||||||
ActionbarSort,
|
ActionbarSort,
|
||||||
AddressSelect,
|
AddressSelect,
|
||||||
|
@ -22,7 +22,7 @@ import { uniq } from 'lodash';
|
|||||||
|
|
||||||
import List from '../Accounts/List';
|
import List from '../Accounts/List';
|
||||||
import { AddAddress } from '../../modals';
|
import { AddAddress } from '../../modals';
|
||||||
import { Actionbar, ActionbarSearch, ActionbarSort, Button, Page } from '../../ui';
|
import { Actionbar, ActionbarExport, ActionbarSearch, ActionbarSort, Button, Page } from '../../ui';
|
||||||
|
|
||||||
import styles from './addresses.css';
|
import styles from './addresses.css';
|
||||||
|
|
||||||
@ -93,6 +93,8 @@ class Addresses extends Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
renderActionbar () {
|
renderActionbar () {
|
||||||
|
const { contacts } = this.props;
|
||||||
|
|
||||||
const buttons = [
|
const buttons = [
|
||||||
<Button
|
<Button
|
||||||
key='newAddress'
|
key='newAddress'
|
||||||
@ -100,6 +102,11 @@ class Addresses extends Component {
|
|||||||
label='new address'
|
label='new address'
|
||||||
onClick={ this.onOpenAdd } />,
|
onClick={ this.onOpenAdd } />,
|
||||||
|
|
||||||
|
<ActionbarExport
|
||||||
|
key='exportAddressbook'
|
||||||
|
content={ contacts }
|
||||||
|
filename='addressbook.json' />,
|
||||||
|
|
||||||
this.renderSearchButton(),
|
this.renderSearchButton(),
|
||||||
this.renderSortButton()
|
this.renderSortButton()
|
||||||
];
|
];
|
||||||
|
Loading…
Reference in New Issue
Block a user