Механизм синхронизации с моделью

  • Изменены атрибуты в модели приложения для Band'ов;
  • Изменен механизм синхронизации редактора с моделью;
  • Добавлен пример работы AdvancedBandedListEditor в FC;

Временные файлы excel отчетов делятся по пользователям и по умолчанию хранить во временном каталоге с правами уровня полный доступ. В данном решении изменен подход к настройке путей для модулей Excel отчетности и из параметров шаблонов Excel отчетов исключено поле ExcelFileName. Ниже приведено подробное описание каждого изменения.

Настройка путей для модулей Excel отчетности.

При использовании модулей, реализующих поддержку Excel отчетности в приложении, может понадобиться настройка путей хранения файлов шаблонов и путей для временных файлов генерируемых отчетов. Ниже описаны способы настройки путей для приложений Windows и ASP.NET.

  1. Windows версия приложения (используются модули Xafari.Reports.Excel, Xafari.Reports.Excel.Win).

Пути задаются через свойства класса XafariReportsExcelWinModule
XafariReportsExcelWinModule.ExcelReportsPath - путь для временных файлов генерируемых отчетов. По умолчанию используется пользовательский каталог для временных файлов (каталог получен вызовом Path.GetTempPath()).
XafariReportsExcelWinModule.ExcelTemplatesPath - путь, где хранятся файлы шаблонов excel отчетов. По умолчанию используется текущий каталог приложения. Настройку путей под нужды конкретного приложения можно выполнить в любом Win модуле.

Пример кода:
public sealed partial class MyWindowsFormsModule : ModuleBase
{
public override void Setup(XafApplication application)
{
base.Setup(application);
Application.SetupComplete += Application_SetupComplete;
}
private void Application_SetupComplete(object sender, EventArgs e)
{
// Настройка пути для хранения шаблонов Excel отчетов и пути для временных файлов отчетов.
var module = ((XafApplication)sender).Modules.FindModule();
if (module != null)
{
// Здесь задается требуемый путь для временных файлов Excel отчетов.
module.ExcelReportsPath = ...;
// Здесь задается требуемый путь для хранения шаблонов Excel отчетов
module.ExcelTemplatesPath = ...;
}
}
...
}

  1. Web версия приложения (используются модули Xafari.Reports.Excel, Xafari.Reports.Excel.Web).

Пути задаются через свойства класса XafariReportsExcelWebModule
XafariReportsExcelWebModule.ExcelReportsPath - путь для временных файлов генерируемых отчетов. По умолчанию используется системный каталог для временных файлов (каталог получен вызовом Path.GetTempPath()).
XafariReportsExcelWebModule.ExcelTemplatesPath - путь, где хранятся файлы шаблонов excel отчетов. По умолчанию используется "<Текущий каталог приложения>\App_Data\ExcelTemplates".

Настройку путей под нужды конкретного приложения можно выполнить в любом Web модуле.

Пример кода:
public sealed partial class MyAspNetModule : ModuleBase
{
public override void Setup(XafApplication application)
{
base.Setup(application);
Application.SetupComplete += Application_SetupComplete;
}
private void Application_SetupComplete(object sender, EventArgs e)
{
// Настройка пути для хранения шаблонов Excel отчетов и пути для временных файлов отчетов.
// Важный момент: теперь пути модулями отчетности используются непосредственно, без дополнительной обработки,
// поэтому, здесь нужно задавать абсолютные пути (например, используя HttpContext.Current.Server.MapPath).
var module = ((XafApplication)sender).Modules.FindModule();
if (module != null)
{
// Здесь задается требуемый путь для временных файлов Excel отчетов.
module.ExcelReportsPath = ...;
// Здесь задается требуемый путь для хранения шаблонов Excel отчетов.
module.ExcelTemplatesPath = HttpContext.Current.Server.MapPath(@"~\Report");
}
}
...
}

Следует учесть, что в ASP.NET приложениях существуют определенные ограничения на права доступа к файлам. Эксперименты показали, что при работе на IIS 7, метод Path.GetTempPath() возвращает путь, по которому есть возможность создавать, записывать и удалять файлы. Поэтому, можно использовать пути по умолчанию для временных файлов, если это не противоречит требованиям безопасности.
Один из других возможных способов - это создание специальной папки для временных файлов в каталоге приложения и настройке соответствующих прав доступа к этой папке. Данная операция выполняется при развертывании приложения.

Что касается шаблонов отчетов, то достаточно доступа только на чтение, т.к. в настоящее время в ASP.NET приложениях нет возможности редактировать шаблоны, следовательно, не нужен и доступ на запись.

Имя файла отчета в шаблоне Excel отчетов.

Из параметров шаблонов Excel отчетов исключено поле ExcelFileName - имя файла отчета. Теперь это имя генерируется автоматически. При предварительном просмотре отчета, во время генерации временного файла, для получения имени файла используется метод Path.GetRandomFileName(). А при сохранении отчета в виде файла в качестве имени файла используется наименования параметра, с которым генерируется отчет.

Реакция на атрибут AllowWrite при описании настроек

AllowEdit присваивается не только объекту редактора, но и модели соответствующего PropertyEditor'а.

Локализация в модуле безопасности

Локализация Navigate изменена с значения "Переход" на значение "Навигация"

Параметры и шаблоны отчета должны быть редактируемы по умолчанию и не зависеть от редактирования информации об отчете

Набор параметров и шаблонов при просмотре/редактировании информации об отчете (XafariReportInfo) являются редактируемыми по умолчанию. Редактирование параметров и шаблонов не требует сохранения отчета.

Необходима доработка ReportArmItem - добавить опцию х - запрос параметров отчета

В модели приложения узлу ReportArmItem добавлено новое свойство - ShowParametersDialog. После установке его в true при запуске отчета из АРМов сначала выводится диалог редактирования параметров отчета.

При попытке присвоить значение настройке в ModuleUpdater происходит зацикливание ModuleUpdater

  • Доработана система настроек с учетом возможности обновлять настройки в Updeter'e;
  • Пример модно увидеться в приложении FC;
  • Для работоспособность необходимо использовать XafariModuleUpdater(документация во вложенных файлах).

Реализована отложенная загрузка Project.Instance

Добавлен класс SafeThreadProjectLoader, обеспечивающий безопасную отложенную загрузку Project.

Добавлена возможность отключить использование EntityFactory

Добавлено свойство EntityFactory.Enabled (по умолчанию false) - включает/отключает механизм EntityFactory.

Настройки для редакторов Numeric берутся из настроек колонок и редакторов

Убрано кеширование настроек из ModelMember.

Исправлена ошибка не отображения кнопок в шаблонах Wizard

Для контрола убраны конкретные значения размера.

Устранена ошибка с доступом к правам на действие

  • Метод XafariSecuritySystem.Setup стал устаревший;
  • Для получения списка действий используется XafariModule.Application.Model.

Решение ошибки связанной с моделью приложения

Добавлен пример (в приложения FeatureCenter и Northwind.DC) реагирования на изменение ссылки на модель.

Изменен запрос на сервер, проверяющий есть ли у пользователя права на тип

Для наследников DynamicProperties, которые генерируются в рантайме используется базовый тип. Базовый тип в свою очередь известен серверу. https://www.devexpress.com/Support/Center/Question/Details/Q550736

Алгоритм расчёта ключа слоя настройки

ID Слоя настроек форматируется как "Константное имя слоя" + "Имя объекта, на основании которого построен слой" + Guid

Считывание настроек MaxWidth и MinWidth из модели

Настройки MaxWidth и MinWidth считываются 1 раз при инициализации редактора свойств.

При нажатии Ctrl +A, очищается коллекция выбранных объектов и заполняется заново

Ошибка устранена, восстановлено ожидаемое поведение.

Исправлено действие с коллекцией выделенных объектов при клике мышью

Ошибка устранена, восстановлено ожидаемое поведение.

Корректное очищение коллекции выделеных объектов

Ошибка устранена, восстановлено ожидаемое поведение.

Возможность множественного выбора

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

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

  1. Редакторы

WinLongPropertyEditor,
WinIntegerPropertyEditor,
WinFloatPropertyEditor,
WinDoublePropertyEditor,
WinDecimalPropertyEditor,
WinBytePropertyEditor

переименованы соответственно:
XafariLongPropertyEditor,
XafariIntegerPropertyEditor,
XafariFloatPropertyEditor,
XafariDoublePropertyEditor,
XafariDecimalPropertyEditor,
XafariBytePropertyEditor.

  1. Добавлена возможность использования функционала(функционал описан в документации)в списковых формах в режиме редактирования.
  2. Добавлена настройки для данных редакторов в узлы ViewItem'a.
  3. Исправлены имена редакторов в документации.

При выборе Рабочего места добавить check box, запомнить выбор и использовать выбранное значение при следующем входе

В диалог выбора рабочего места, который может выводиться при старте приложения, добавлен флажок "Запомнить выбор" ("Remember choice"). После установки этого флажка для установившего флажок пользователя диалог выбора рабочего места выводиться не будет. Рабочее место при каждом старте приложения будет выбрано автоматически. Такое поведение сохраняется до тех пор, пока пользователь не переключит рабочее место во время работы приложения. После чего диалог выбора рабочего места будет выводиться снова.
Были изменены наименования классов модулей Workplace с целью соответствия общепринятым соглашениям:
WorkplaceModule -> XafariWorkplaceModule
WorkplaceAspNetModule -> XafariWorkplaceWebModule
WorkplaceWindowsFormsModule -> XafariWorkplaceWinModule

Дополнительные доработки

  • "Лог" переименован в "Протокол";
  • Изменено отображение предупреждений и ошибок в логировании длительных операций;
  • Добавлена документация по ASPxGroupPropertyEditor;
  • Наименование рабочего места соответствует локализованному наименованию роли (значению поля Caption узла модели Application.Xafari.Roles.<Role_Name>).
  • Добавлена возможность указывать namespace для сущности DC при ее регистрации в приложении. Все DC из Xafari регистрируются в отдельных namespace;
  • Изменен механизм создания в апдейтере объектов, для которых применяются нумераторы;
  • Добален ASPxGroupPropertyEditor;
  • Добавлен функционал для работы с ObjectSpace'ами в апдейтер;
  • При создании временных файлов Excel-отчетов снимается атрибут "ReadOnly".