kaspriv maksym
- Odessa, Ukraine
- Phone +38 097 669 73 83
- Viber +38 095 323 52 52
- vestry.odessa@gmail.com
Contact data
summary
Reliable, energetic and resourceful web development specialist. I’m constantly learning, and plan React courses in February 2020. Interesting in project management. I have experience in website design and scripting. In addition, an expert in the field of communication and building relationships with clients, extensive experience in teamwork.
skills
- Languages: PHP (basics), Javascript, HTML, CSS
- Web libs: jQuery, Materialize.css, Bootstrap, Animate.css
- Web Dev tools: Gulp, npm
- QA: Exploratory, Ad Hoc & Functional testing, checklists and test cases, bug reporting
- VCS: Git basics
- DB: MySQL (basic set of queries)
- Graphic editors: CorelDRAW, ADOBE Photoshop
example of code
This code was developed for the Google Apps Script platform, which understands only the ES05 syntax.
/* get string from 'action' select
return {}. Keys:
id: number or 'new'
info: object with data from inputs
stage: only 'details' changes
task: if need finish task - true/false
reminder: {} keys:
id: 'id' of existence reminder or empty
info: all info from reminders inputs
*/
function prepareAndSendRecord(selectedAction) {
var resultObject = {};
var idElem = document.querySelector('#form #id');
var idValue = idElem.value;
var error = false;
var addReminderElem = document.querySelector('#add-reminder input');
var reminderId = document.querySelector('#reminder-id');
if (selectedAction == 'Выбрать действие') {
reportModalShow({ type: 'error', title: 'Ошибка! Что-то пошло не так...', text: 'Выберите необходимое действие для введенной записи!' });
error = true;
} else if (selectedAction == 'Внести/сохранить изменения') {
resultObject.stage = undefined;
if (idValue != 'new') {
var recordsData = saveRecords();
var recordsState = getProjectRecordStates();
resultObject.info = checkEqualObjects(recordsState, recordsData);
} else {
resultObject.info = saveNewRecords();
}
if (addReminderElem.checked == true) {
var rem = {};
var reminderData = saveReminder();
if (reminderId.dataset.id != '') {
rem.id = reminderId.dataset.id + '@google.com';
var reminderState = getReminderStates();
var difference = checkEqualObjects(reminderState, reminderData);
if (difference['reminder-date'] || difference['reminder-time'] || difference['reminder-duration']) {
rem.info = prepareReminderObjToSpreadsheet(reminderData);
} else {
rem.info = difference;
}
} else {
rem.id = undefined;
rem.info = prepareReminderObjToSpreadsheet(reminderData);
}
resultObject.reminder = rem;
} else {
resultObject.reminder = undefined;
}
} else if (selectedAction == 'Сменить этап') {
if (idValue == 'new') {
reportModalShow({ type: 'error', title: 'Ошибка! Что-то пошло не так...', text: 'Смена этапа возможна только у существующего проекта!' });
error = true;
} else {
resultObject.info = undefined;
resultObject.reminder = undefined;
var shangeData = changeStage();// {stage, done}
resultObject.stage = shangeData;
}
} else if (selectedAction == 'Завершить задачу') {
if (idValue == 'new') {
reportModalShow({ type: 'error', title: 'Ошибка! Что-то пошло не так...', text: 'Завершить можно только существующую задачу!' });
error = true;
} else {
resultObject.stage = undefined;
resultObject.task = true;
resultObject.info = finishTask();
if (reminderId.dataset.id != '') {
resultObject.reminder = {};
resultObject.reminder.id = reminderId.dataset.id + '@google.com';
} else {
resultObject.reminder = undefined;
}
}
} else if (selectedAction == 'Изменить/сохранить напоминание') {
resultObject.info = undefined;
resultObject.stage = undefined;
if (addReminderElem.checked == true) {
var rem = {};
if (reminderId.dataset.id != '') {
rem.id = reminderId.dataset.id + '@google.com';
var reminderData = saveReminder();
var reminderState = getReminderStates();
var difference = checkEqualObjects(reminderState, reminderData);
if (difference['reminder-date'] || difference['reminder-time'] || difference['reminder-duration']) {
rem.info = prepareReminderObjToSpreadsheet(reminderData);
} else {
rem.info = difference;
}
} else {
var reminderData = saveReminder();
rem.id = undefined;
rem.info = prepareReminderObjToSpreadsheet(reminderData);
}
resultObject.reminder = rem;
}
} else if (selectedAction == 'Удалить напоминание') {
if (reminderId.dataset.id == '') {
reportModalShow({ type: 'error', title: 'Ошибка! Что-то пошло не так...', text: 'Удалить можно только существующее напоминание!' });
error = true;
} else {
resultObject.info = undefined;
resultObject.stage = undefined;
var rem = {};
rem.id = reminderId.dataset.id + '@google.com';
rem.info = undefined;
rem.clear = true;
resultObject.reminder = rem;
}
}
if (resultObject.info == undefined && resultObject.reminder == undefined && resultObject.stage == undefined && resultObject.task == undefined) {
reportModalShow({ type: 'error', title: 'Ошибка!', text: 'Запись пуста. Добавьте данные для сохранения!' });
} else {
if (!error) {
resultObject.id = idValue;
}
return resultObject;
}
}
work experience
GardenLab - Odessa, Ukraine
Business process automation manager.
- Development of a business process automation system using Javascript native, Google API and Google Apps Script.
- Development of data storage (Google Spreadsheets & SQL Queries) and web layouts.
education
- Bachelor of Computer Engineering - ONPI, Odessa, Ukraine (September 2001 - July 2005)
- Software Testing - QATestLab (Certificate), online (August 2015 - September 2015)
- Web technologies- HTML, CSS, jQuery, JS, PHP, SQL, online (Autumn 2016 - Autumn 2017)
Language competencies
- Russian: native language
- Ukrainian: fluent
- English: pre-intermediate
- German: basic