Skip to content

Instantly share code, notes, and snippets.

@andreyselin
Created May 21, 2019 10:55
Show Gist options
  • Save andreyselin/efa16f345dd2fb61e688f242209bbeda to your computer and use it in GitHub Desktop.
Save andreyselin/efa16f345dd2fb61e688f242209bbeda 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