Skip to main content

Программная модель калькулятора

Общая информация

В данной документации собрано лишь самое необходимое для адекватного использования калькулятора через скрипты. Использование свойств или методов, которые есть в калькуляторе, но не указаны тут, может кардинально повлиять на его работу. Чаще всего такие свойства или методы помечаются через _ в начале.
Используйте их на свой страх и риск.

О хранении и доступе

  • Все калькуляторы на странице хранятся в массиве pxpCalculators. Так, например, если на странице 2 калькулятора, то доступ ко второму будет по индексу 1 (считаем от нуля).
// получить массив калькуляторов
pxpCalculators
// получить второй калькулятор в массиве
pxpCalculators[1]
  • Учитывая, что чаще всего на странице 1 калькулятор, то самым распространенным вариантом вызова будет: pxpCalculators[0].

PxpCalc

Модель калькулятора

Основные свойства
materialSelector
MaterialSelectorController
описаниеМодуль выбора категорий, товаров и атрибутов
пример вызоваpxpCalculators[0].materialSelector
editorSettingsController
EditorSettingsController
описаниеМодуль выбора размеров редактора (только для редактора интерьеров)
пример вызоваpxpCalculators[0].editorSettingsController
customWorkSelector
CalcCustomWorkSelectorController
описаниеМодуль выбора опций и их позиций
пример вызоваpxpCalculators[0].customWorkSelector
circulationSelector
CirculationSelectorController
описаниеМодуль выбора количества товара и страниц
пример вызоваpxpCalculators[0].circulationSelector
totalPriceCalculator
CalcTotalPriceViewController
описаниеМодуль отображения финальной цены, а так же продолжения заказа
пример вызоваpxpCalculators[0].totalPriceCalculator
isMaterialTypeUpdate
boolean
описаниеВозвращает информацию об обновлении категорий и товарах
пример вызова
получить текущее состояниеpxpCalculators[0].isMaterialTypeUpdate()
присвоить состояние truepxpCalculators[0].isMaterialTypeUpdate(true)
isMaterialUpdate
boolean
описаниеВозвращает информацию об обновлении товаров категории
пример вызова
получить текущее состояниеpxpCalculators[0].isMaterialUpdate()
присвоить состояние truepxpCalculators[0].isMaterialUpdate(true)
inUpdate
boolean
описаниеВозвращает информацию об общем обновлении состояния калькулятора. Имеет значение true, если isMaterialTypeUpdate имеет значение true или isMaterialUpdate имеет значение true
пример вызоваполучить текущее состояние pxpCalculators[0].inUpdate()
Основные методы
info
void
описаниеРасписывает текущее состояние калькулятора в консоли. Содержит в себе:
1Id калькулятора, например pxpProducCalc_pr2gifts_ad6e6921cb544c059becf00ec4939601
2Id выбранной категории
3Id выбранного товара категории
4Выбранные опции товара и их кратное состояние (название опции, Id опции, выбранные позиции опции, все позиции опции)
пример вызоваpxpCalculators[0].info()
примечаниеМетод очень полезен для быстрого поиска необходимых данных по категориям, товарам и опциям, вам достаточно взять нужный Id и искать по нему в админке
update
void
описаниеОбновляет текущее состояние калькулятора
условие выполенияПоле inUpdate является false
пример вызоваpxpCalculators[0].update()

О первом запуске

  • После того как калькулятор загрузился и первый раз получил данные о категории и товаре, происходит следующее:
    1. Калькулятор ищет на странице метод onCompleteLoadPxpCalc.
    2. Если он его находит, то исполняет, передавая первым параметром калькулятор.
  • Таким образом, если вам необходимо проделать какие-то операции с калькулятором, то лучше всего это делать именно через этот метод.
// какой-то калькулятор
[$calculator(category:product)$]

<script>
// Метод, который будет вызываться по завершении загрузки калькулятора
// calc - это калькулятор, который исполнил метод, вы можете получать данные о нем прямо отсюда
function onCompleteLoadPxpCalc(calc) {
// ваш код
}
</script>

О модификации

  • Прежде чем писать скрипт, который будет использовать возможности калькулятора, убедитесь, что:
    1. Данного функционала нет в платформе.
    2. Данный функционал не будет реализован в ближайшее время.
  • Также стоит помнить два момента:
    1. Структура и методика работы калькулятора на платформе может обновляться, и нет никакой гарантии, что ваши скрипты будут работать так же, как и раньше.
    2. Если ваш скрипт ломает внутреннюю логику, то изменять калькулятор для решения этой проблемы не будут.

Категории и товары

  • Получить данный модуль можно через вызов в калькуляторе materialSelector.
pxpCalculators[0].materialSelector
MaterialSelectorController
  • Модель модуля по работе с категориями, товарами и атрибутами.
  • Основные свойства
materialTypes
Тип переменноймассив MaterialType
описаниеВсе доступные категории для вызова из калькулятора
пример вызоваpxpCalculators[0].materialSelector.materialTypes()
materialType
Тип переменнойMaterialType или null
описаниеВыбранная категория
пример вызоваpxpCalculators[0].materialSelector.materialType()
materialTypeId
Тип переменнойnumber или null
описаниеId выбранной категории
пример вызоваpxpCalculators[0].materialSelector.materialTypeId()
materials
Тип переменноймассив Material
описаниеВсе доступные товары категории для вызова из калькулятора
пример вызоваpxpCalculators[0].materialSelector.materials()
material
Тип переменнойMaterial или null
описаниеМодель выбранного в калькуляторе товара категории
materialId
Тип переменнойnumber или null
описаниеId выбранного в калькуляторе товара категории
пример вызоваpxpCalculators[0].materialSelector.materialId()
haveAttrs
Тип переменнойboolean
описаниеВозвращает есть ли доступные атрибуты
пример вызоваpxpCalculators[0].materialSelector.haveAttrs()
attributesTree
Тип переменнойMaterialTypeAttributesTree или null
описаниеВозвращает дерево атрибутов
пример вызоваpxpCalculators[0].materialSelector.attributesTree()
attributes
Тип переменноймассив MaterialTypeAttribute
описаниеВозвращает все доступные атрибуты для вызова из калькулятора
пример вызоваpxpCalculators[0].materialSelector.attributes()

MaterialType
  • Модель категории. Содержит в себе данные по атрибутам, входящих в нее.
  • Основные свойства
id
Тип переменнойnumber
описаниеId категории
пример вызоваpxpCalculators[0].materialSelector.materialTypes()[0].id
title
Тип переменнойstring
описаниеНазвание категории
пример вызоваpxpCalculators[0].materialSelector.materialTypes()[0].title
name
Тип переменнойstring
описаниеВозвращает название из категории для калькулятора, однако если оно пустое, то берется название из редактора
пример вызоваpxpCalculators[0].materialSelector.materialTypes()[0].name
description
Тип переменнойstring или null
описаниеЕсли у категории есть описание, то это оно. Если у категории пустое описание и она доступна для выбора в модальном окне, то берется шаблон текста из ресурсного файла по типу редактора
пример вызоваpxpCalculators[0].materialSelector.materialTypes()[0].description
calcHelper
Тип переменнойstring
описаниеПодсказка для калькулятора (задается в настройках категории)
пример вызоваpxpCalculators[0].materialSelector.materialTypes()[0].calcHelper
urlName
Тип переменнойstring
описаниеИмя категории для ссылки
пример вызоваpxpCalculators[0].materialSelector.materialTypes()[0].urlName
attributes
Тип переменноймассив MaterialTypeAttribute
описаниеВозвращает все атрибуты категории
пример вызоваpxpCalculators[0].materialSelector.materialTypes()[0].attributes
hiddenAttributes
Тип переменноймассив string
описаниеВозвращает Id скрытых атрибутов категории (список можно менять на странице настройки калькулятора)
пример вызоваpxpCalculators[0].materialSelector.materialTypes()[0].hiddenAttributes
isSelected
Тип переменнойboolean
описаниеВозвращает выбрана категория или нет
пример вызоваpxpCalculators[0].materialSelector.materialTypes()[0].isSelected()
  • Основные методы
select
Тип переменнойvoid
описаниеПри вызове этого метода категория становится выбранной в калькуляторе и происходит общее обновление состояния калькулятора
пример вызовавыбор второй категории в массиве категорий
pxpCalculators[0].materialSelector.materialTypes()[1].select()

Material
  • Модель товара.
  • Основные свойства
id
Тип переменнойnumber
описаниеId товара
пример вызоваpxpCalculators[0].materialSelector.materials()[0].id
title
Тип переменнойstring
описаниеНазвание товара
пример вызоваpxpCalculators[0].materialSelector.materials()[0].title
description
Тип переменнойstring
описаниеОписание товара для калькулятора
пример вызоваpxpCalculators[0].materialSelector.materials()[0].description
urlName
Тип переменнойstring
описаниеИмя товара для ссылки
пример вызоваpxpCalculators[0].materialSelector.materials()[0].urlName
attributes
Тип переменнойСловарь { string: string }
описаниеСловарь, где ключ - уникальный Id атрибута, а значение - название атрибута
пример вызоваpxpCalculators[0].materialSelector.materials()[0].attributes
isSelected
Тип переменнойboolean
описаниеВозвращает выбран товар или нет
пример вызоваpxpCalculators[0].materialSelector.materials()[0].isSelected()
  • Основные методы
select
Тип переменнойvoid
описаниеПри вызове этого метода товар становится выбранным в калькуляторе и происходит обновление состояния калькулятора
пример вызовавыбор второго товара в массиве товаров
pxpCalculators[0].materialSelector.materials()[1].select()

!> Любое некорректное общение с атрибутами может повлечь неправильную работу калькулятора. Будьте очень осторожны, внося скриптами какие-либо изменения в работу данных моделей.

  • Стоит отметить, что для большинства задач вам будет достаточно использования дерева атрибутов MaterialTypeAttributesTree.
MaterialTypeAttributesTree
  • Модель дерева атрибутов. Отвечает за всю логику выбора атрибутов, хранит в себе данные о текущих выбранных вершинах дерева и позволяет менять их выбор.
  • Основные свойства
selectedAttributesValues
Тип переменноймассив MaterialTypeAttributeValue
описаниеВыбранные значения атрибутов
пример вызоваpxpCalculators[0].materialSelector.attributesTree().selectedAttributesValues()
подсказкаТак же стоит помнить, что selectedAttributesValues - наблюдаемое свойство, и на него можно сделать subscribe для учета изменения значений атрибутов. Подробнее тут: Explicitly subscribing to observables
  • Основные методы
getRoot
Тип переменнойMaterialTypeAttributesTreeLeaf или null
описаниеПолучить корень дерева атрибутов
пример вызоваpxpCalculators[0].materialSelector.attributesTree().getRoot()
MaterialTypeAttributesTreeLeaf
  • Модель вершины дерева атрибутов. Содержит в себе прямую ссылку на предыдущую вершину дерева, товар, который привязан к этой вершине и методы для получения более подробных данных о вершине.
  • Основные свойства
index
Тип переменнойnumber
описаниеНомер вершины на вершине-родителе (порядковый номер отображения)
пример вызоваpxpCalculators[0].materialSelector.attributesTree().selectedAttributesValues()[0].index
leafName
Тип переменнойstring
описаниеОтображаемое имя веришны (имя значения атрибута)
пример вызоваpxpCalculators[0].materialSelector.attributesTree().selectedAttributesValues()[0].leafName
attributeValue
Тип переменнойMaterialTypeAttributeValue
описаниеЗначение атрибута, которое прикреплено к данной вершине
пример вызоваpxpCalculators[0].materialSelector.attributesTree().selectedAttributesValues()[0].attributeValue
material
Тип переменнойMaterial или null
описаниеТовар, который прикрелен к данной вершине
пример вызоваpxpCalculators[0].materialSelector.attributesTree().selectedAttributesValues()[0].material
branches
Тип переменнойСловарь { string: MaterialTypeAttributesTreeLeaf } или null
описаниеСловарь, где ключ - имя вершины, а ключ - вершина
пример вызоваpxpCalculators[0].materialSelector.attributesTree().selectedAttributesValues()[0].branches
selectedLeaf
Тип переменнойMaterialTypeAttributesTreeLeaf или null
описаниеВыбранная вершина на текущем уровне дерева
пример вызоваpxpCalculators[0].materialSelector.attributesTree().selectedAttributesValues()[0].selectedLeaf()
selectedLeafIndex
Тип переменнойnumber
описаниеИндекс выбранной вершины на текущем уровне дерева
пример вызоваpxpCalculators[0].materialSelector.attributesTree().selectedAttributesValues()[0].selectedLeafIndex()
  • Основные методы
getBranchesLeafs
Тип переменноймассив MaterialTypeAttributesTreeLeaf
описаниеВозвращает все вершины, которые можно выбрать от этой вершины
пример вызоваpxpCalculators[0].materialSelector.attributesTree().selectedAttributesValues()[0].getBranchesLeafs()
select
Тип переменнойvoid
описаниеВыбрать эту вершину. При выборе вершине автоматически выбирается товар, который к ней привязан и вершины, которые идут далее по дереву от выбранной
пример вызоваpxpCalculators[0].materialSelector.attributesTree().selectedAttributesValues()[0].select()
selectLeaf
Тип переменнойvoid
описаниеВыбрать вершину на текущем уровне дерева по имени
пример вызоваpxpCalculators[0].materialSelector.attributesTree().selectedAttributesValues()[0].selectLeaf("leaf2")
MaterialTypeAttribute
  • Модель атрибута категории. Содержит в себе список значений атрибута.
  • Основные свойства
id
Тип переменнойstring
описаниеId атрибута
пример вызоваpxpCalculators[0].materialSelector.attributes()[0].id
title
Тип переменнойstring
описаниеНазвание атрибута
пример вызоваpxpCalculators[0].materialSelector.attributes()[0].title
cssClass
Тип переменнойstring
описаниеКласс для атрибута
пример вызоваpxpCalculators[0].materialSelector.attributes()[0].cssClass
isHidden
Тип переменнойboolean
описаниеВозвращает скрыт ли атрибут
пример вызоваpxpCalculators[0].materialSelector.attributes()[0].isHidden
values
Тип переменноймассив MaterialTypeAttributeValue
описаниеВсе значения атрибута
пример вызоваpxpCalculators[0].materialSelector.attributes()[0].values
jsFunction
Тип переменнойstring или null
описаниеНазвание функции или ее текст. При выборе атрибута - исполняется
пример вызоваpxpCalculators[0].materialSelector.attributes()[0].jsFunction()
MaterialTypeAttributeValue
  • Модель значения атрибута категории.
  • Основные свойства
attribute
Тип переменнойMaterialTypeAttribute
описаниеАтрибут, в котором находится данное значение (проще говоря атрибут-родитель)
пример вызоваpxpCalculators[0].materialSelector.attributes()[0].values[0].attribute
title
Тип переменнойstring
описаниеНазвание значения атрибута
пример вызоваpxpCalculators[0].materialSelector.attributes()[0].values[0].title
description
Тип переменнойstring
описаниеОписание значения атрибута
пример вызоваpxpCalculators[0].materialSelector.attributes()[0].values[0].description
calcHelper
Тип переменнойstring
описаниеОписания значения атрибута для калькулятора
пример вызоваpxpCalculators[0].materialSelector.attributes()[0].values[0].calcHelper
jsFunction
Тип переменнойstring или null
описаниеНазвание функции или ее текст. При выборе значения атрибута - исполняется
пример вызоваpxpCalculators[0].materialSelector.attributes()[0].values[0].jsFunction()

Размеры редактора

  • Получить данный модуль можно через вызов в калькуляторе editorSettingsController.
pxpCalculators[0].editorSettingsController
EditorSettingsController
  • Модель модуля редакторов товара. Он хранит в себе данные о редакторе для выбранного товара, его параметры и выбранные размеры. На данный момент модуль поддерживает только редакторы интерьера, дизайна и проверки макетов.
  • Основные свойства
isAvailable
Тип переменнойboolean
описаниеВозвращает доступен ли модуль
пример вызоваpxpCalculators[0].editorSettingsController.isAvailable()
editorState
Тип переменнойCalcEditorState или null
описаниеТекущее состояние настроек для редактора
пример вызоваpxpCalculators[0].editorSettingsController.editorState()
isEditEditorSizesAvailable
Тип переменнойboolean
описаниеВозвращает доступен ли выбор произвольных размеров настроек для редактора
пример вызоваpxpCalculators[0].editorSettingsController.isEditEditorSizesAvailable()

  • Для каждого редактора есть своя модель настроек. Соответственно, когда вы через модуль получаете editorState, сделайте проверку на то, какой редактор настроек у этого товара. Сделать это можно через проверку свойства editorType в editorState.
// Например, вам нужно получить состояние настроек для редактора только если это редактор проверки макетов
var editorState = pxpCalculators[0].editorSettingsController.editorState();

// проверим, что editorState не null и что оно подходит под наши требования
if (editorState != null && editorState.editorType === 7) {
// ваш код
}
CalcCanvasEditorState
  • Модель настроек для редактора интерьеров.
  • Основные свойства
editorType
Тип переменнойnumber
описаниеИндекс редактора
значение9
пример вызоваpxpCalculators[0].editorSettingsController.editorState().editorType
canvasEditorInfo
Тип переменнойEditorSizeInfo или null
описаниеТекущее состояние настроек размеров для редактора интерьеров
пример вызоваpxpCalculators[0].editorSettingsController.editorState().canvasEditorInfo
CalcGiftEditorState
  • Модель настроек для редактора сувениров.
  • Основные свойства
editorType
Тип переменнойnumber
описаниеИндекс редактора
значение8
пример вызоваpxpCalculators[0].editorSettingsController.editorState().editorType
giftEditorInfo
Тип переменнойEditorSizeInfo или null
описаниеТекущее состояние настроек размеров для редактора сувениров
пример вызоваpxpCalculators[0].editorSettingsController.editorState().giftEditorInfo
CalcMockupEditorState
  • Модель настроек для редактора проверки макетов.
  • Основные свойства
editorType
Тип переменнойnumber
описаниеИндекс редактора
значение7
пример вызоваpxpCalculators[0].editorSettingsController.editorState().editorType
coverInfo
Тип переменнойEditorSizeInfo или null
описаниеТекущее состояние настроек размеров обложек для редактора проверки макетов
пример вызоваpxpCalculators[0].editorSettingsController.editorState().coverInfo
pageInfo
Тип переменнойEditorSizeInfo или null
описаниеТекущее состояние настроек размеров разворотов для редактора проверки макетов
пример вызоваpxpCalculators[0].editorSettingsController.editorState().pageInfo
flyleafInfo
Тип переменнойEditorSizeInfo или null
описаниеТекущее состояние настроек размеров форзацев для редактора проверки макетов
пример вызоваpxpCalculators[0].editorSettingsController.editorState().flyleafInfo

  • В примерах получения данных для EditorSizeInfo я буду использовать укороченную запись, но для понятности предположим, что переменная eSizeInfo, откуда достаются данные, это свойство coverInfo для настроек редактора проверки макетов:
var eSizeInfo = pxpCalculators[0].editorSettingsController.editorState().coverInfo;
EditorSizeInfo
  • Модель настроек размеров. Содержит в себе размеры для редакторов, которые могут быть использованы в дальнейшем оформлении заказов. Так же тут могут быть установлены собственные размеры, если у товара настроены произвольные размеры.
  • Основные свойства
editorSizes
Тип переменноймассив ISizeModel
описаниеИтоговый массив размеров. Размер массива напрямую зависит от количества страниц
пример вызоваeSizeInfo.editorSizes
пример результата[ { Width: 297, Height: 100 } ]
title
Тип переменнойstring
описаниеНазвание
пример вызоваeSizeInfo.title
isVisible
Тип переменнойboolean
описаниеВозвращает отображаются ли данные настройки в калькуляторе
пример вызоваeSizeInfo.isVisible
isArbitrarySizeAvailable
Тип переменнойboolean
описаниеВозвращает доступны ли произвольные размеры для данных настроек
пример вызоваeSizeInfo.isArbitrarySizeAvailable
minEditorWidth
Тип переменнойnumber
описаниеМинимальная ширина редактора
пример вызоваeSizeInfo.minEditorWidth
maxEditorWidth
Тип переменнойnumber
описаниеМаксимальная ширина редактора
пример вызоваeSizeInfo.maxEditorWidth
defaultEditorWidth
Тип переменнойnumber
описаниеШирина редактора по умолчанию
пример вызоваeSizeInfo.defaultEditorWidth()
inputEditorWidth
Тип переменнойnumber или string
описаниеСвойство для указания ширины редактора
пример вызоваустанавливаем ширину 150
eSizeInfo.inputEditorWidth(150)
примечаниеУказывая данные самостоятельно не забудьте после этого провалидировать их методом validateInputData, иначе selectedEditorWidth не обновится!
selectedEditorWidth
Тип переменнойnumber
описаниеИтоговая выбранная ширина редактора
пример вызоваeSizeInfo.selectedEditorWidth()
minEditorHeight
Тип переменнойnumber
описаниеМинимальная высота редактора
пример вызоваeSizeInfo.minEditorHeight
maxEditorHeight
Тип переменнойnumber
описаниеМаксимальная высота редактора
пример вызоваeSizeInfo.maxEditorWidth
defaultEditorHeight
Тип переменнойnumber
описаниеВысота редактора по умолчанию
пример вызоваeSizeInfo.defaultEditorHeight()
inputEditorHeight
Тип переменнойnumber или string
описаниеСвойство для указания высоты редактора
пример вызоваустанавливаем высоту 150
eSizeInfo.inputEditorHeight(150)
примечаниеУказывая данные самостоятельно не забудьте после этого провалидировать их методом validateInputData, иначе selectedEditorHeight не обновится!
selectedEditorHeight
Тип переменнойnumber
описаниеВыбранная высота редактора
пример вызоваeSizeInfo.selectedEditorHeight()
measureTitle
Тип переменнойnumber
описаниеНазвание размерности
пример вызоваeSizeInfo.measureTitle()
isPagesCountVisible
Тип переменнойstring
описаниеВозвращает доступен ли выбор количества страниц для данных настроек
пример вызоваeSizeInfo.title
minPagesCount
Тип переменнойnumber или null
описаниеМинимальное количество страниц
пример вызоваeSizeInfo.minPagesCount
maxPagesCount
Тип переменнойnumber или null
описаниеМаксимальное количество страниц
пример вызоваeSizeInfo.maxPagesCount
inputPagesCount
Тип переменнойnumber или string
описаниеСвойство для указания количества страниц
пример вызоваустанавливаем количество страниц 30
eSizeInfo.inputPagesCount(30)
примечаниеУказывая данные самостоятельно не забудьте после этого провалидировать их методом validatePagesInputData, иначе selectedPagesCount не обновится!
selectedPagesCount
Тип переменнойnumber
описаниеВыбранное количество страниц
пример вызоваeSizeInfo.selectedPagesCount()
pagesMeasureTitle
Тип переменнойnumber
описаниеНазвание количества страниц
пример вызоваeSizeInfo.pagesMeasureTitle()
  • Основные методы
validateInputData
Тип переменнойvoid
описаниеОбновление и валидирование данных из inputEditorWidth и inputEditorHeight
пример вызоваeSizeInfo.validateInputData()
validatePagesInputData
Тип переменнойvoid
описаниеОбновление и валидирование данных из inputPagesCount
пример вызоваeSizeInfo.validatePagesInputData()

Опции и позиции

  • Получить данный модуль можно через вызов в калькуляторе customWorkSelector.
pxpCalculators[0].customWorkSelector
CalcCustomWorkSelectorController
  • Модель модуля опций. Хранит в себе всю информацию о состоянии опций, переменных опций, позиций опций, выбранных в позициях произвольных размеров и файлов.
  • Основные свойства
works
Тип переменноймассив CalcCustomWorkState
описаниеМассив всех опций
пример вызоваpxpCalculators[0].customWorkSelector.works()
availableWorks
Тип переменноймассив CalcCustomWorkState
описаниеМассив всех доступных для выбора опций
пример вызоваpxpCalculators[0].customWorkSelector.availableWorks()
worksDictionary
Тип переменнойСловарь { number: CalcCustomWorkState }
описаниеСловарь опций, где ключ - Id опции, а значение - опция
пример вызоваполучаем словарь опций var wDict = pxpCalculators[0].customWorkSelector.worksDictionary();
получаем опцию с Id 123456 var work = wDict[123456];
itemsDictionary
Тип переменной{ number: CalcCustomWorkItemState }
описаниеСловарь позиции опции, где ключ - Id позиции опции, а значение - позиции
пример вызоваполучаем словарь всех позиций var iDict = pxpCalculators[0].customWorkSelector.itemsDictionary();
получаем позицию с Id 123456 var item = iDict[123456];
finalState
Тип переменноймассив ICustomWorkOutputState
описаниеТекущее финальное состояние опций в калькуляторе
пример вызоваpxpCalculators[0].customWorkSelector.finalState()
  • пример итогового состояния
[
{
WorkId: 729251,
Items: [
{
ItemId: 2789540,
Quantity: 1
}
]
},
{
WorkId: 527204,
Items: [
{
ItemId: 1937970,
Quantity: 10
}
]
}
]
  • Основные методы
loadState
Тип переменнойvoid
описаниеЗагрузка предзаданного состояния выбора опций
параметры функциимассив ICustomWorkOutputState
пример вызова
получаем состояние для загрузки из первого калькулятораvar stateToLoad = pxpCalculators[0].customWorkSelector.finalState();
загружаем его во второй калькуляторpxpCalculators[1].customWorkSelector.loadState(stateToLoad);

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

CalcCustomWorkState
  • Модель опции. Хранит в себе информацию про опцию, переменные и ее позиции.
  • Основные свойства
variablesController
Тип переменнойCalcVariablesController или null
описаниеКонтроллер переменных (подробнее в разделе "Переменные")
пример вызоваpxpCalculators[0].customWorkSelector.works()[0].variablesController
workId
Тип переменнойnumber
описаниеId опции
пример вызоваpxpCalculators[0].customWorkSelector.works()[0].workId
title
Тип переменнойstring
описаниеНазвание опции
пример вызоваpxpCalculators[0].customWorkSelector.works()[0].title
description
Тип переменнойstring
описаниеОписание опции для калькулятора
пример вызоваpxpCalculators[0].customWorkSelector.works()[0].description
isAvailable
Тип переменнойboolean
описаниеВозвращает доступна опция для выбора в калькуляторе или нет
пример вызоваpxpCalculators[0].customWorkSelector.works()[0].isAvailable()
isRequired
Тип переменнойboolean
описаниеВозвращает опция обязательна или нет
пример вызоваpxpCalculators[0].customWorkSelector.works()[0].isRequired
isCheckbox
Тип переменнойboolean
описаниеВозвращает множественный ли выбор позиций в опции или нет
пример вызоваpxpCalculators[0].customWorkSelector.works()[0].isCheckbox
isHidden
Тип переменнойboolean
описаниеВозвращает опция скрыта или нет
пример вызоваpxpCalculators[0].customWorkSelector.works()[0].isHidden()
items
Тип переменноймассив CalcCustomWorkItemState
описаниеВсе включенные позиции опции
пример вызоваpxpCalculators[0].customWorkSelector.works()[0].items()
itemsAvailable
Тип переменноймассив CalcCustomWorkItemState
описаниеВсе доступные для выбора в калькуляторе позиции опции
пример вызоваpxpCalculators[0].customWorkSelector.works()[0].itemsAvailable()
selectedItems
Тип переменноймассив CalcCustomWorkItemState
описаниеВыбранные позиции опции
пример вызоваpxpCalculators[0].customWorkSelector.works()[0].selectedItems()
selectedItemIds
Тип переменноймассив number
описаниеВыбранные Id позиций опции
пример вызоваpxpCalculators[0].customWorkSelector.works()[0].selectedItemIds()
  • Основные методы
validate
Тип переменнойboolean
описаниеВозвращает валидны данные в опции или нет
пример вызоваpxpCalculators[0].customWorkSelector.works()[0].validate()
price
Тип переменнойnumber
описаниеВозвращает текущую цену опции
пример вызоваpxpCalculators[0].customWorkSelector.works()[0].price()
CalcCustomWorkItemState
  • Модель позиции опции.
  • Основные свойства
itemId
Тип переменнойnumber
описаниеId позиции опции
пример вызоваpxpCalculators[0].customWorkSelector.works()[0].items()[0].itemId()
title
Тип переменнойstring
описаниеНазвание позиции опции
пример вызоваpxpCalculators[0].customWorkSelector.works()[0].items()[0].title
description
Тип переменнойstring
описаниеОписание позиции опции
пример вызоваpxpCalculators[0].customWorkSelector.works()[0].items()[0].description
work
Тип переменнойCalcCustomWorkState
описаниеОпция родитель
пример вызоваpxpCalculators[0].customWorkSelector.works()[0].items()[0].work
asInfo
Тип переменнойCalcCustomWorkItemArbitrarySizeState или null
описаниеМодель с информацией о произвольных размерах позиции опции
пример вызоваpxpCalculators[0].customWorkSelector.works()[0].items()[0].asInfo
totalPrice
Тип переменнойnumber
описаниеИтоговая цена позиции опции
пример вызоваpxpCalculators[0].customWorkSelector.works()[0].items()[0].totalPrice()
price
Тип переменнойnumber
описаниеЦена позиции опции без дополнительных стоимостей и процентов
пример вызоваpxpCalculators[0].customWorkSelector.works()[0].items()[0].price()
additionalPrice
Тип переменнойnumber
описаниеДополнительная цена позиции опции
пример вызоваpxpCalculators[0].customWorkSelector.works()[0].items()[0].additionalPrice()
isAvailable
Тип переменнойboolean
описаниеВозвращает доступна позиция опции для выбора или нет
пример вызоваpxpCalculators[0].customWorkSelector.works()[0].items()[0].isAvailable()
isSelected
Тип переменнойboolean
описаниеВозвращает выбрана позиция опции или нет
пример вызоваpxpCalculators[0].customWorkSelector.works()[0].items()[0].isSelected()
quantity
Тип переменнойnumber
описаниеКоличество позиции опции
пример вызоваpxpCalculators[0].customWorkSelector.works()[0].items()[0].quantity()
totalPriceString
Тип переменнойstring
описаниеФорматированая итоговая цена позиции опции (отдается в HTML)
пример вызоваpxpCalculators[0].customWorkSelector.works()[0].items()[0].quantity()
пример результата0,00 <span class="postfix currency rub"><span>руб.</span></span>
CalcCustomWorkItemArbitrarySizeState
  • Модель произвольных размеров позиции опции. Содержит в себе данные по фиксированным размерам, диапазону размеров, расчету по формуле, расчету по тексту и страничному расчету.
  • Основные свойства
finalState
Тип переменнойIArbitrarySizeOutputData
описаниеИтоговое состояние произвольных размеров позиции опции
пример вызоваpxpCalculators[0].customWorkSelector.works()[0].items()[0].asInfo.finalState()
  • Пример результата
{
Width: 2,
Height: 2
}

  • О финальных состояниях
  • Финальные состояния опций и позиций используются для расчетных данных, продолжения заказа и для метода loadState в модуле опций. Ниже указаны модели финальных состояний со всеми возможными полями. Как уже было описано выше, получить финальное состояние опций можно через команду ниже:
var finalCustomWorksState = pxpCalculators[0].customWorkSelector.finalState()
ICustomWorkOutputState
  • Модель финального состояния опции.
  • Поля
WorkId
Тип переменнойnumber или null
описаниеId опции
Items
Тип переменноймассив ICustomWorkItemOutputState или null
описаниеМассив финальных состояний всех выбранных позиций в опции
ICustomWorkItemOutputState
  • Модель финального состояния позиции опции.
  • Поля
ItemId
Тип переменнойnumber или null
описаниеId позиции опции
Quantity
Тип переменнойnumber или null
описаниеКоличество позиции опции
UserTemplateId
Тип переменнойnumber или null или undefined
описаниеId пользовательского шаблона
Size
Тип переменнойIArbitrarySizeOutputData или null или undefined
описаниеМодель финального состояния произвольных размеров позиции опции
Variables
Тип переменноймассив IVariableDTO или null или undefined
описаниеМассив финальных состояний переменных (подробнее в разделе "Переменные")
Files
Тип переменноймассив number или null или undefined
описаниеМассив Id выбранных файлов
IArbitrarySizeOutputData
  • Модель финального состояния произвольных размеров позиции опции.
  • Основные свойства
Width
Тип переменнойnumber или undefined
описаниеИтоговая ширина
Height
Тип переменнойnumber или undefined
описаниеИтоговая высота
Text
Тип переменнойstring или undefined
описаниеИтоговый текст

Переменные

  • Принцип работы модуля переменных в том, что он существует отдельно для каждой опции, поскольку в каждой опции может быть свой набор переменных. Получить данный модуль можно через обращение к variablesController в нужной для вас опции.
var variablesCtrl = pxpCalculators[0].customWorkSelector.works()[0].variablesController
  • В примерах далее будет использоваться обращение к модулю через переменную variablesCtrl для укорочения записи:
CalcVariablesController
  • Модель модуля переменных. Хранит в себе информацию о доступных переменных для опции и методы их поиска.
  • Основные свойства
availableVariables
Тип переменноймассив CalcVariableState
описаниеМассив всех доступных переменных для опции
пример вызоваvariablesCtrl.availableVariables()
variablesExists
Тип переменнойboolean
описаниеВозвращает есть ли переменные или нет для данной опции
пример вызоваvariablesCtrl.variablesExists()
  • Основные методы
getVariableByUniqueName
Тип переменнойCalcVariableState или null
описаниеВозвращает переменную по ее имени
параметры функцииУникальное имя переменной в виде строки
пример вызоваполучить переменную с именем mass variablesCtrl.getVariableByUniqueName('mass')

CalcVariableState
  • Модель переменной.
  • Основные свойства
uniqueName
Тип переменнойstring
описаниеУникальное имя переменной
пример вызоваvariablesCtrl.availableVariables()[0].uniqueName
title
Тип переменнойstring
описаниеНазвание переменной
пример вызоваvariablesCtrl.availableVariables()[0].title
measurement
Тип переменнойstring
описаниеРазмерность переменой
пример вызоваvariablesCtrl.availableVariables()[0].measurement
inputValue
Тип переменнойnumber
описаниеСвойство для указания значения в переменную
пример вызоваприсвоение переменной значения 150 variablesCtrl.availableVariables()[0].inputValue(150)

Указывая данные самостоятельно не забудьте после этого провалидировать их методом validateInputData, иначе selectedValue не обновится!

selectedValue
Тип переменнойnumber
описаниеВыбранное значение в переменной
пример вызоваvariablesCtrl.availableVariables()[0].selectedValue()
isVisible
Тип переменнойboolean
описаниеВозвращает отображается переменная или нет
пример вызоваvariablesCtrl.availableVariables()[0].isVisible()
  • Основные методы
validateInputData
Тип переменнойvoid
описаниеОбновление и валидирование данных из inputValue
пример вызоваvariablesCtrl.availableVariables()[0].validateInputData()

  • О финальных состояниях
  • Финальное состояния переменной используется в модели ICustomWorkItemOutputState (подробнее о ней написано в разделе «Опции и позиции»). Ниже расписаны все возможные поля в модели финального состояния переменной.
IVariableDTO
  • Модель финального состояния переменной.
  • Поля
UniqueName
Тип переменнойstring
описаниеУникальное имя переменной
Value
Тип переменнойnumber
описаниеВыбранное значение в переменной
  • Пример финального состояния переменной:
{
UniqueName: 'mass',
Value: 10
}

Тиражи

  • Получить данный модуль можно через вызов в калькуляторе circulationSelector.
pxpCalculators[0].circulationSelector
CirculationSelectorController
  • Модель модуля по работе с тиражами, многостраничным расчетом, поверхностями и учетом фотографий.
  • Основные свойства
options
Тип переменноймассив CirculationOption
описаниеМассив моделей тиражности
пример вызоваpxpCalculators[0].circulationSelector.options()
option
Тип переменнойCirculationOption или null
описаниеВыбранная модель тиражности
пример вызоваpxpCalculators[0].circulationSelector.option()
isFixedOption
Тип переменнойboolean
описаниеВозвращает являются ли текущие модели тиражности с выбором количества через предварительно заданные тиражи
пример вызоваpxpCalculators[0].circulationSelector.isFixedOption()
isFloatOption
Тип переменнойboolean
описаниеВозвращает являются ли текущие модели тиражности с выбором количества через ввод тиража вручную
пример вызоваpxpCalculators[0].circulationSelector.isFloatOption()
floatQuantity
Тип переменнойnumber
описаниеТекущее выбранное количество товара
пример вызоваpxpCalculators[0].circulationSelector.floatQuantity()
complexOption
Тип переменнойCirculationComplex или null
описаниеМодуль для выбора количества страниц
пример вызоваpxpCalculators[0].circulationSelector.complexOption()
isComplexProduct
Тип переменнойboolean
описаниеВозвращает есть ли возможность выбора количества страниц
пример вызоваpxpCalculators[0].circulationSelector.isComplexProduct()
surfacesSettings
Тип переменнойCirculationSurfacesSettings или null
описаниеБлок работы с поверхностями товара
пример вызоваpxpCalculators[0].circulationSelector.surfacesSettings()
isSurfacesSettingsAvailable
Тип переменнойboolean
описаниеВозвращает есть ли возможность работы с поверхностями товара
пример вызоваpxpCalculators[0].circulationSelector.isSurfacesSettingsAvailable()
photosSettings
Тип переменнойCirculationPhotosSettings или null
описаниеБлок работы с учетом фотографий
пример вызоваpxpCalculators[0].circulationSelector.photosSettings()
isPhotosSettingsAvailable
Тип переменнойboolean
описаниеВозвращает есть ли возможность работы с учетом фотографий
пример вызоваpxpCalculators[0].circulationSelector.isPhotosSettingsAvailable()

CirculationOptionFixed
  • Модель тиражности с выбором количества через предварительно заданный тираж.
  • Основные свойства
quantity
Тип переменнойnumber
описаниеПредзаданное количество
пример вызоваpxpCalculators[0].circulationSelector.option().quantity()
isSelected
Тип переменнойboolean
описаниеВозвращает выбран тираж или нет
пример вызоваpxpCalculators[0].circulationSelector.option().isSelected()
  • Основные методы
select
Тип переменнойvoid
описаниеМетод выбора тиража
пример вызовавыбор 4-го тиража из массива тиражей pxpCalculators[0].circulationSelector.options()[3].select()
CirculationOptionFloat
  • Модель тиражности с выбором количества через ввод тиража вручную.
  • Основные свойства
min
Тип переменнойnumber
описаниеМинимальное возможное количество
пример вызоваpxpCalculators[0].circulationSelector.option().min
max
Тип переменнойnumber
описаниеМаксимальное возможное количество
пример вызоваpxpCalculators[0].circulationSelector.option().max
quantity
Тип переменнойnumber
описаниеВыбранное количество
пример вызоваpxpCalculators[0].circulationSelector.option().quantity()
isSelected
Тип переменнойboolean
описаниеВозвращает выбран тираж или нет
пример вызоваpxpCalculators[0].circulationSelector.option().isSelected()
  • Если вам требуется выбрать тираж через ввод значения, тогда это требуется сделать следующим образом:
// устанавливаем количество 15
pxpCalculators[0].circulationSelector.floatQuantity(15);

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

CirculationComplex
  • Модель блока многостраничности.
  • Основные свойства
partsQuantity
Тип переменнойnumber
описаниеИтоговое количество страниц
пример вызоваpxpCalculators[0].circulationSelector.complexOption().partsQuantity()
itemPartsMinimum
Тип переменнойnumber
описаниеМинимальное количество страниц
пример вызоваpxpCalculators[0].circulationSelector.complexOption().itemPartsMinimum
itemPartsMaximum
Тип переменнойnumber
описаниеМаксимально количество страниц
пример вызоваpxpCalculators[0].circulationSelector.complexOption().itemPartsMaximum
itemPartsGrowStep
Тип переменнойnumber
описаниеШаг страниц
пример вызоваpxpCalculators[0].circulationSelector.complexOption().itemPartsGrowStep
  • Основные методы
setDisplayPartsQuantity
Тип переменнойvoid
описаниеВвод количества страниц. Если указанное число не будет удолетворять ограничениям, то оно будет заменено на валидное
параметры функцииЧисло
пример вызоваустанавливаем количество страниц 15 pxpCalculators[0].circulationSelector.complexOption().displayPartsQuantity(15)

CirculationSurfacesSettings
  • Модель блока поверхностей товара.
  • Основные свойства
surfaces
Тип переменноймассив CirculationSurfacesSettingsSurface
описаниеВсе поверхности товара
пример вызоваpxpCalculators[0].circulationSelector.surfacesSettings().surfaces()
selectedSurfacesZonesPrices
Тип переменноймассив number или null
описаниеИтоговые цены выбранных зон поверхностей
пример вызоваpxpCalculators[0].circulationSelector.surfacesSettings().selectedSurfacesZonesPrices()
CirculationSurfacesSettingsSurface
  • Модель поверхности товара.
  • Основные свойства
index
Тип переменнойnumber
описаниеИндекс поверхности (в порядке как в настройках товара)
пример вызоваpxpCalculators[0].circulationSelector.surfacesSettings().surfaces()[0].index
title
Тип переменнойstring
описаниеНазвание поверхности
пример вызоваpxpCalculators[0].circulationSelector.surfacesSettings().surfaces()[0].title
zones
Тип переменноймассив CirculationSurfacesSettingsSurfaceZone
описаниеЗоны поверхности товара
пример вызоваpxpCalculators[0].circulationSelector.surfacesSettings().surfaces()[0].zones()
selectedZone
Тип переменнойCirculationSurfacesSettingsSurfaceZone или null
описаниеВыбранная зона поверхности товара
пример вызоваpxpCalculators[0].circulationSelector.surfacesSettings().surfaces()[0].selectedZone()
CirculationSurfacesSettingsSurfaceZone
  • Модель зоны поверхности товара.
  • Основные свойства
index
Тип переменнойnumber
описаниеИндекс зоны поверхности (в порядке как в настройках товара)
пример вызоваpxpCalculators[0].circulationSelector.surfacesSettings().surfaces()[0].selectedZone().index
title
Тип переменнойstring
описаниеНазвание зоны поверхности
пример вызоваpxpCalculators[0].circulationSelector.surfacesSettings().surfaces()[0].selectedZone().title
price
Тип переменнойnumber
описаниеСтоимость зоны поверхности
пример вызоваpxpCalculators[0].circulationSelector.surfacesSettings().surfaces()[0].selectedZone().price
surface
Тип переменнойCirculationSurfacesSettingsSurface
описаниеПоверхность, к которой относится зона
пример вызоваpxpCalculators[0].circulationSelector.surfacesSettings().surfaces()[0].selectedZone().surface
isSelected
Тип переменнойboolean
описаниеВозвращает выбрана ли эта зона поверхности
пример вызоваpxpCalculators[0].circulationSelector.surfacesSettings().surfaces()[0].selectedZone().isSelected()
  • Основные методы
select
Тип переменнойvoid
описаниеЗадание этой зоны поверхности как выбранной
пример вызовавыбираем третью зону из массива зон поверхности pxpCalculators[0].circulationSelector.surfacesSettings().surfaces()[0].zones()[2].select()

CirculationPhotosSettings
  • Модель блока учета фотографий.
  • Основные свойства
minimumPhotosCount
Тип переменнойnumber
описаниеМинимальное число фотографий
пример вызоваpxpCalculators[0].circulationSelector.photosSettings().minimumPhotosCount
additionalPhotosCountToMinimum
Тип переменнойnumber
описаниеДобавочное количество фотографий за каждую дополнительную страницу
пример вызоваpxpCalculators[0].circulationSelector.photosSettings().additionalPhotosCountToMinimum
pricePerPhoto
Тип переменнойnumber
описаниеЦена за фотографию
пример вызоваpxpCalculators[0].circulationSelector.photosSettings().pricePerPhoto
totalMinimumPhotosCount
Тип переменнойnumber
описаниеОбщее число минимального количества фотографий
пример вызоваpxpCalculators[0].circulationSelector.photosSettings().totalMinimumPhotosCount()
photosQuantity
Тип переменнойnumber
описаниеТекущее количество фотографий
пример вызоваpxpCalculators[0].circulationSelector.photosSettings().photosQuantity()

Ценовая панель

  • Получить данный модуль можно через вызов в калькуляторе totalPriceCalculator.
pxpCalculators[0].totalPriceCalculator
CalcTotalPriceViewController
  • Модель ценовой панели. На ней отображаются итоговые цены, кнопки для заказа товара и предупреждения в случае невалидных данных.
  • Основные свойства
totalPrice
Тип переменнойnumber
описаниеИтоговая цена
пример вызоваpxpCalculators[0].totalPriceCalculator.totalPrice()
totalPriceWithoutDiscounts
Тип переменнойnumber
описаниеИтоговая цена без скидки
пример вызоваpxpCalculators[0].totalPriceCalculator.totalPriceWithoutDiscounts()
totalProductPriceWithoutCustomWorks
Тип переменнойnumber
описаниеИтоговая цена товара без скидки и опций
пример вызоваpxpCalculators[0].totalPriceCalculator.totalProductPriceWithoutCustomWorks()
totalProductCustomWorksPrice
Тип переменнойnumber
описаниеИтоговая стоимость опций без скидки
пример вызоваpxpCalculators[0].totalPriceCalculator.totalProductCustomWorksPrice()
totalPriceFormatted
Тип переменнойstring
описаниеТекстовый вид итоговой цены (отдается в HTML)
пример вызоваpxpCalculators[0].totalPriceCalculator.totalPriceFormatted()
пример результатаИтого: <span class="price-total" id="">10,00 <span class="postfix currency rub"><span>руб.</span></span></span>
visible
Тип переменнойboolean
описаниеВозвращает отображается ценовая панель или нет
пример вызоваpxpCalculators[0].totalPriceCalculator.visible()
isTotalPriceLoading
Тип переменнойboolean
описаниеВозвращает цена обновляется или нет
пример вызоваpxpCalculators[0].totalPriceCalculator.isTotalPriceLoading()
continueOrderClickIsEnabled
Тип переменнойboolean
описаниеВозвращает кнопка "Продолжить заказ" доступна или нет
пример вызоваpxpCalculators[0].totalPriceCalculator.continueOrderClickIsEnabled()
addToCartEnabled
Тип переменнойboolean
описаниеВозвращает кнопка "Добавить в корзину" доступна или нет
пример вызоваpxpCalculators[0].totalPriceCalculator.addToCartEnabled()
  • Основные методы
show
Тип переменнойvoid
описаниеПоказать модуль ценовой панели
пример вызоваpxpCalculators[0].totalPriceCalculator.show()
hide
Тип переменнойvoid
описаниеСкрыть модуль ценовой панели
пример вызоваpxpCalculators[0].totalPriceCalculator.hide()
refreshPrice
Тип переменнойvoid
описаниеМетод для обновления цены
условие выполненияОбновление калькулятора в данный момент не происходит, и не было ошибок с загрузкой состояния
пример вызоваpxpCalculators[0].totalPriceCalculator.refreshPrice()
continueOrderClick
Тип переменнойvoid
описаниеМетод для активации события "Продолжение заказа"
пример вызоваpxpCalculators[0].totalPriceCalculator.continueOrderClick()
addToCartClick
Тип переменнойvoid
описаниеМетод для активации события "Добавить в корзину"
пример вызоваpxpCalculators[0].totalPriceCalculator.addToCartClick()