Как изменить конфигурацию Online Designer в коде программы

29.07.2017

Перед скачиванием Online Designer с сайта FastReport, вы должны предварительно скомпилировать его. Но, для этого нужно сначала задать конфигурацию программы в специальном визуальном построителе. Но что, если ваши потребности изменились, и вам нужна другая конфигурация? Вам приходится снова создавать OnlineDesigner в визуальном построителе, скачивать его и добавлять в свой проект. А если в рамках одного проекта вам нужны разные конфигурации дизайнера для разных случаев? Ваш код начинает дублироваться для работы с разными версиями дизайнера, что добавляет нежелательные «запахи», как сказал бы не безызвестный Мартин Фаулер.

Но не все так плохо!

В этой статье я расскажу о новой функциональной возможности – изменение конфигурации онлайн дизайнера в коде программы. Собственно, в коде программы мы будем переопределять файл конфигурации дизайнера, который представляет собой документ в формате json. Эта возможность появилась в версии 2017.3.3. Такая функция может быть полезна для смены оформления и некоторых других параметров дизайнера.

Как это работает? Онлайн дизайнер вначале загружает параметры по умолчанию, а затем изменяемые - они переопределяют начальные установки.

Переопределяемый конфиг хранится в свойстве: WebReport.DesignerConfig в виде строки в JSON формате.

Давайте рассмотрим на примере. Создадим ASP.Net MVC приложение. Добавляем в проект папку с Online Designer. Назовем ее WebReportDesigner. В нее помещаем содержимое архива, скачанного с сайта FastReport после конфигурирования дизайнера.

В Reference добавляем ссылку на библиотеки FastReport.dll и FastReport.Web.dll .

Теперь, добавим в контроллер HomeController в Index следующий код:

Пример использования этого свойства:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using FastReport.Web;
using System.Web.UI.WebControls;

 public ActionResult Index()
 {
 WebReport webReport = new WebReport();
 webReport.Width = Unit.Percentage(100);
 webReport.Height = Unit.Percentage(100);
 string report_path = GetReportPath();
 System.Data.DataSet dataSet = new System.Data.DataSet();
 dataSet.ReadXml(report_path + "nwind.xml");
 webReport.Report.RegisterData(dataSet, "NorthWind");
 webReport.Report.Load(report_path + "Simple List.frx");
 webReport.DesignReport = true;
 webReport.DesignScriptCode = false;
 webReport.Debug = true;
 webReport.DesignerPath = "~/WebReportDesigner/index.html";
 webReport.DesignerLocale = "en";
 webReport.DesignerSaveCallBack = "~/Home/SaveDesignedReport";
 webReport.ID = "DesignReport";
 // file with custom configuration
 string designerConfigFile = this.Server.MapPath("~/App_Data/DesignerConfig.json");
 // load file in DesignerConfig
 if (System.IO.File.Exists(designerConfigFile))
 webReport.DesignerConfig = System.IO.File.ReadAllText(designerConfigFile);
 ViewBag.WebReport = webReport;
 return View();
 } 

 Как вы заметили, у WebReport добавилось свойство DesignerConfig. В нем мы определяем файл конфига, переопределяющий нужные параметры Online Designer. Файл размещаем в папке App_Data, или любой другой, внутри проекта.

Вот пример содержимого файла /App_Data/DesignerConfig.json: 

1
2
3
4
5
6
7
8
9
10
11
12
{
"font-names": [
 "Calibri",
 "Calibri Light",
 "Comic Sans MS",
 ],
"default-font-name": "Calibri",
"preload-fonts": ["Calibri"],
"scale": 1,
"grid": 9.45,
"sticky-grid": true
}

 В этом файле мы изменили набор шрифтов, доступных в текстовых компонентах онлайн дизайнера.

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

  • "font-names" – массив, содержащий имена шрифтов, которые доступны для установки у текстовых компонентов;
  • "default-font-name" – шрифт по умолчанию, который устанавливается новым созданным текстовым компонентам;
  • "preload-fonts" – массив, содержащий набор шрифтов, которые, до начала инициализации дизайнера будут предзагруженны. Таким образом, чем больше здесь шрифтов, тем дольше будет происходить изначальная загрузке дизайнера;
  • "prefetch-fonts" - загружает шрифты подобно предыдущей установке, но на более позднем этапе инициализации. К этому моменту уже будет видна страница и панели инструментов;
  • "scale-mobile" - масштаб страницы по умолчанию для просмотра дизайнера с мобильных устройств (от 0 до 2);
  • "scale" - масштаб страницы по умолчанию для просмотра дизайнера со всех других устройств (от 0 до 2);
  • "grid" - шаг сетки;
  • "sticky-grid" – «прилипать» компонентам к сетке (true/false);
  • "hotkeyProhibited" - запрещает горячие клавиши;
  • "save_success_redirect":

{

"url" - куда произвести редирект, после успешного сохранения;

"blank": - открывать в новой вкладке;

"useParent" - в случае, когда онлайн дизайнер в iframe произвести редиркет в родительском окне, в которое встроен дизайнер;

"removeConfirmation" - не показывать подтверждение при редиректе (после сохранения);

},

  • "colors":

{

"button-circle" - цвет элементов ресайза и прочих круглых элементов на рабочей области;

"angle-slider" - цвет элемента смены угла;

 "default-band-separator" - цвет разделителя между бендами;

"selected-band-separator" - цвет активного разделителя между бендами, когда бенд в процессе ресайза;

  },

  • "show-band-title" - показывать заголовок бенда;
  • "add-bands" - возможность запретить добавление бенда;
  • "resize-bands" - возможность запретить изменять размер бендов;
  • "movable-components" - возможность запретить перемещение компонентов;
  • "resizable-components" - возможность запретить изменять размер компонентов;

Панели кастоминации (в левой части, панель инструментов с кнопками)

  • "customization":

{

        "properties": {

            "enable" - активность панели;

            "button" - показывать на панели инструментов кнопку для этой панели;

            "shown" - отрывать панель по умолчанию при загрузке онлайн дизайнера;

            "header": - заголовок панели;

            "hasBorder" – визуальная граница панели;

            "movable" - возможность двигать панель посредством drag & drop;

            "resizable" – возможность изменять размер панели;

        },

        "events": {

            "enable": true,

            "button": true,

            "shown": false,

            "header": true,

            "hasBorder": true,

            "movable": true,

            "resizable": true

        },

        "report-tree": {

            "enable": true,

            "button": true,

            "shown": false,

            "header": true,

            "hasBorder": true,

            "movable": true,

            "resizable": true

        },

        "data": {

            "enable": true,

            "button": true,

            "shown": false,

            "header": true,

            "hasBorder": true,

            "movable": true,

            "resizable": true

        },

        "preview": {

            "enable": true,

            "shown": true,

            "button": false,

            "header": false,

            "background": "initial",

            "container": "horz"

            "width": 125 - ширина элементов превью по умолчанию;

            "table": true

        }

    },

    "default-tab-menu": "home" – закладка по умолчанию в верхней панели инструментов при загрузке дизайнера;

    "show-saving-progress": "default", - возможные значения - default, small, large;

    "notifications": "default", - возможные значения - default, html5, false;

    "notifications-mobile": "default" возможные значения - default, html5, false;

}

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

14 марта 2023

Будущее генерации отчетов с помощью Blazor WebAssembly

Пошаговая инструкция по созданию демо приложения на .NET 6 и 7 прямо в браузере с помощью Blazor WebAssembly в FastReport .NET.
7 марта 2023

Настройка API для сборки FastReport Online Designer

Рассказываем об автоматизации процесса сборки FastReport Online Designer Builder через API при изменении версии продукта.
14 февраля 2023

Как настроить веб-сервер Apache2 для FastReport .NET

Запускаем веб-сервер Apache2 в операционной системе Linux для FastReport .NET и .NET 5 с помощью нескольких простых команд.