Описание и примеры работы с классом DataManager
Glossary Item Box
Общие сведения
При работе с клиентской частью приложения возникает необходимость создавать, изменять и удалять данные сущностей без сохранения этих изменений в базу данных. Фиксация изменений в базу данных должна происходить при явном вызове метода сохранения. Данная функциональность реализована в классах DataManager и DataManagerItem.
Класс DataManager — синглтон, и доступен через глобальный объект Terrasoft. Данный класс предоставляет хранилище dataStore. В хранилище может быть загружено содержимое одной или нескольких таблиц базы данных. Например:
dataStore: { SysModule: sysModuleCollection, SysModuleEntity: sysModuleEntityCollection }
Здесь sysModuleCollection и sysModuleEntityCollection — коллекции данных типа DataManagerItem схем SysModule и SysModuleEntity. Каждая запись коллекции представляет запись из соответствующей таблицы в базе данных.
Диаграмма классов DataManager и DataManagerItem представлена на рисунке 1.
Рис. 1. — Диаграмма классов
Основные свойства и методы
Свойства и основные методы класса DataManager представлены в таблицах 1 и 2. Полный перечень свойств и методов можно узнать в разделе "JavaScript API клиентской части ядра платформы".
Табл. 1. — Свойства класса DataManager
Название | Тип | Описание |
---|---|---|
dataStore | Object | Хранилище коллекций данных. |
itemClassName | String | Имя класса записи. Имеет значение “Terrasoft.DataManagerItem”. |
Табл. 2. — Основные методы класса DataManager
Название | Параметры | Описание |
---|---|---|
select |
config {Object} — конфигурационный объект; callback {Function} — функция обратного вызова; scope {Object} — контекст выполнения функции обратного вызова. |
В случае если dataStore не содержит коллекцию данных с именем config.entitySchemaName, то метод формирует и выполняет запрос в базу данных, затем возвращает полученные данные, иначе возвращает коллекцию данных из dataStore. |
createItem |
config {Object} — конфигурационный объект; callback {Function} — функция обратного вызова; scope {Object} — контекст выполнения функции обратного вызова. |
Создает новую запись типа config.entitySchemaName со значениями колонок config.columnValues. |
addItem | item {Terrasoft.DataManagerItem} — добавляемая запись. | Добавляет запись item в коллекцию данных схемы. |
findItem |
entitySchemaName {String} — название коллекции данных; id {String} — идентификатор записи. |
Возвращает запись из коллекции данных схемы с именем entitySchemaName и с идентификатором id. |
remove | item {Terrasoft.DataManagerItem} — удаляемая запись. | Устанавливает признак isDeleted для записи item, при фиксации изменений запись будет удалена из базы данных. |
removeItem | item {Terrasoft.DataManagerItem} — удаляемая запись. | Удаляет запись из коллекции данных схемы. |
update |
config {Object} — конфигурационный объект; callback {Function} — функция обратного вызова; scope {Object} — контекст выполнения функции обратного вызова. |
Обновляет запись со значением первичной колонки config.primaryColumnValue значениями из config.columnValues. |
discardItem | item {Terrasoft.DataManagerItem} — запись, по которой будут отменены изменения. | Отменяет изменения для записи item, сделанные в текущей сессии работы с DataManger. |
save |
config {Object} — конфигурационный объект; callback {Function} — функция обратного вызова; scope {Object} — контекст выполнения функции обратного вызова. |
Выполняет сохранение в базу данных коллекций данных схем, указанных в config.entitySchemaNames. |
Свойства и основные методы класса DataManagerItem представлены в таблицах 3 и 4. Полный перечень свойств и методов можно узнать в разделе "JavaScript API клиентской части ядра платформы".
Табл. 3. — Свойства класса DataManagerItem
Название | Тип | Описание |
---|---|---|
viewModel | Terrasoft.BaseViewMode | Объектная проекция записи в базе данных. |
Табл. 4. —Основные методы класса DataManagerItem
Название | Параметры | Описание |
---|---|---|
setColumnValue |
columnName {String} — название колонки; columnValue {String} — значение колонки. |
Устанавливает новое значение columnValue для колонки с именем columnName. |
getColumnValue |
columnName {String} — название колонки. |
Возвращает значение колонки с именем columnName. |
getValues | Нет. | Возвращает значения всех колонок записи. |
remove | Нет. | Устанавливает признак isDeleted для записи. |
discard | Нет. | Отменяет изменения для записи, сделанные в текущей сессии работы с DataManger. |
save | Нет. | Фиксирует изменения в базе данных. |
getIsNew | Нет. | Возвращает признак того, что запись новая. |
getIsChanged | Нет. | Возвращает признак того, что запись была изменена. |
Примеры работы
Получение записей из таблицы [Contact]:
// Определение конфигурационного объекта. var config = { // Название схемы сущности. entitySchemaName: "Contact", // Убирать дубли в результирующем наборе данных. isDistinct: true }; // Получение данных. Terrasoft.DataManager.select(config, function (collection) { // Сохранение полученных записей в локальное хранилище. collection.each(function (item) { Terrasoft.DataManager.addItem(item); }); }, this);
Добавление новой записи в объект DataManager:
// Определение конфигурационного объекта. var config = { // Название схемы сущности. entitySchemaName: "Contact", // Значения колонок. columnValues: { Id: "00000000-0000-0000-0000-000000000001", Name: "Name1" } }; // Создание новой записи. Terrasoft.DataManager.createItem(config, function (item) { Terrasoft.DataManager.addItem(item); }, this);
Получение записи и изменение значения колонки:
// Получение записи. var item = Terrasoft.DataManager.findItem("Contact", "00000000-0000-0000-0000-000000000001"); // Установка нового значения "Name2" колонке [Name]. item.setColumnValue("Name", "Name2");
Удаление записи из DataManager:
// Определение конфигурационного объекта. var config = { // Название схемы сущности. entitySchemaName: "Contact", // Значение первичной колонки. primaryColumnValue: "00000000-0000-0000-0000-000000000001" }; // Устанавливает признак isDeleted для записи item. Terrasoft.DataManager.remove(config, function () { }, this);
Отмена изменений, сделанных в текущей сессии работы с DataManager:
// Получение записи. var item = Terrasoft.DataManager.findItem("Contact", "00000000-0000-0000-0000-000000000001"); // Отмена изменений для записи. Terrasoft.DataManager.discardItem(item);
Фиксация изменений в базе данных:
// Определение конфигурационного объекта. var config = { // Название схемы сущности. entitySchemaNames: ["Contact"] }; // Сохранение изменений в базу данных. Terrasoft.DataManager.save(config, function () { }, this);