Как изменить конфигурацию 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;

}

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

.NET .NET MVC MVC Online Designer Online Designer WebReport WebReport
10 февраля 2025

Как попробовать FastReport .NET WEB перед покупкой

Протестировав WEB пак перед покупкой, вы сможете сделать осознанный выбор: подходит ли вам FastReport .NET для ваших задач.
6 ноября 2023

Установка FastReport Online Designer

В статье рассказывается, как установить FastReport Online Designer — инструмент для создания и редактирования отчётов.
14 марта 2023

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

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