used Dropzone instead of react-dropzone

pull/576/head
saricicekibrahim 2018-12-28 16:00:40 +03:00
rodzic 80a9d819ef
commit 3668b55286
3 zmienionych plików z 49 dodań i 55 usunięć

Wyświetl plik

@ -1,9 +1,11 @@
import shp from 'shpjs'; import shp from 'shpjs';
import Spinner from 'spin'; import Spinner from 'spin';
export function addTempLayer(file, rejected, _this) { export function addTempLayer(file, _this) {
let maxSize = 10485760;
//random color for each feature //random color for each feature
let getColor = (_geojson) => { let getColor = () => {
return 'rgb(' + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256)) + ')'; return 'rgb(' + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256)) + ')';
} }
@ -16,17 +18,13 @@ export function addTempLayer(file, rejected, _this) {
//show wait spinner //show wait spinner
var spinner = new Spinner({ color: '#fff', lines: 12 }).spin(_this.map._container); var spinner = new Spinner({ color: '#fff', lines: 12 }).spin(_this.map._container);
if (typeof rejected !== 'undefined' && rejected.length > 0) { if (file && file.size > maxSize) {
let err = {}; let err = {};
if (rejected[0].size > _this.maxTempLayerSize) { err.message = "File is bigger than 10 MB.";
err.message = "File is bigger than " + _this.maxTempLayerSize + " bytes";
} else {
err.message = "Data error";
}
writeMessage(err); writeMessage(err);
} else { } else {
//get just the first file //get just the first file
file = file[0]; //file = file[0];
let reader = new FileReader(); let reader = new FileReader();
let isZipFile = file.name.slice(-3) === 'zip'; let isZipFile = file.name.slice(-3) === 'zip';
if (isZipFile) { if (isZipFile) {
@ -35,16 +33,14 @@ export function addTempLayer(file, rejected, _this) {
if (reader.readyState != 2 || reader.error) { if (reader.readyState != 2 || reader.error) {
return; return;
} else { } else {
if (isZipFile) {
shp(reader.result).then(function (geojson) { shp(reader.result).then(function (geojson) {
addLayer(geojson); addLayer(geojson);
}).catch(function (err) { }).catch(function (err) {
err.message = "Not a proper zipped shapefile!"; err.message = "Not a proper zipped shapefile " + file.name;
writeMessage(err); writeMessage(err);
}) })
} }
} }
}
reader.readAsArrayBuffer(file); reader.readAsArrayBuffer(file);
} else { } else {
//geojson file //geojson file
@ -53,7 +49,7 @@ export function addTempLayer(file, rejected, _this) {
let geojson = JSON.parse(reader.result); let geojson = JSON.parse(reader.result);
addLayer(geojson); addLayer(geojson);
} catch (err) { } catch (err) {
err.message = "Not a proper json file!"; err.message = "Not a proper json file " + file.name;
writeMessage(err); writeMessage(err);
} }
} }

Wyświetl plik

@ -7,17 +7,17 @@ import '../vendor/leaflet/L.Control.MousePosition.css';
import '../vendor/leaflet/L.Control.MousePosition'; import '../vendor/leaflet/L.Control.MousePosition';
import '../vendor/leaflet/Leaflet.Autolayers/css/leaflet.auto-layers.css'; import '../vendor/leaflet/Leaflet.Autolayers/css/leaflet.auto-layers.css';
import '../vendor/leaflet/Leaflet.Autolayers/leaflet-autolayers'; import '../vendor/leaflet/Leaflet.Autolayers/leaflet-autolayers';
import Dropzone from '../vendor/dropzone';
import $ from 'jquery'; import $ from 'jquery';
import ErrorMessage from './ErrorMessage'; import ErrorMessage from './ErrorMessage';
import SwitchModeButton from './SwitchModeButton'; import SwitchModeButton from './SwitchModeButton';
import ShareButton from './ShareButton'; import ShareButton from './ShareButton';
import AssetDownloads from '../classes/AssetDownloads'; import AssetDownloads from '../classes/AssetDownloads';
import {addTempLayer} from '../classes/TemplateLayer'; import {addTempLayer} from '../classes/TempLayer';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import PluginsAPI from '../classes/plugins/API'; import PluginsAPI from '../classes/plugins/API';
import Basemaps from '../classes/Basemaps'; import Basemaps from '../classes/Basemaps';
import update from 'immutability-helper'; import update from 'immutability-helper';
import Dropzone from 'react-dropzone';
class Map extends React.Component { class Map extends React.Component {
static defaultProps = { static defaultProps = {
@ -174,6 +174,15 @@ class Map extends React.Component {
} }
componentDidMount() { componentDidMount() {
var thisComponent = this;
var mapTempLayerDrop = new Dropzone(this.container, {url : "/", clickable : false});
mapTempLayerDrop.on("addedfile", function(file) {
addTempLayer(file, thisComponent);
});
mapTempLayerDrop.on("error", function(file) {
mapTempLayerDrop.removeFile(file);
});
const { showBackground, tiles } = this.props; const { showBackground, tiles } = this.props;
this.map = Leaflet.map(this.container, { this.map = Leaflet.map(this.container, {
@ -275,27 +284,19 @@ class Map extends React.Component {
if (this.shareButton) this.shareButton.hidePopup(); if (this.shareButton) this.shareButton.hidePopup();
} }
onDrop(file, reject, _this) {
addTempLayer(file, reject, _this);
}
render() { render() {
return ( return (
<Dropzone <div style={{height: "100%"}} className="map">
onDrop={(accepted, rejected) => { this.onDrop(accepted, rejected, this) }} disableClick={true}
maxSize={this.maxTempLayerSize} multiple={false}
>
{({ getRootProps, getInputProps }) => (
<div {...getRootProps()} style={{ height: "100%" }} className="map">
<ErrorMessage bind={[this, 'error']} /> <ErrorMessage bind={[this, 'error']} />
<div {...getInputProps()} <div
style={{height: "100%"}} style={{height: "100%"}}
ref={(domNode) => (this.container = domNode)} ref={(domNode) => (this.container = domNode)}
onMouseDown={this.handleMapMouseDown} onMouseDown={this.handleMapMouseDown}
> >
</div> </div>
<div className="actionButtons"> <div className="actionButtons">
{this.state.pluginActionButtons.map((button, i) => <div key={i}>{button}</div>)} {this.state.pluginActionButtons.map((button, i) => <div key={i}>{button}</div>)}
{(!this.props.public && this.state.singleTask !== null) ? {(!this.props.public && this.state.singleTask !== null) ?
@ -311,8 +312,6 @@ class Map extends React.Component {
public={this.props.public} /> public={this.props.public} />
</div> </div>
</div> </div>
)}
</Dropzone>
); );
} }
} }

Wyświetl plik

@ -51,7 +51,6 @@
"raw-loader": "^0.5.1", "raw-loader": "^0.5.1",
"react": "^16.2.0", "react": "^16.2.0",
"react-dom": "^16.2.0", "react-dom": "^16.2.0",
"react-dropzone": "^8.0.3",
"react-router": "^4.1.1", "react-router": "^4.1.1",
"react-router-dom": "^4.1.1", "react-router-dom": "^4.1.1",
"react-test-renderer": "^15.6.1", "react-test-renderer": "^15.6.1",