Как сделать психоматрицу по дате рождения в ZeroBlock в Tilda
Рассчитать
-
Характер
-
Энергия
-
Интерес
-
Здоровье
-
Логика
-
Труд
-
Удача
-
Долг
-
Память
-
Доп. числа
-
Деньги
-
Талант
-
Цель
-
Самооценка
-
Темперамент
-
Духовность
-
Стабильность
-
Семейность
РАСЧЕТ ВАШЕЙ
ПСИХОМАТРИЦЫ
Введите вашу дату рождения для рассчета психоматрицы

Как сделать психоматрицу по дате рождения в ZeroBlock в Tilda

1
Создали ZeroBlock и добавили в него форму
2
В этой форме создаём поле - one line input field
placeholder - 00.00.0000
variable name - birthday
validation rule - Number
mask - 99.99.9999
3
Добавляем Button и задаём ей класс birthday-btn
4
Добавляем иконку копирования Image и задаём ей класс copymatrix
5
Добавляем текстовые элементы - подписи и вывод для чисел.
Тексту для чисел назначаем классы

Доп. числа - additionnumb
Характер - basicpr_1
Энергия - basicpr_2
Интерес - basicpr_3
Здоровье - basicpr_4
Логика - basicpr_5
Труд - basicpr_6
Удача - basicpr_7
Долг - basicpr_8
Память - basicpr_9
Самооценка - addpr_1
Деньги - addpr_2
Талант - addpr_3
Цель - addpr_4
Семейность - addpr_5
Стабильность - addpr_6
Духовность - addpr_7
Темперамент - addpr_8

6
Добавляем код в блок Другое - Т123
Mo-ti Level Up
Видео инструкции по добавлению кода и работе с Zero Block.
Создаём психоматрицу в ZeroBlock.
Добавляем кнопку копирования результата.
Фрагмент видео
Библиотека для примера

<style>
.birthday-btn{ 
    cursor:pointer;
    opacity:1;
    transition:all 0.3s ease-in-out ;
}
.block-btn{
    pointer-events:none;
    opacity:0.3;
}
.copymatrix {
    opacity: 0;
    pointer-events: none;
    cursor:pointer;
}
.copymatrix.showicon {
    opacity: 1;
    pointer-events: auto;
}
</style> 

<script>
$( document ).ready(function() {
$('.birthday-btn').addClass('block-btn');
let inputready = false;

let titleArr = [
"1. Дата","2. Доп. числа","3. Характер","4. Энергия","5. Интерес","6. Здоровье",
"7. Логика","8. Труд","9. Удача","10. Долг","11. Память","12. Самооценка","13. Деньги",
"14. Талант","15. Цель","16. Семейность","17. Стабильность","18. Духовность","19. Темперамент"
];
let finObj = {};

//Контроль ввода на количество символов
$(document).on('input keypress keydown', 'input[name="birthday"]', function () {
    if(event.keyCode == 13) {
          event.preventDefault();
          return false;
    };
    let nm = $(this).val().replace(/[^0-9]/g,"");
    if(nm.length==8){
        $('.birthday-btn').removeClass('block-btn');inputready=true;
    }else{
        $('.birthday-btn').addClass('block-btn');inputready=false;
    };    
});    
    
$('.birthday-btn').click(function(e) {
if(inputready){
    //Получаем дату
    let date = $('input[name="birthday"]').val();
    finObj[titleArr[0]] = date;
    let arrDate = date.split('.');
    arrDate[0] = +arrDate[0];
    //Ищем сумму цифр дня и месяца из даты рождения
    let summMDarr = (arrDate[0]+arrDate[1]).split('');
    
    let summMD = 0;
    for (let i = 0; i < summMDarr.length; i++) {
	    summMD += Number(summMDarr[i]);
    };
    // Складываем все цифры года из нашей даты
    let summYarr = arrDate[2].split('');
    let summY = 0;
    for (let i = 0; i < summYarr.length; i++) {
	    summY += Number(summYarr[i]);
    };
    //1-е рабочее число
    let wNumArr = [0,0,0,0];
    wNumArr[0] = summMD+summY;
    //2-е рабочее число
    let secondWnumArr =  wNumArr[0].toString().split('');
    for (let i = 0; i < secondWnumArr.length; i++) {
	    wNumArr[1] += Number(secondWnumArr[i]);
    };
    //3-е рабочее число
    wNumArr[2] =  wNumArr[0] - summMDarr[0]*2 ;
    //4-е рабочее число
    let fourthNumArr =  wNumArr[2].toString().split('');
    for (let i = 0; i < fourthNumArr.length; i++) {
	    wNumArr[3] += Number(fourthNumArr[i]);
    };
    //Составляем сводный массив по полученным данным
    //По дате
    let svTable = [];
    for (let i = 0; i < 4; i++) { svTable.push(summMDarr[i])};
    for (let i = 0; i < 4; i++) { svTable.push(summYarr[i])};
    //По рабочим числам
    let wArr = [];
    for (let i = 0; i < wNumArr.length; i++) {
	    let spl = wNumArr[i].toString().split('');
	    if(spl.length==1) {spl[1]=spl[0];spl[0]='0'};
	    wArr.push(spl[0],spl[1]);
    };
    for (let i = 0; i < 8; i++) { svTable.push(wArr[i])};

    //Основные параметры
    let result = {};
    let mainNumb = [];
    svTable.forEach(function(a){
        result[a] = result[a] + 1 || 1;
    });
    for (let i = 0; i < 10; i++) { if (!result[i])  result[i]=0};
    for (let key in result) { mainNumb.push(result[key])};
    
    //Вывод данных
    //Доп числа
    let dopNumbers  = wNumArr[0]+', '+wNumArr[1]+', '+wNumArr[2]+', '+wNumArr[3];
    $('.additionnumb .tn-atom').text(dopNumbers);
    finObj[titleArr[1]] = dopNumbers;
    
    //Основные параметры
    let summNumb='';
    let mainOptFinal = [];
    for (let i = 1; i < 10; i++) {
        for (let j = 0; j < mainNumb[i] ; j++) { summNumb+=i};
        if(mainNumb[i]==0) summNumb='-';
        mainOptFinal.push(summNumb);
        $('.basicpr_'+i+' .tn-atom').text(summNumb);
        summNumb='';
    };
    
    //Дополнительные параметры
    let addOpt = [];
    function getAddOption(ind,em,ek,ep){
        addOpt[ind] = (mainOptFinal[em]+mainOptFinal[ek]+mainOptFinal[ep]).replace(new RegExp('-', 'g'),"").length;
        if(addOpt[ind]==0) addOpt[ind] = "-";
    };
    getAddOption(0,0,1,2);//Самооценка
    getAddOption(1,3,4,5);//Зарабатывание денег
    getAddOption(2,6,7,8);//Потенциал таланта
    getAddOption(3,0,3,6);//Целеустремленность
    getAddOption(4,1,4,7);//Семейность
    getAddOption(5,2,5,8);//Стабильность
    getAddOption(6,0,4,8);//Духовный потенциал
    getAddOption(7,2,4,6);//Темперамент
    
    for (let i = 0; i < 8; i++) { $('.addpr_'+(i+1)+' .tn-atom').text(addOpt[i])};
    //Заполняем объект для копирования
    //Основа
    for (let i = 2; i <= 10; i++) { finObj[titleArr[i]] = mainOptFinal[i-2] };
    //Доп параметры
    for (let i = 11; i <= 18; i++) {finObj[titleArr[i]] = addOpt[i-11] };
    $('.copymatrix').addClass('showicon');
 
};
});

$('.copymatrix').click(function(e) {
let copyMartixTxt = "";
$.each(finObj, function( key, value ) {
  copyMartixTxt += key+': '+value+'\n';
  
});  

if ( copyMartixTxt.trim().length > 0) {copyFunction(copyMartixTxt)};
});

function copyFunction(copy) {
    var textArea = document.createElement("textarea");
	textArea.value = copy;
	textArea.style.position = "fixed";  
	document.body.appendChild(textArea);
	textArea.focus();textArea.select();document.execCommand('copy');
	document.body.removeChild(textArea);
    
};

});
</script>    
Made on
Tilda