- Excel-like Designs: comes with name box, formula bar and 3 buttons to add function & apply/cancel changes;
- Handling Complex Formulas:
SUM
function can be part of the formula, e.g.=4+SUM(A1:A5)/5
is calculated to5
whenA1
toA5
are all equal to1
; - Reference Tree: the data structure to detect circular references & determine the order of updating cells.
- Google Web Font(Open Sans, Noto Sans HK/KR/JP);
- node-sass
- RxJS
- Internet (Fonts & RxJS);
- nodejs & npm;
git clone
to local & navigate there;- Run
npm install
to install dependencies; - Run
npm build
to compile SCSS files to CSS file; - Double click
spreadsheet.html
to show webpage
Create a spreadsheet application like Google sheets using Javascript, RxJS, and CSS.
User Requirements:
- As a user, I should be able to add/delete rows/columns to the spreadsheet using specific buttons.
- As a user, I should be able to select multiple rows or columns and display their sum in a cell by using a formula. The formula should be of the format "=SUM(START_CELL:END_CELL)". Example "=SUM(A1:A10)" to display the sum of all items from cell A1 to A10. Any changes to the cell content in the selected range should update the sum.
- As a user, I should be able to perform simple algebraic operations (+, -, *, /) with cell references. Example "=A1+A2".
- As a user, I should be able to export the sheet as a CSV file.
- As a user, I should be able to load a CSV from the node server on clicking a load button.
Technical Requirements:
- The goal of this assignment is to learn about JavaScript events & RxJS.
- Events for the formula should be implemented using RxJS and buttons can use simple event listeners.
- On clearing formula, all subscribers and events should be cleared from the page.
- No javascript frameworks should be used except RxJS.
- No CSS frameworks should be used.
- Should use ES6 syntax.
- Should document your code extensively.
- Should have .gitignore, ReadMe.md files.
- ReadMe.md file should have markdown with project description and instructions to run the project.
Github Link: https://classroom.github.com/a/2mcQfQ9V
Grading:
This assignment will be graded for 200 points.
- Code documentation. (5 Points)
- .gitignore, README.md and multiple Git commits (10 Points)
- Use external CSS, JavaScript files. (5 Points)
- If RxJS not used for formulas. (-50 Points)
- Assignment completion. (180 Points)
Useful Links: