Skip to content
This repository has been archived by the owner on Jan 5, 2019. It is now read-only.

Latest commit

 

History

History
111 lines (86 loc) · 7.11 KB

README.md

File metadata and controls

111 lines (86 loc) · 7.11 KB

Params Viewer

===============

1. Описание

1.1. Основная идея

Приложение парсит CSV файл со значениями дескрипторов объектов на изображении. Далее файл отображается в виде таблицы на главном окне, а также пользователь может выбрать те дескрипторы которые будут выступать в роли значений кривой графика откладывавемых по X или Y.

1.2. Обработка файлов

Пользователь может выбрать 1 или несколько файлов с значениями дескрипторов. Файл формата CSV в следующем формате:

DescriptorName1 DescriptorName2 ... DescriptorNameN
ObjectName1 D(1, 1) D(1, 2) ... D(1, N)
... ... ... ... ...
ObjectNameM D(M, 1) D(M, 2) ... D(M, N)

В случае когда файлов несколько пользователь может выбрать каким образом обрабатывать эти файлы.

Режимы обработки файлов: Отобразить только объекты содержащиеся ...

  • 1. Все объекты из А и из В. Дубликаты - оба значения (дескриптора)
  • 2. Все объекты из А и из В. Дубликаты - значения только из А
  • 3. Все объекты из А и из В кроме дубликатов
  • 4. Только дубликаты из А и В, значения из обоих
  • 5. Только дубликаты из А и В, значение только из А
  • 6. Все объекты только из А кроме тех которые встречаются в В
  • 7. Все объекты из А, дубликаты значение только из В
  • 8. Все объекты из А, если дубликаты отсутсвуют
  • 9. Все объекты из А и Все объекты из В, десли убликаты отсуствуют

1.3. Построение графика

TODO: про погрешности


2. Алгоритм работы программы

2.1. Инициализация

    - СИнициализирую 1 вкладку с пустой таблицей и график (сетка, оси...)
    - Помечаю все неактивным кроме кнопки открытия
    - Открывается файл = все активное + парсинг 
    - Помещаю полученную модель в таблицу и настройку графика

2.2. Валидация выбранных юзером файлов

Читаю оба файла. Чтобы файлы считать корректными необходимо и достаточно:

    [x] Оба файла существуют и читаются 
    [x] Файлы одного расширения (csv)
    [x] Разделитель - запятая 
    [x] __*(первая строка)*__ = *имена дескрипторов* И __*первый столбец*__ = *имена объектов*
    [x] Число столбцов (дескрипторов) равно 
    [x] Имена столбов совпадают соответсвенно

2.3. Отображаю их в табличках

    - Создаю новую вкладку TabWidget'а
    - Добавляю туда TableView 
    - Создаю TableModel с заголовком равным первой строке файла.
    - Первый столбец = ID = Primary Key - заголовочный столбец
    - В TableModel копирую табличку из файла, все просто так без разбора.

2.4. Формирую список параметр.ов (делегатор)

    - Создаю табличную модель в которой будет 4 типа параметров:
        4.1. Выбрано/Не выбрано 
        4.2. Название поля
        4.3. Ссылка на значение первой таблицы
        4.4. Ссылка на значение второй таблицы
    - Создаю ListView соответсвенно с этой моделью 
    - Устанавливаю листнер (настраиваю сигнал-слот) на нажатия пользователя 
    - Как только произошло нажатие достаю из обоих таблиц значение ячейки такой то столб такой то параметр 
    - Полученные значения помещаю в вызов функции отрисовки графика

2.5. Отображаю на графике

    - Создаю вектор всех возможных значений выбранного пользователем 
    - Для этого веткора считаю min/max и медиану
    - Формирую оси : размах от min до max, цена деления = медиана. Название оси = название параметра. 
    - Для выбранного параметра, по его названию определяю номер столбца содержащего СКО этого параметра
    - Отображаю на графике для каждого объекта (строки) точки с координатами х = значение параметра для этого объекта из файла А, y = значение соответсвующего параметра из файла B соответственно. 
    - В классе точки будут содержаться 2 ссылки на строка+столбец этой точки (объекта)  в исходных таблицах 

2.6. Для 5-го пунта желательно


  • Сделать таблицу масштабируемой
  • Отображать вокруг точек полупрозрачную область погрешности, которая будет представлять из себя круг диаметром 2 * ср. ар. СКО для указанного параметра помещенного центром в координату точки
  • При наведении мыши на точку отображается ацйди объекта и если на него кликнуть идет переход к этому параметру

3. GUI

TODO: вставить скрины