started creating spreadsheet component
This commit is contained in:
17
app/actions/FIleActionsCreator.js
Normal file
17
app/actions/FIleActionsCreator.js
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Created by senadu on 12/22/14.
|
||||
*/
|
||||
|
||||
var CsvEditorDispatcher = require('../dispatcher/CsvEditorDispatcher');
|
||||
var CsvEditorConstants = require('../constants/CsvEditorConstants');
|
||||
|
||||
var ActionTypes = CsvEditorConstants.ActionTypes;
|
||||
|
||||
module.exports = {
|
||||
chooseFile: function(fileInput) {
|
||||
CsvEditorDispatcher.handleViewAction({
|
||||
type: ActionTypes.CHOOSE_FILE,
|
||||
target: fileInput
|
||||
})
|
||||
}
|
||||
};
|
||||
24
app/components/Application.react.js
Normal file
24
app/components/Application.react.js
Normal file
@@ -0,0 +1,24 @@
|
||||
/** @jsx React.DOM */
|
||||
|
||||
var React = require('react');
|
||||
var ChooseFile = require('./ChooseFile.react');
|
||||
var SpreadSheet = require('./SpreadSheet.react');
|
||||
|
||||
var Application = React.createClass({
|
||||
|
||||
render: function () {
|
||||
return (
|
||||
<div>
|
||||
<div className="menu">
|
||||
<ChooseFile />
|
||||
</div>
|
||||
<div className="spreadsheet">
|
||||
<SpreadSheet />
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
module.exports = Application;
|
||||
@@ -1,12 +1,23 @@
|
||||
/** @jsx React.DOM */
|
||||
|
||||
var React = require('react');
|
||||
|
||||
var ChooseFile = React.createClass({
|
||||
|
||||
render: function() {
|
||||
return (
|
||||
<button className="red-button">ChooseFile</button>
|
||||
);
|
||||
}
|
||||
getInitialState: function () {
|
||||
return {fileName: ""};
|
||||
},
|
||||
|
||||
render: function () {
|
||||
if (this.state.fileName === "") {
|
||||
return (<input type="file" accept=".csv" onChange={this._onChange}/>);
|
||||
} else
|
||||
return (<div>Editing file.</div>);
|
||||
},
|
||||
|
||||
_onChange: function(e) {
|
||||
this.setState({fileName: e.target.value})
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = ChooseFile;
|
||||
@@ -1,16 +1,38 @@
|
||||
/** @jsx React.DOM */
|
||||
|
||||
var React = require('react');
|
||||
var ChooseFile = require('./ChooseFile.react');
|
||||
var LocalStore = require('../stores/LocalStore');
|
||||
|
||||
|
||||
var getStateFromStore = function () {
|
||||
return {
|
||||
columns: LocalStore.getColumns(),
|
||||
data: LocalStore.getDataForColumns()
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
var SpreadSheet = React.createClass({
|
||||
|
||||
render: function() {
|
||||
return (
|
||||
<div className="spreadsheet">
|
||||
<ChooseFile />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
getInitialState: function() {
|
||||
return getStateFromStore();
|
||||
},
|
||||
|
||||
render: function () {
|
||||
|
||||
var columns = this.state.columns.map(function (column) {
|
||||
return(<th>{column}</th>);
|
||||
});
|
||||
|
||||
|
||||
return (
|
||||
<table className="spreadsheet">
|
||||
<tr>
|
||||
{columns}
|
||||
</tr>
|
||||
</table>
|
||||
);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
@@ -3,12 +3,16 @@ var keyMirror = require('keymirror');
|
||||
module.exports = {
|
||||
|
||||
ActionTypes: keyMirror({
|
||||
CREATE_MESSAGE: null
|
||||
CHOOSE_FILE: null
|
||||
}),
|
||||
|
||||
PayloadSources: keyMirror({
|
||||
BACKEND_ACTION: null,
|
||||
VIEW_ACTION: null
|
||||
}),
|
||||
|
||||
EventTypes: keyMirror({
|
||||
FILE_CHOSEN: null
|
||||
})
|
||||
|
||||
};
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
|
||||
var Constants = require('../constants/CsvEditorConstants');
|
||||
var Dispatcher = require('flux').Dispatcher;
|
||||
var assign = require('object-assign');
|
||||
|
||||
|
||||
var CsvEditorDispatcher = assign(new Dispatcher(), {
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/** @jsx React.DOM */
|
||||
var React = require('react');
|
||||
var SpreadSheet = require('./components/SpreadSheet.react');
|
||||
React.render(<SpreadSheet/>, document.body);
|
||||
var Application = require('./components/Application.react');
|
||||
React.render(<Application/>, document.body);
|
||||
|
||||
62
app/stores/LocalStore.js
Normal file
62
app/stores/LocalStore.js
Normal file
@@ -0,0 +1,62 @@
|
||||
/**
|
||||
* Created by senadu on 12/22/14.
|
||||
*/
|
||||
|
||||
var CsvEditorDispatcher = require('../dispatcher/CsvEditorDispatcher');
|
||||
var EventEmitter = require('events').EventEmitter;
|
||||
var CsvEditorConstants = require('../constants/CsvEditorConstants');
|
||||
var assign = require('object-assign');
|
||||
|
||||
|
||||
var ActionTypes = CsvEditorConstants.ActionTypes;
|
||||
var EventTypes = CsvEditorConstants.EventTypes;
|
||||
|
||||
|
||||
var LocalStore = assign({}, EventEmitter.prototype, {
|
||||
|
||||
emitFileLoadedEvent: function() {
|
||||
this.emit(EventTypes.FILE_CHOSEN);
|
||||
},
|
||||
|
||||
/**
|
||||
* @param {function} callback
|
||||
*/
|
||||
addFileLoadedListener: function(callback) {
|
||||
this.on(EventTypes.FILE_CHOSEN, callback);
|
||||
},
|
||||
|
||||
removeFileLoadedListener: function(callback) {
|
||||
this.removeListener(EventTypes.FILE_CHOSEN, callback);
|
||||
},
|
||||
|
||||
|
||||
getColumns: function() {
|
||||
return ["First", "Second", "Third"];
|
||||
},
|
||||
|
||||
getDataForColumns: function() {
|
||||
return {
|
||||
"First": [1,2,3,4,5],
|
||||
"Second": [1.1,2.2,3.3,4.4,5.5],
|
||||
"Third": ["Hamo", "Suljo","Aha", "Maha", "Vaha"]
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
LocalStore.dispatchToken = CsvEditorDispatcher.register(function(payload) {
|
||||
var action = payload.action;
|
||||
|
||||
switch(action.type) {
|
||||
case ActionTypes.FILE_CHOSEN:
|
||||
LocalStore.emitFileLoadedEvent();
|
||||
break;
|
||||
default:
|
||||
// do nothing
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
module.exports = LocalStore;
|
||||
|
||||
Reference in New Issue
Block a user