GithubHelp home page GithubHelp logo

inozpavel / imry Goto Github PK

View Code? Open in Web Editor NEW
11.0 2.0 0.0 24.38 MB

Программа для автоматического создания microsoft word отчетов из шаблонов

License: Apache License 2.0

C# 100.00%
wpf wpf-application drag drop application microsoft-word

imry's Introduction

IMRY: I'll Make Reports for You

Описание проекта

IMRY это программа для автоматического создания Word отчетов. Отчеты создаются из шаблонов и конфигурационных файлов. Шаблон - набор лабораторных и практических работ, в которых указаны название, цель, теоретическая часть, общее задание и индивидуальные задания, выводы.

Установка

Для установки программы можно скачать из папки InstallationFiles/Installer/Installer-SetupFiles файл Installer.exe, или просто нажать на большую кнопку сверху. При открытии файла запустится стандартный установщик, нужно будет проследовать по всем шагам. После установки программма будет отображаться в списке установленных программ, появится иконка на рабочем столе и в меню «Пуск».

Обновление программы

При выходе новой версии, нужно скачать ее и запустить установщик. Он автоматически обновит файлы до новой версии. Программу удалять не нужно

Запуск программы

Чтобы запустить программу, можно воспользоваться ярлыком на рабочем столе или в меню «Пуск».


Реализованный функционал

  • Создание отчетов
  • Создание, сохранение, изменение шаблонов для отчетов
  • Сохранение и загрузка информации о студенте
  • Переход к папке с отчетами после создания отчета
  • Кнопка для быстрого перехода к репозиторию для обновления
  • Окно с настройками для изменения главного конфигурационного файла
  • Возможность сохранять и загружать введенные данные при генерации отчета
  • Автозагрузка сохраненных данных

В разработке

  • Возможность создавать отчеты для разных предметов
  • Возможность выбирать расширения файлов для добавления при использовании Drag & Drop для каждой работы

Удаление

Для удаления программы можно воспользоваться любым деинсталлятором. Также можно в меню «Пуск» нажать правой кнопкой по иконке приложения, затем "Удалить".


Конфигурирование работы приложения

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

Описание конфигурационных файлов

Для работы программы нужен главный конфиругационный файл в папке приложения, который содержит следующие параметры:

Параметры, которые хранят значение

Параметр Тип данных Описание параметра
ShortSubjectName string Расширение, которое используется для сохранения и загрузки данных
WorkHasTitlePage bool Есть ли в работе титульная страница
WorkHasTitlePageParams bool Есть ли в работе в титульнике какие-то параметры

Параметры, которые хранят путь к файлу

Параметр Тип данных Описание параметра Тип данных в файле
WorkTitlePageFilePath string Путь до файла с титульником (при наличии) Dictionary<string, string>
WorkTitlePageParamsFilePath string Путь до файл с параметрами для титульника (при наличии) List<string>
PermittedDragAndDropExtentionsFilePath string Разрешенные расширения файлов при использовании Drag & Drop List<string>
CurrentTemplateFilePath string Текущий шаблон для работ Dictionary<string, Dictionary<string, ReportInformation>> ( лучше создавать в программе в пунке меню "Создать шаблон" )
UserDataFilePath string Путь до файла с информацией о пользователе StudentInformation ( создается программой )

Параметры, которые хранят путь к папке

Параметр Тип данных Описание параметра
ReportsPath string Путь, где будут сохраняться сгенерированные отчеты
SavedReportsPath string Путь, где все отчеты будут сохраняться все введенные данные в отчеты

Пример главного конфигурационного файла

{
  "ShortSubjectName": "java",
  "WorkHasTitlePage": true,
  "WorkTitlePageFilePath": "./Subjects/Java/TitlePage.docx",
  "WorkHasTitlePageParams": true,
  "WorkTitlePageParamsFilePath": "./Subjects/Java/TitlePageParams.params.json",
  "PermittedDragAndDropExtentionsFilePath": "./Subjects/Java/PermittedDragAndDropExtentions.extensions.json",
  "CurrentTemplateFilePath": "./Subjects/Java/JavaTasks.template.json",
  "ReportsPath": "./Reports/Java",
  "SavedReportsPath": "./SavedReports/Java"
}

При использовании Drag & Drop, программа фильтрует файлы, список разрешенных расширения вынесен в отдельный конфигурационный файл.

Если добавить символ *, программа добавит все файлы без фильтрации

Пример файла с разрешенными расширениями файлов для Drag & Drop

[
    "срр",
    "h",
    "cs",
    "java",
    "py",
    "asm",
    "png",
    "bmp",
    "jpg",
    "jpeg",
    "*"
]

В пустом документе ( *.doc, *.docx ) можно указать ряд параметров, которые будут заменены на значения

!!! Все параметры должны быть вставлены в документ формате {{НазваниеПараметра}}


Таблица параметров

Параметр Описание На что будет заменен
UserName ФИО пользователя (полное или инициалы) Строка (значение формируется из введенных данных
WorkType Тип работы "Практическая работа" / "Лабораторная работа"
WorkNumber Номер работы Число
WorkName Полное название работы Строка ( значение берется из шаблона )
TheoryPart Теоретическая часть работы Строка ( значение берется из шаблона )
WorkTarget Цель работы Строка ( значение берется из шаблона )
Conclusions Выводы работы Строка ( значение берется из шаблона )
CommonTask Общее описание работы Один или несколько абзацев
DynamicTasks Выбранные задания в работе Один или несколько абзацев
UserFiles Файлы, добавленные пользователем Один или несколько абзацев

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

Пример конфигурационного файла для титульной страницы

{
    "DesciplineName": "«Программирование на Java»",
    "TeacherName": "Фамилия И. О.",
    "Departament": "преподаватель кафеды",
    "City": "Москва",
    "Year": "2020"
}

Добавление \ изменение работ

Для добавления новых работ в программе в главном меню есть отдельньные кнопки "Создатm шаблон" и "Изменить шаблон"

При заполнении шаблонов, можно также вставить изображения, изображение вставляется в виде {{image source="Относительный/абсолютный путь", name="Подпись картинки (можно не указывать)"}}. Картинки нумеруются автоматически.

imry's People

Contributors

druzai avatar imgbotapp avatar inozpavel avatar maxbqb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

imry's Issues

Вставка изображений

После обработки {{ past_here_tag }}
Должна происходить обработка тегов img.
Пример {{ img src="./src/Java/images/Test1.png" }} в отчёте должно быть заменено на картинку по текущему пути, либо на пустую строку (в случае любой ошибки)
при этом:

  • относительные пути "." указывают на папку содержащую конфиги и папку Reports
  • абсолютные пути воспринимаются как абсолютные пути.

На данном этапе считаем, что теги {{ img }} уже присутствуют в шаблоне report.docx

ReadOnly на файлах кладёт прогу на раз

ReadOnly на файлах отчётов.. при попытке сгенерировать отчёт программа падает

Открываем файл конфига программой, потом меняем ему атрибут на "Только чтение", попытка добавить новую работу кладёт программу.

Адекватным поведение считается:

  • Либо предложить пользователю снять атрибут (не ручками)
  • Либо прервать действие и попросить ручками снять атрибут (но тогда хотя бы директорию с файлом открыть)

Для файлов с кодом это по-идее не актуально, так как их мы не меняем.

Обработка отсутствия работ

Если в подтянутых работах нет практик или лаб (но что-то второе там есть)

image
Панель с генерацией таких работ отображать не нужно

Как на примере:

image

Если работ нет совсем

image
Кидать диалог на то, что шаблон пустой и disable "Создать отчёт" кнопку

Если работ больше 23 (Число не принципиально)

image
Scrollbar

Преформат-вставка

Вставка ПКМ по пустому полю

При этом происходит обработка вставляемого текста:

  • он тримится по краям (под нож все whilespace последовательности)
    Далее всё зависит от поля и ожидаемого формата его содержимого:
  • Удаление знаков препинания в конце (для названий работ)
  • Добавление точки в конце для:
    • индивидуальных заданий
    • общего задания
    • цели работы
  • Смена регистра (для названий работ)

Перезапись Shift+ПКМ по полю с любым содержимым

Обработка аналогична предыдущему, наличие содержимого в поле для ввода не проверяется.

Вызов обработчика для содержимого поля СКМ

(Не обязательная, но желательная часть)
Обработка текущего содержимого поля по правилам см. выше

Shift+СКМ нету)

P. S.

Если у тебя полетели стили заголовка, это заметят не все...
Если ты должен каждый раз, добавляя этот заголовок совершать "ритуал обхода", это будет бесить
Вывод: если программа для автоматизации неудобна в управлении — она бесполезна, как инструмент.

Фикс ложного удаления антивирусом установщика

Антивирус Касперского удаляет установщик, как вирус

image

Тег для получения номера картинки

Вид: {{ img_num src="path/to/image.png" }}

  • Заменяется на номер картинки имеющей путь эквивалентный src
  • Если такой картинки нет, заменяется пустой строкой
  • пути сравниваются как пути, а не как строки
    (то есть с учётом того, что одно место можно по разному обозначить)

Пример:

На рисунке {{ img_num src="path/to/image.png" }} изображён дом.
... где-то в документе есть рисунок {{ img src="path/to/image.png" name="Домик в вулкане" }}

Будет преобразовано к На рисунке 8 изображён дом

Помнить вариант!

Индивидуальные (динамические) задания, под некоторым номером,
должны отмечаться по-умолчанию, по факту частого выбора их пользователем.

Drag&Drop возможность выбора какие типы файлов загружать

В текущий момент отсутствует поддержка расширения .asm

Файлы кода для SASM

Хотелось бы видеть окно с перечислением всех обнаруженных расширений,
галочками можно отметить те, что стоит загрузить.
При этом:

  • Поддерживаемые программой (уже известные ей) расширения заранее отмечены
    (но можно снять галочку и программа вычеркнет их из известных, то есть больше заранее отмечать не будет)
  • Если пользователь отметил какое-либо расширение его стоит занести в известные и в дальнейшем отмечать заранее
  • Желательно иметь кнопки Выбрать всё и Снять выделение
  • При нажатии на выбор всего, все типы заносятся в известные
  • При нажатии на снятие выделения, все указанные типы стираются из извесных

Контейнеризация работ

FarFuture

Ресурсы и настройки для отдельной работы, а именно:

  • Титульная страница
  • Шаблон (наполнение)
  • Исходники для вставки (сейчас это только картинки, но кто знает...)

Всё это можно:

  1. Запихнуть в условный zip архив
  2. Сменить расширение на кастомное, например .wtask
  3. Рассматривать как цельный файл

Соответственно программа должна уметь такие файлы:

  • открывать для работы
  • создавать из исходников
  • скачивать из некоего общего хранилища
  • заливать туда же
  • автоматически отслеживать обновления уже скачанных работ

Поддержка клавиш и их сочетаний для совершения некоторых действий в программе

Было бы удобно добавить функциональность:

  • Удаление элемента не только кнопкой, но и клавишей Del. Аналогично при Shift + ПКМ, также комбинация Shift + Del
  • В редакторе выделение нескольких вариантов задания Shift + стрелка вверх или вниз и их удаление через 2 варианта: кнопки и сочетание клавиш

Добавление картинок в отчёт

Подобно тому, как мы можем добавить файл с кодом в отчёт,
мы должны иметь возможность добавить картинку.
При добавлении файла с картинкой, мы также можем добавить к нему комментарий.
Сюда
image

При сборке отчёта из шаблона ДО замены тегов {{ img }}, но ПОСЛЕ замены обычных тегов
производится вставка тегов {{ img }} в src добавляется путь до файла, в name подпись для картинки

Примеры:

  • {{ img src=".\pic.bmp" name="test my code" }}
  • {{ img src=".\pic2.bmp" }}

Соответственно атрибут name должен обрабатываться как подпись к картинке

теги img добавляются в том порядке, в котором расположены в настройках отчёта
code.java
img_test1.png
img_test2.png

или
test_img.bmp
code.asm // hate assembler

Вставка подписей с автонумерацией средствами Word

В конечном итоге должно существовать два тега:

  • {{ img src="..." name="..." }}
    представляет из себя обычное изображение с автонумеруемой подписью
    по типу "Рис. 2 Скин тестов моей программы"
  • {{ img_link_2 }}
    обычный тег, но вместо него подставляется ссылка на картинку (как в примере test.docx)

Обязательным условием является возможность использования этих тегов при составлении шаблонов работ

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.