Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

Чтобы использовать маски ввода в проектах необходимо добавить модуль “MultiMaskEdit”, в dependency страницы и в секцию define, а в diff поля указать, что необходимо использовать класс MultiMaskEdit и его маску. Класс расширяет базовый TextEdit. Например, маску ввода для мобильных телефонов России и Украины можно определить так:

diff: /**SCHEMA_DIFF*/[

{

"operation" : "merge",

"name" : "MobilePhone",

"values" : {

"controlConfig" : {

"className": "Terrasoft. MultiMaskEdit",

"mask": {

"bindTo": "getPhoneMask"

}

"onBeforePasteFormatValue" : TSCCommon. getDigitsFromString

}

}

}

]/**SCHEMA_DIFF*/,

methods: {

getPhoneMask: function() {

return {

formats: ["+7(999)999-99-99", "+38(999)999-99-99"]

}

}

}

Если метод getPhoneMask вернет пустой массив или null, контрол будет вести себя так же, как TextEdit.

Метод onBeforePasteFormatValue указываете, если хотите обработать значения перед вставкой из буфера обмена в контрол. Этот метод необязательный – контрол вставит только допустимые значения, но, например, если предварительно обработать вставляемую строку и оставить только цифры, то для маски выше телефон вставиться полностью, независимо от того какие символы использовались дополнительно во вставляемом номере телефона.

По умолчанию в качестве символов подстановки в шаблонах маски используются:

{

//цифры

"9" : {

re : "[0-9]"

},

//кириллица

"к" : {

re : "[а-яА-ЯёЁ]"

},

//латинские

"l" : {

re : "[a-zA-Z]"

},

//любая буква

"c" : {

re : "[а-яА-ЯёЁa-zA-Z]"

},

//любая буква или цифра

"#" : {

re : "[а-яА-ЯёЁA-Za-z0-9]"

}

}

Вы можете задать собственный символ для шаблона ввода с помощью maskConfig, например, если вам нужна 9-ка как обычный символ, то можно указать что для подстановки цифр использовать «0». В re мы указываем регулярное выражение для проверки. Также необходимо указать символ заменяющие пустые значение в параметреplaceHolderChar.

НЕ нашли? Не то? Что вы ищете?

Например, так можно задать маску позволяющая вводить книжные коды (ISBN), где 978 это просто цифры, а «0» - подстановочный символ:

{

"className" : 'Terrasoft. controls. MultiMaskEdit',

"value" : {

"bindTo" : 'ISBN'

},

"mask" : {

"bindTo": "getPhoneMask"

},

"maskConfig" : {

"definitions" : {

//цифры

"0" : {

"re" : "[0-9]"

},

"placeHolderChar" : "_"

}

}

}

//...

methods: {

getPhoneMask: function() {

return {

formats: ["978-0-000-00000-0"]

}

}

}

Известная проблема – валидация контрола не передается в модель карточки, т. е. хотя контролл показывает что значение не верно, карточка все равно сохраняется. Пока что надо делать дополнительные проверки в карточке вручную.

Использование в детали "Средства связи"

Чтобы, например, добавить маску для телефонов необходимо добавить замещающий клиентский модуль BaseCommunicationDetail, добавить в dependencies MultiMaskEdit и написать примерно такой код:

define("BaseCommunicationDetail", ["BaseCommunicationDetailResources", "CtiConstants",

"ConfigurationConstants",

"ViewUtilities", "MultiMaskEdit"

], function(resources, CTIBaseConstants, ConfigurationConstants, ViewUtilities) {

var emailTypeId

= munications. UseForAccounts. Other. Email. value;

var currentItemConfigIndex = 0;

function validateNumber(value) {

var invalidMessage = "";

var isValid = true;

var communicationType = this. get("CommunicationType");

var number = value || this. get("Number");

if (ConfigurationConstants. PhonesCommunicationTypes. indexOf(communicationType. value)

!== -1) {

isValid = (Ext. isEmpty(number) ||

new RegExp("^\\+7\\([0-9][0-9][0-9]\\)[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$").test(number));

if (!isValid) {

invalidMessage = "Некорректный номер";

}

}

return {

invalidMessage: invalidMessage,

isValid: isValid

};

}

return {

methods: {

/**

* получить только цифры из строки

*/

getDigitsFromString: function(value) {

return value. replace(/\D/g, "");

},

getMask: function(communicationType) {

if (this. isPhoneTypeForMask(communicationType)) {

return {

formats: ["+7(999)999-99-99"]

};

}

return [];

},

// исключает тип "Внутренний номер"

isPhoneTypeForMask: function(communicationType) {

communicationType = communicationType. value || communicationType;

return ConfigurationConstants. PhonesCommunicationTypes. indexOf(communicationType) !== -1;

},

getMaskEditConfig: function(maskConfig) {

var result = {

className: "Terrasoft. MultiMaskEdit",

mask: {

bindTo: "Masks"

},

onBeforePasteFormatValue: this. getDigitsFromString

};

if (maskConfig) {

result. maskConfig = maskConfig;

}

return result;

},

/**

* @inheritdoc Terrasoft. BaseCommunicationDetail#getItemViewConfig

* @overridden

*/

getItemViewConfig: function(itemConfig, item) {

this. callParent(arguments);

this. set("itemViewConfig", null);

var items = itemConfig. config. items;

var textEditIndex = 1; //TODO: Добавить константу

var testEdit = items[textEditIndex];

Ext. apply(testEdit, this. getMaskEditConfig());

//получаем маску по типу

var communicationType = item. get("CommunicationType");

item. set("Masks", this. getMask(communicationType));

},

initItem: function(detailModel) {

this. set("PhoneCommunicationTypes", detailModel. get("PhoneCommunicationTypes"));

detailModel. addColumnValidator("Number", validateNumber, this);

},

onItemChanged: function(item, config) {

this. callParent(arguments);

var communicationType = item. get("CommunicationType");

item. set("Masks", this. getMask(communicationType));

},

addItem: function(tag) {

var collection = this. get("Collection");

var items = collection. getItems();

var itemsLength = items. length;

this. callParent(arguments);

var newItemsLength = items. length;

if (itemsLength === newItemsLength) {

return;

}

var itemViewModel = items[newItemsLength - 1];

this. initItem. call(itemViewModel, this);

},

initItems: function() {

if (this. get("IsDataLoaded")) {

var collection = this. get("Collection");

Terrasoft. each(collection. getItems(), function(item) {

this. initItem. call(item, this);

}, this);

}

},

/**

* Загружает средства связи

* @protected

* @virtual

* @param {Function} callback callback-функция

* @param {Terrasoft. BaseSchemaViewModel} scope Контекст выполнения callback-функции

*/

loadContainerListData: function(callback, scope) {

this. callParent([function() {

// Добавляем валидатор перед сохранением записи

this. initItems();

callback. call(scope);

}, this]);

}

//TODO: добавить свою валидацию, регулярное выражение для валидации поля можно скопировать

// из mask. re. full в MultiMaskEdit

}

};

});