# История версий LogsView
***
## build 1.2.87
1. В нижнем блоке битовых полей добавлена временная подсветка изменившихся битов.
2. В таблице колонка Значение / Data теперь обновляется для всех каналов при включённом Сканере, а не только для видимых графиков.
3. Очистка старых имён графиков при открытии нового файла.
4. Сброс “Окно по X” после изменения Обрезки.
---
## build 1.2.85
1. Улучшили поведение автомасштаба в окне fft.
---
## build 1.2.84
1. Улучшили поведение меню переноса графика на слой. Теперь Аналог нельзя перенести на Digital слой.
2. Исправление поведение легенд на графиках и слоях.
---
## build 1.2.83
1. Добавлены фильтры IIR в математику.
   Новые функции в формулах
   - lowpass(x, fc_hz, order)
   - highpass(x, fc_hz, order)
   - lowhighpass(x, f_low_hz, f_high_hz, order) (внутри: HP(order,f_low) → LP(order,f_high))
   Узкополосный режектор (notch / band-stop). Теперь можно в формуле использовать:
   - notch(x, f0_hz, Q) — обычный notch 2-го порядка
   - notch_n(x, f0_hz, Q, order) — notch повышенного порядка как каскад biquad, order = 2,4,6..12
   Важные ограничения (сделано намеренно):
   - Для логов с неравномерной сеткой времени (custom keys, isIntervalsEqual()==false) фильтр выдаст ошибку: filter: неравномерная сетка времени (custom keys) не поддержана
   - order ограничен 1..12 (защита по производительности/памяти)
2. Добавлены FIR фильтры:
   - fir_lowpass(x, fc_hz, taps)
   - fir_highpass(x, fc_hz, taps)
   - fir_bandpass(x, f1_hz, f2_hz, taps)
   Реализация: windowed-sinc + окно Hamming, состояние — кольцевой буфер на taps, вычисление — честная свёртка O(taps) на точку.
3. Мелкие улучшения UI.
---
## build 1.2.82
1. В расчете FFT добавлены новые алгоритмы расчета FFT : 
   - FFTW (lib) - внешняя библиотека FFTW 3.0 - самая быстрая
   - PocketFFT - внешняя библиотека
   - Pad->Pow2 (Radix2)
   - Pad->Goodsize 2-3-5
---
## build 1.2.81
1. Зум мышью теперь нормальный. Изменено напрвление кручение колеса мыши для зума осей.
---
## build 1.2.80
1. Улучшен расчет fft. Добавлен режим Сгладить края. Улучшена работа масштаба графика.
2. Мелкие фиксы.
---
## build 1.2.79
1. Подправлены константы time, pi в разделе Математики.
---
## build 1.2.78
1. Смена адреса обновления приложения с http:\\ на https:\\
2. Мелкие правки в интерфейсе.
---
## build 1.2.77
1. Новый интерфейс просмотра при открытии нескольких файлов. Новая вкладка Файлы.
---
## build 1.2.76
1. Добавлена история введеных математических формул.
2. В таблице графиков доступна сортировка, фильтраця, быстрые действия, быстрое меню переноса на слой.
3. Поправлен запуск Сканера - иногда падал.
4. Авторасчет fft для очень больших массивов теперь берется Radix2. 
5. Сдвиг времени файлов теперь выведен в отдельное меню Инструменты-Сдвиг времени...
---
## build 1.2.74
1. Фикс с автомасштабом осей.
---
## build 1.2.73
1. Добавлена возможность менять высоту слоев-графиков потянув за Splitter.
2. Улучшен алгоритм определения цифровых данных. Ждем только 0/1 в данных.
3. Добавлен режим автосокрытия цифровых графиков при открытии файла - для минимизации ненужных слоев.
4. Более понятный зум осей с помощью колесика мыши. Зум происходит только если курсор мыши находится над осью X или Y. Добавлена иконка лупы в этом режиме.
5. Режим перетаскивания на графиках по ЛКМ.
6. Режим масштаба на графиках по Сtrl+ЛКМ.
7. Даблклик по оси дает автомасштаб этой оси.
8. Улучшение режима выкл/вкл слоев.
---
## build 1.2.71
1. Ускорен алгоритм удаления и восстановления графиков.
---
## build 1.2.70
1. Глобальный рефакторинг кода.
2. Улучшена работа Сканера. Теперь прыгает по узлам.
---
## build 1.2.67
1. Добавлен функционал автоматического определения цифровых данных - логические сигналы 0/1. 
Сигналы отправятся на отдельный слой Digital. Просмотр как логический анализатор.
2. Фикс работы на разном DPI.
3. Добавлены кнопки Math, FFT на основную форму.
4. Фикс определения времени для файлов tek*.csv

---
## build 1.2.64
1. В fft форму добавили возможность показать исходный сигнал по галочке.

---
## build 1.2.63
1. Переработка окна **Обновление** и **Что нового**, теперь в едином стиле с Помощью.
---
## build 1.2.62
1. Улучшение работы с вводом математических формул. Автоввод, заполнение, скобки.
2. В расчет FFT добавлено новое окно Hamming и вычитание DC из сигнала.
3. Поправлен расчет FFT с прореживанием.
---
## build 1.2.61
1. Добавлен экспорт данных таблицы (срез - одна точка во времени) в Excel по ПКМ.
---
## build 1.2.60
1. При сохранении файла :если 1 файл, то заголовки без изменений. а если 2+ файла, то сохраняем в имени принадлежность к # файла.
2. Режим Удаления можно откатить по ПКМ - Отменить.
---

## build 1.2.59
1. Добавлена возможность удаление графиков из списка.
---

## build 1.2.58
1. MathEngine: расширение математических функций и преобразований:
- Добавлены зарезервированные идентификаторы time (сек) и pi
- Реализованы функции sin, cos, abs, ampl, im, WHamming
- Добавлены прямые и обратные преобразования Clarke / Park:
 - clarke_*, inv_clarke_*
 - park_*, inv_park_*
 - прямые abc_d/q и обратные dq_a/b/c

2. Расширен парсер формул: поддержка 3–4 аргументов, регистронезависимые имена
3. Исправлена логика разбора аргументов функций
---
## build 1.2.57
1. Экспорт всегда через единую ось X
 	- В файле всегда одна колонка Time
 	- Она всегда ось X, а не “канал”
 	- Никаких дубликатов Time / Время, мсек больше не возникает
2. Пользователь управляет осью X при сохранении
	Диалог реально влияет на результат:
	- Значение Time
	- как отображается сейчас
	- глобальный DateTime
	- относительное (t − t₀)
	- абсолютное числовое

        Сетка Time:
	- нерегулярная (union ключей)
	- регулярная (dt, auto/manual)

	Заполнение пропусков

	- пусто
	- last-hold
	- линейная интерполяция

	И всё это применяется одинаково к:
	- обычному CSV
	- calc CSV
3. Импорт ↔ экспорт симметричны
---
 
## build 1.2.55
1. Убран лишний запрос про период данных, если есть поле Time.
2. Оптимизация кода.
3. Поле Time теперь показывается там где надо.
---
## build 1.2.53
1. Добавлен режим Глобального времени для логов не периодической формы с полем Time куда обычно кладется московское время.
2. Возможно объединение логов с глобальным временем на одном графике.
3. Возможно одновременное открытие разных логов с осциллографа с разной временной сеткой.
4. Поддержка логов с пульта 23550.1

---
## build 1.2.50
1. Новый алгоритм расчета FFT. 
2. Автошаг для сдвига графиков по Х.

---
## build 1.2.48
1. Добавлен Измеритель. Показывает дельту между двумя точками измерения P1 и P2.

---
## build 1.2.47
1. Авто выбор режима расчета Фурье - Авто, Точный, Быстрый.
2. Авто расчет шага для сдвига графиков по оси Х для нескольких файлов.
3. Фильтр по файлам Вкл/Выкл.

---
## build 1.2.46
1. Мелкие правки с дизайном формы.

---
## build 1.2.45
1. Теперь можно открывать несколько файлов одновременно, с их объединением по оси Х. Вывод производится на один график. Номер файла выведен в доп колонке Файл#.

---
## build 1.2.42
1. Добавлена функция rms_t() и новый вариант rms() с возможностью задать окно.
---
## build 1.2.41
1. Мелкие правки. Иконки.
2. В окне fft по умолчанию включен Сканер.

---
## build 1.2.40
Множество изменений и улучшений.
1. Добавлен механизм математики над каналами. Функции сложения, умножения, вычитания, фильтрации, rms, логические и т.д. Требуется внимательное тестирование.
2. Лобавлен механизм расчета FFT БПФ. Для любого канала.
3. Переработан механизм первоначального вырезания и разворацивания. Добавлено окно по оси Х работающее после Вырезания.
4. Убрано моргание галочек при обновлении.
5. Подписаны слои. Переработано меню переноса на слои.
5. Множество других изменений и улучшений.

---
## build 1.1.33
1. Исправление ошибок отображения графиков при переносе на другой слой #38

---
## build 1.1.32
1. Не рабочая. Теперь при импорте/экспорте учитывается состояние Включено/Выключено. 
   Старые файлы поддерживаются с оговоркой, что при их импорте все поля считаются включенными. #38

---
## build 1.1.31
1. Проверка на пустые строки в алгоритме восстановления порядка для корректного отображения масштаба.

---
## build 1.1.30
1. #36 Есть возможность установить отдельный диапазон, если центровая линия равна нулю. Пока что стоит (-1; +1)

---
## build 1.1.29
1. #36 Тестовое изменение алгоритма масштабирования

---
## build 1.1.28
1. Добавлена опциональная возможность при открытии файла с логами сформировать координатную ось для него  #34
2. Исправление проблемы некорректного отслеживания при экспорте и импорте настроек вида. #35
3. Исправление бага, при котором отмена открытия файла на этапе ввода настроек, если этот или другой файл уже был открыт ранее, приводила к вылету программы.

---
## build 1.1.27
Подправлена работа запуска программы и ее закрытие. Баг #33.

---
## build 1.1.26

### Add Convertor csd #30 #31

Добавлен конвертор, поддерживающий два режима работы:
1) Последовательная конвертация файлов с применением общих настроек (изменение имён каналов).
2) Слияние файлов с нескольких осциллографов на основе файлов первого осциллографа.
Чтобы открыть конвертор, выберите в основном окне в меню сверху: Модули -> Конвертор csd.
Поддерживаются файлы, содержащие до 8 каналов. Количество осциллографов задаётся в правом верхнем углу окна конвертора.
Словарь можно выбрать, нажав на кнопку в левом верхнем углу окна Конвертора.

### Добавлена функция отмены операции по слиянию файлов

Обновление алгоритма слияния файлов #32
Комментарии к CsdConvert

### Обновление интерфейса осциллографа

Добавлена возможность посмотреть список выбранных файлов для осциллографа.
Двойной клик показывает в проводнике расположение файла.

### Добавлена возможность прервать операцию при закрытии главного окна

---
## build 1.1.25
- Добавлен экспорт файла как .csd #29
  Файл -> Экспортировать как... -> .csd

---
## build 1.1.24
- Обновление #28
  Во время проверки новой версии совершается запрос файла build_[номер версии].md
  Например "build_1.1.22.md"
  Если такой файл был обнаружен, то в предупреждении о новой версии появляется возможность посмотреть
  список изменений из этого файла, а также запустить установку обновления.
- Изменение файла для истории обновлений #28
  Теперь программа сверяется с файлом Readme.md
  содержащим всю историю обновлений.
  Программа сверяет свою версию по списку
  и отображает только нововведения,
  произошедшие после текущей сборки.
- Добавлена возможность посмотреть историю обновлений #28

---
## build 1.1.23
- Исправление визуального бага. 
  Корректное отображение слоёв, если слои
  у элементов в таблице идут не по порядку.
- Обновление пункта "Вид" #27 
  Теперь, перед импортом новых настроек, происходит сброс старых.

- Добавлена возможность сбросить настройки вида (Слой и альтернативная ось) к настройкам по умолчанию.

- Добавлена возможность упорядочить график в случае, если произошёл разрыв между слоями (слой 0, 1, 3, 4), 
  из-за чего возникает визуальный баг отображения графиков.



---
## build 1.1.22
- Оптимизация алгоритма отображения промежуточных слоёв.


---
## build 1.1.21
- Добавлена функция отмены закрытия программы.
- Добавлено отображение полного имени файла в названии и в правом нижнем углу #26.
- Минорные изменения алгоритма для корректного отображения временной линии.
- Исправление визуального бага. 
  Некорректное отображение временной линии при работе с несколькими слоями.
- Обновление выбора даты и времени. Проверка файла с настройками вида. 
  Добавлена пользовательская подсказка для выбора временной линии.
  Теперь в выборе доступны только элементы, содержащие дату и время, а не все.
- Добавлена проверка файла с настройками вида на валидность.
- Исправление визуального бага с подписями по оси "Время" при импорте настроек вида.

---
## build 1.1.20
- Сохранение настроек отображения слоёв #16.
  Добавил возможность импортировать и  экспортировать параметры отображения графиков - текущий слой и настройку альтернативной оси.

---
## build 1.1.19
- Минорное обновление интерфейса
- Исправлено отсутствие управления сканером через стрелки.
- Исправление автоматического масштабирования #24.
  При открытии файла или добавлении нового слоя графики строятся в режиме масштабирования для корректного отображения.
- Исправление фризов при массовом внесении изменений в таблицу #23.
  При изменении диапазона фризы появлялись из-за вызова функции valuesAtCursor(x) каждый раз при внесении изменений в строку таблицы.

  Сейчас алгоритм изменён:
  Изменения в таблицу записываются не построчно, а по столбцам. В конце итерации производится проверка - нужно ли обновление значений на сканере.

---
## build 1.1.18
- Хотфикс #24.
  Исправление ошибки отрисовки при переносе элемента на другой слой.

- Исправление ошибки с отображением сканера при повторном открытии файла.
- Изменение отображения времени.
  Теперь время в правом верхнем углу главного окна отображается с миллисекундами.
- Отладочная заплатка #23.
  При изменении сканер отключается в начале и включается по завершению. Позиция сохраняется. Нужно проверить, пропадут ли фризы. У меня время изменения сократилось кратно.

---
## build 1.1.17
- Добавлена поддержка нескольких экранов #20.
- Перемещение диалога с выбором слоя теперь ограничено доступной областью экрана #20.
- Перемещение диалога с выбором слоя ближе к курсору #20.
- Настройка минимального размера графика #16.
- Добавлены отступы в таблице, удаление авторазмера #22.


