1- import Ember from 'ember' ;
1+ import { assert } from '@ember/debug' ;
2+ import { inject as service } from '@ember/service' ;
3+ import { oneWay } from '@ember/object/computed' ;
4+ import $ from 'jquery' ;
5+ import Component from '@ember/component' ;
6+ import { set , get } from '@ember/object' ;
7+ import { A } from '@ember/array' ;
28import Table from 'ember-light-table'
39import layout from '../templates/components/parse-spreadsheet' ;
4- /* globals XLSX, L */
10+ import GeoJson from '../lib/geojson' ;
11+ import XLSX from 'xlsx' ;
512
6- const {
7- Component,
8- computed,
9- get,
10- set,
11- inject : {
12- service
13- }
14- } = Ember ;
15-
16- const GeoJson = Ember . Object . extend ( {
17- type : "Feature" ,
18- geometry : {
19- type : "Point" ,
20- coordinates : [ 0 , 1 ]
21- } ,
22- properties : {
23-
24- }
25- } ) ;
26-
27- export default Component . extend ( {
13+ const GeojsonParseSpreadsheetComponent = Component . extend ( {
2814 store : service ( ) ,
2915 layout,
3016 model : null ,
3117 type : 'file' ,
32- attributeBindings : [ 'type' , 'value' ] ,
33-
34- getExtension ( fileName ) {
35- var dotIndex = fileName . lastIndexOf ( '.' ) ;
36- if ( dotIndex >= 0 ) {
37- return fileName . substring ( dotIndex + 1 ) . toLowerCase ( ) ;
38- }
39- return '' ;
40- } ,
41-
42- lat : 33.7489954 ,
43- lng : - 84.3879824 ,
44- zoom : 10 ,
18+ attributeBindings : A ( [ 'type' , 'value' ] ) ,
4519
46- isLoading : computed . oneWay ( 'fetchRecords.isRunning' ) ,
20+ isLoading : oneWay ( 'fetchRecords.isRunning' ) ,
4721
48- table : null ,
22+ init ( ) {
23+ this . _super ( ...arguments ) ;
24+ } ,
4925
50- tabelColumns : [ ] ,
5126 geoJsonFeatures : [ ] ,
5227
5328 features : [ ] ,
@@ -62,37 +37,6 @@ export default Component.extend({
6237 filters : null
6338 } ,
6439
65- onEachFeature ( feature , layer ) {
66- // TODO Add all attributes.
67- // Content for map preview popups. Does not show all attributes.
68- let popUpContent = `
69- <table>
70- <tr>
71- <td>
72- Title
73- </td>
74- <td>
75- ${ feature . properties . title }
76- </td>
77- </tr>
78- <tr>
79- <td>
80- Description
81- </td>
82- <td>
83- ${ feature . properties . description }
84- </td>
85- </tr>
86- </table>` ;
87- layer . bindPopup ( popUpContent ) ;
88- } ,
89-
90- pointToLayer ( stankonia , latlng ) {
91- return L . marker ( latlng , {
92- draggable : true
93- } ) ;
94- } ,
95-
9640 // types: {label: 'Title'},
9741 types : [ {
9842 label : 'Title' ,
@@ -190,43 +134,41 @@ export default Component.extend({
190134 } ) ;
191135 } ,
192136
193- loadSpreadsheet ( file ) { // Receive data through loading a spreadsheet.
137+ loadSpreadsheet ( file ) {
194138 const extension = this . getExtension ( file . name ) ;
195139 const reader = new FileReader ( ) ;
196- alert ( extension )
197140
198- if ( extension == 'xlsx' ) {
141+ // TODO: Should we accept `xls` files?
142+ if ( extension === 'xlsx' ) {
199143 reader . onload = ( event ) => {
200144 this . xlsx2json ( event . target . result )
201145 } ;
202146 reader . readAsBinaryString ( file ) ;
203147 } else if ( extension == 'csv' ) {
204148 reader . onload = ( /*event*/ ) => {
205- //
149+ // TODO: Do we need to support CSV?
206150 } ;
207151 reader . readAsText ( file ) ;
208152 }
153+
154+ assert ( 'File must end in \'.xlsx\'' , extension === 'xlsx' ) ;
209155 } ,
210156
211157 didInsertElement ( ) {
212- this . _super ( ...arguments ) ;
213- this . setupParseSpreadsheet ( ) ;
214- let fileInput = this . $ ( '#sheet' ) [ 0 ] ;
158+ // this._super(...arguments);
159+ // this.setupParseSpreadsheet();
160+ // let fileInput = this.$('#sheet')[0];
215161
216- fileInput . onchange = ( event ) => {
217- this . loadSpreadsheet ( event . target . files [ 0 ] ) ;
218- } ;
162+ // fileInput.onchange = (event) => {
163+ // this.loadSpreadsheet(event.target.files[0]);
164+ // };
219165 } ,
220166
221167 willDestroyElement ( ) {
222168 this . _super ( ...arguments ) ;
223169 this . teardownParseSpreadsheet ( ) ;
224170 } ,
225171
226- setupParseSpreadsheet ( ) {
227- //
228- } ,
229-
230172 teardownParseSpreadsheet ( ) {
231173 this . destroy ( ) ;
232174 } ,
@@ -239,9 +181,9 @@ export default Component.extend({
239181
240182 data . forEach ( ( d ) => {
241183 let feature = {
242- type : " Feature" ,
184+ type : ' Feature' ,
243185 geometry : {
244- type : " Point" ,
186+ type : ' Point' ,
245187 coordinates : [ d [ attributeMap [ 'lng' ] ] , d [ attributeMap [ 'lat' ] ] ]
246188 } ,
247189 properties : {
@@ -271,3 +213,5 @@ export default Component.extend({
271213 }
272214 }
273215} ) ;
216+
217+ export default GeojsonParseSpreadsheetComponent ;
0 commit comments