Skip to content

Instantly share code, notes, and snippets.

@C-Pro
Last active August 16, 2018 05:05
Show Gist options
  • Save C-Pro/3ad045134ef8c98e4771c42605b55942 to your computer and use it in GitHub Desktop.
Save C-Pro/3ad045134ef8c98e4771c42605b55942 to your computer and use it in GitHub Desktop.

ExcelJS

Задача - сделать Excel-подобную таблицу с поддержкой простейших формул. Пересчёт значений в ячейках должен происходить сразу при потере фокуса и затрагивать только те ячейки, значения которых затронуты. Пересчитывать каждый раз всю таблицу (если нет необходимости) нельзя. Использовать чистый JS (ES6), HTML, CSS. Использовать стороннние фреймворки, библиотеки не надо. Только то, что предоставляет браузер. Будет проверяться на последней версии chrome (десктопный и мобильный).

Размер таблицы пусть будет 100x1000 (ШxВ)

Содержимое ячеек

В ячейке могут быть числа и формулы. Числа - целые и десятичные дроби (разделитель - точка). Формулы начинаются со знака = и содержат выражение. Выражение состоит из операндов и операторов. Операторы - 4 арифметических действия, операнды - числа и адреса ячеек.

БНФ (неполная)

<ячейка> ::= <пусто> | <число> | <формула>
<пусто> ::= ""
<число> ::= <целое> | <десятичная дробь>
<формула> ::= "=" <выражение>
<выражение> ::= <число> | <адрес ячейки> | <выражение> <оператор> <выражение>
<адрес ячейки> := <столбец><строка>
<cтолбец> ::= [A-Z]+
<строка> ::= [0-9]+
<оператор> :== "-" | "+" | "/" | "*"

Удачи!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment