This calculator was created to help B2B clients assemble custom educational programs using existing Stratoplan modules. It lets users select a base track, individual modules, and number of participants — calculating the cost in real time.
The main idea behind this block is to provide clarity, simplicity, and interactivity for HR teams or decision makers. Pricing updates dynamically based on selected modules and group size, making it easier to plan budgets for corporate education.
View Live Block// JavaScript dynamically handles:
const courses = document.querySelectorAll('#course-options .option');
const modulesContainer = document.getElementById('module-options');
const specialModulesContainer = document.getElementById('special-modules-options');
const moduleWarning = document.getElementById('module-warning');
const studentRanges = document.querySelectorAll('#students-options .option');
const resultEl = document.querySelector('.result-num');
const fullEl = document.querySelector('.price-card .full');
const orderBtn = document.getElementById('order-btn');
let selectedModules = [];
let selectedSpecialModules = [];
const courseModules = {
'Инженерка': ['Задачи инженера', 'Работа с задачами', 'Работа с руководителем', 'Коммуникативные стратегии', 'Лидерство'],
'Команда': ['Работа с командой', 'Контроль задач', 'Задачи тимлида', 'Работа с людьми', 'Лидерство'],
'Рук.отдела': ['Процессы', 'Задачи', 'Бюджеты', 'Управление', 'Изменения']
};
const specialModulesList = [
'Коммуникации', 'Мотивация', 'Стратегия', 'Собеседование',
'Карьера', 'Продакт', 'Проекты', 'Финансы'
];
const basePrices = {
'Команда': 2500,
'Рук.отдела': 3500,
'Инженерка': 2000
};
const pricesTable = {
'Команда': {
'10-19': [6000, 12000, 18000, 24000, 28500],
'20-30': [7500, 15000, 22500, 30000, 34875],
'31-50': [10000, 20000, 30000, 40000, 44500]
},
'Рук.отдела': {
'10-19': [7400, 14800, 22200, 29600, 35150],
'20-30': [8350, 16700, 25050, 33400, 38800]
},
'Инженерка': {
'10-19': [4250, 8500, 12700, 16900, 20000],
'20-30': [6675, 13350, 19900, 26650, 31000],
'31-50': [11100, 22200, 33300, 44400, 49400]
},
'Спецкурсы': {
'10-19': [6000, 12000, 18000, 24000, 28500, 34200, 39900, 45600],
'20-30': [7500, 15000, 22500, 30000, 34875, 41850, 48825, 55800],
'31-50': [10000, 20000, 30000, 40000, 44500, 53400, 62300, 71200]
}
};
function updateSelectedModules() {
selectedModules = Array.from(modulesContainer.querySelectorAll('.option.active'))
.map(el => parseInt(el.dataset.module));
}
// ...