{"id":150,"date":"2025-07-29T13:58:04","date_gmt":"2025-07-29T13:58:04","guid":{"rendered":"https:\/\/jtainio.fi\/?page_id=150"},"modified":"2025-07-29T14:34:24","modified_gmt":"2025-07-29T14:34:24","slug":"ohjelmistokehitys","status":"publish","type":"page","link":"https:\/\/jtainio.fi\/?page_id=150","title":{"rendered":"Ohjelmistokehitys"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"150\" class=\"elementor elementor-150\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6764ca8 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6764ca8\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-9953f57\" data-id=\"9953f57\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f5620c1 elementor-widget elementor-widget-heading\" data-id=\"f5620c1\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Ohjelmistokehitys<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-adcac18 elementor-icon-list--layout-inline elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"adcac18\" data-element_type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items elementor-inline-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"\/\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Koti<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-caret-right\" viewBox=\"0 0 192 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z\"><\/path><\/svg>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Ohjelmistokehitys<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-f283c15\" data-id=\"f283c15\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-17ac667 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"17ac667\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-b54bc95\" data-id=\"b54bc95\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b5c3622 elementor-widget elementor-widget-image\" data-id=\"b5c3622\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"800\" height=\"533\" src=\"https:\/\/jtainio.fi\/wp-content\/uploads\/2025\/07\/programmer-typing-codes-on-laptop-1024x682.jpg\" class=\"attachment-large size-large wp-image-152\" alt=\"Programmer typing codes on laptop\" srcset=\"https:\/\/jtainio.fi\/wp-content\/uploads\/2025\/07\/programmer-typing-codes-on-laptop-1024x682.jpg 1024w, https:\/\/jtainio.fi\/wp-content\/uploads\/2025\/07\/programmer-typing-codes-on-laptop-300x200.jpg 300w, https:\/\/jtainio.fi\/wp-content\/uploads\/2025\/07\/programmer-typing-codes-on-laptop-768x512.jpg 768w, https:\/\/jtainio.fi\/wp-content\/uploads\/2025\/07\/programmer-typing-codes-on-laptop-1536x1024.jpg 1536w, https:\/\/jtainio.fi\/wp-content\/uploads\/2025\/07\/programmer-typing-codes-on-laptop.jpg 2000w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-3e2df82\" data-id=\"3e2df82\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a3775fd elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"a3775fd\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Ohjelmistokehitys<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-37785c1 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"37785c1\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;_animation_delay&quot;:200}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Tietoa palvelusta<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-87b4d42 elementor-widget elementor-widget-text-editor\" data-id=\"87b4d42\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"29\" data-end=\"275\">J\u202fTainio Oy toteuttaa <strong data-start=\"51\" data-end=\"88\">r\u00e4\u00e4t\u00e4l\u00f6ityj\u00e4 ohjelmistoratkaisuja<\/strong>, jotka tukevat yrityksesi toimintaa ja kasvua. Suunnittelemme ja kehit\u00e4mme ohjelmistot aina asiakkaan tarpeiden mukaan \u2013 oli kyseess\u00e4 verkkopalvelu, sis\u00e4inen ty\u00f6kalu tai SaaS-ratkaisu.<\/p><p data-start=\"277\" data-end=\"477\">Kehitysty\u00f6mme perustuu <strong data-start=\"300\" data-end=\"326\">moderniin teknologiaan<\/strong>, ketter\u00e4\u00e4n tekemiseen ja jatkuvaan yhteisty\u00f6h\u00f6n asiakkaan kanssa. N\u00e4in varmistamme, ett\u00e4 lopputulos on <strong data-start=\"430\" data-end=\"474\">toimiva, turvallinen ja helppok\u00e4ytt\u00f6inen<\/strong>.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7d057f9 elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"7d057f9\" data-element_type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-check-circle\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z\"><\/path><\/svg>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">R\u00e4\u00e4t\u00e4l\u00f6idyt ohjelmistoratkaisut<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-check-circle\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z\"><\/path><\/svg>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Ketter\u00e4 kehitys ja joustava toteutus<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-check-circle\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z\"><\/path><\/svg>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Tuki ja jatkokehitys<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-4e96e2a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"4e96e2a\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7f1dc41\" data-id=\"7f1dc41\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-366bce0 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"366bce0\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-06a8549\" data-id=\"06a8549\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2b2a7e3 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"2b2a7e3\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">UKK<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3d7a95c elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"3d7a95c\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;_animation_delay&quot;:200}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Usein kysytty\u00e4<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6d2fe54 elementor-widget__width-inherit elementor-widget elementor-widget-accordion\" data-id=\"6d2fe54\" data-element_type=\"widget\" data-widget_type=\"accordion.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-accordion\">\n\t\t\t\t\t\t\t<div class=\"elementor-accordion-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-1141\" class=\"elementor-tab-title\" data-tab=\"1\" role=\"button\" aria-controls=\"elementor-tab-content-1141\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon elementor-accordion-icon-right\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-closed\"><svg class=\"e-font-icon-svg e-far-circle\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200z\"><\/path><\/svg><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-opened\"><svg class=\"e-font-icon-svg e-fas-circle\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z\"><\/path><\/svg><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-accordion-title\" tabindex=\"0\">Millaisia ohjelmistoja voitte kehitt\u00e4\u00e4?<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-1141\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"1\" role=\"region\" aria-labelledby=\"elementor-tab-title-1141\"><p>Kehit\u00e4mme r\u00e4\u00e4t\u00e4l\u00f6ityj\u00e4 sovelluksia, verkkopalveluja ja SaaS-ratkaisuja, jotka tukevat yrityksesi liiketoimintaa ja prosesseja.<\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-accordion-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-1142\" class=\"elementor-tab-title\" data-tab=\"2\" role=\"button\" aria-controls=\"elementor-tab-content-1142\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon elementor-accordion-icon-right\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-closed\"><svg class=\"e-font-icon-svg e-far-circle\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200z\"><\/path><\/svg><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-opened\"><svg class=\"e-font-icon-svg e-fas-circle\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z\"><\/path><\/svg><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-accordion-title\" tabindex=\"0\">Miten ohjelmistokehitysprojekti etenee?<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-1142\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"2\" role=\"region\" aria-labelledby=\"elementor-tab-title-1142\"><p>Projekti alkaa tarpeiden kartoituksella, etenee suunnitteluun ja kehitykseen, ja p\u00e4\u00e4ttyy testaukseen sek\u00e4 k\u00e4ytt\u00f6\u00f6nottoon.<\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-accordion-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-1143\" class=\"elementor-tab-title\" data-tab=\"3\" role=\"button\" aria-controls=\"elementor-tab-content-1143\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon elementor-accordion-icon-right\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-closed\"><svg class=\"e-font-icon-svg e-far-circle\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200z\"><\/path><\/svg><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-opened\"><svg class=\"e-font-icon-svg e-fas-circle\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z\"><\/path><\/svg><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-accordion-title\" tabindex=\"0\">Voitteko jatkokehitt\u00e4\u00e4 jo olemassa olevaa ohjelmistoa?<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-1143\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"3\" role=\"region\" aria-labelledby=\"elementor-tab-title-1143\"><p data-start=\"382\" data-end=\"539\">Kyll\u00e4, voimme p\u00e4ivitt\u00e4\u00e4 ja laajentaa nykyisi\u00e4 j\u00e4rjestelmi\u00e4 sek\u00e4 korjata mahdolliset ongelmat.<\/p><p data-start=\"541\" data-end=\"701\">\u00a0<\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-accordion-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-1144\" class=\"elementor-tab-title\" data-tab=\"4\" role=\"button\" aria-controls=\"elementor-tab-content-1144\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon elementor-accordion-icon-right\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-closed\"><svg class=\"e-font-icon-svg e-far-circle\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200z\"><\/path><\/svg><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-opened\"><svg class=\"e-font-icon-svg e-fas-circle\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z\"><\/path><\/svg><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-accordion-title\" tabindex=\"0\">Kuinka varmistatte ohjelmiston turvallisuuden?<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-1144\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"4\" role=\"region\" aria-labelledby=\"elementor-tab-title-1144\"><p data-start=\"541\" data-end=\"701\">Noudatamme parhaita k\u00e4yt\u00e4nt\u00f6j\u00e4 tietoturvassa ja testaamme ohjelmiston huolellisesti ennen k\u00e4ytt\u00f6\u00f6nottoa.<\/p><p data-start=\"703\" data-end=\"879\" data-is-last-node=\"\" data-is-only-node=\"\">\u00a0<\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-accordion-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-1145\" class=\"elementor-tab-title\" data-tab=\"5\" role=\"button\" aria-controls=\"elementor-tab-content-1145\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon elementor-accordion-icon-right\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-closed\"><svg class=\"e-font-icon-svg e-far-circle\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200z\"><\/path><\/svg><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-opened\"><svg class=\"e-font-icon-svg e-fas-circle\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z\"><\/path><\/svg><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-accordion-title\" tabindex=\"0\">Tarjoatteko tukea my\u00f6s projektin valmistumisen j\u00e4lkeen?<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-1145\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"5\" role=\"region\" aria-labelledby=\"elementor-tab-title-1145\"><p>Kyll\u00e4, tarjoamme yll\u00e4pitoa, p\u00e4ivityksi\u00e4 ja k\u00e4ytt\u00e4j\u00e4tukea, jotta ohjelmisto pysyy ajan tasalla ja toimintavarma.<\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-931e95c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"931e95c\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-a6dc3ac\" data-id=\"a6dc3ac\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f2feb38 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"f2feb38\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Yhteystiedot<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0ee4e8b elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"0ee4e8b\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;_animation_delay&quot;:200}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Pyyd\u00e4 tarjousta!<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8b28b8e elementor-widget elementor-widget-text-editor\" data-id=\"8b28b8e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Tarvitsetko apua IT-ratkaisujen suunnittelussa, yll\u00e4pidossa tai kehityksess\u00e4?<br data-start=\"135\" data-end=\"138\" \/>L\u00e4het\u00e4 viesti tai soita, niin etsit\u00e4\u00e4n yhdess\u00e4 paras ratkaisu yrityksellesi.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a203744 elementor-position-left elementor-mobile-position-left elementor-view-default elementor-vertical-align-top elementor-widget elementor-widget-icon-box\" data-id=\"a203744\" data-element_type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\t\t\t<div class=\"elementor-icon-box-icon\">\n\t\t\t\t<span  class=\"elementor-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"icon icon-map-marker1\"><\/i>\t\t\t\t<\/span>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<h4 class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\tK\u00e4yntiosoite\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/h4>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\tVissavedentie 1\n69600 Kaustinen\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-74ba0ab elementor-position-left elementor-mobile-position-left elementor-view-default elementor-vertical-align-top elementor-widget elementor-widget-icon-box\" data-id=\"74ba0ab\" data-element_type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\t\t\t<div class=\"elementor-icon-box-icon\">\n\t\t\t\t<span  class=\"elementor-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"icon icon-google-map\"><\/i>\t\t\t\t<\/span>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<h4 class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\tosoite\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/h4>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\tTorpantie 10\n69730 Tunkkari\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3f21cdd elementor-position-left elementor-mobile-position-left elementor-view-default elementor-vertical-align-top elementor-widget elementor-widget-icon-box\" data-id=\"3f21cdd\" data-element_type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\t\t\t<div class=\"elementor-icon-box-icon\">\n\t\t\t\t<span  class=\"elementor-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"icon icon-phone1\"><\/i>\t\t\t\t<\/span>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<h4 class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\tPuhelinnumero\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/h4>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\t045 1705222\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e6153b5 elementor-position-left elementor-mobile-position-left elementor-view-default elementor-vertical-align-top elementor-widget elementor-widget-icon-box\" data-id=\"e6153b5\" data-element_type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\t\t\t<div class=\"elementor-icon-box-icon\">\n\t\t\t\t<span  class=\"elementor-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"icon icon-suitcase-1\"><\/i>\t\t\t\t<\/span>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<h4 class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\tY-tunnus\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/h4>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\t2790126-3\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ce73762 elementor-position-left elementor-mobile-position-left elementor-view-default elementor-vertical-align-top elementor-widget elementor-widget-icon-box\" data-id=\"ce73762\" data-element_type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\t\t\t<div class=\"elementor-icon-box-icon\">\n\t\t\t\t<span  class=\"elementor-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"icon icon-clock2\"><\/i>\t\t\t\t<\/span>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<h4 class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\tAukioloajat\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/h4>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\tSopimuksen mukaan\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-ae709f0\" data-id=\"ae709f0\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-30c4a2a elementor-widget elementor-widget-heading\" data-id=\"30c4a2a\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">L\u00e4het\u00e4 meille viesti!<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5435259 elementor-widget elementor-widget-metform\" data-id=\"5435259\" data-element_type=\"widget\" data-widget_type=\"metform.default\">\n\t\t\t\t\t<div id=\"mf-response-props-id-83\" data-previous-steps-style=\"\" data-editswitchopen=\"\" data-response_type=\"alert\" data-erroricon=\"fas fa-exclamation-triangle\" data-successicon=\"fas fa-check\" data-messageposition=\"top\" class=\"   mf-scroll-top-no\">\n\t\t<div class=\"formpicker_warper formpicker_warper_editable\" data-metform-formpicker-key=\"83\" >\n\t\t\t\t\n\t\t\t<div class=\"mf-widget-container\">\n\t\t\t\t\r\n\t\t<div\r\n\t\t\tid=\"metform-wrap-5435259-83\"\r\n\t\t\tclass=\"mf-form-wrapper\"\r\n\t\t\tdata-form-id=\"83\"\r\n\t\t\tdata-action=\"https:\/\/jtainio.fi\/index.php?rest_route=\/metform\/v1\/entries\/insert\/83\"\r\n\t\t\tdata-wp-nonce=\"1076b7ee6a\"\r\n\t\t\tdata-form-nonce=\"36a713cb4c\"\r\n\t\t\tdata-quiz-summery = \"false\"\r\n\t\t\tdata-save-progress = \"false\"\r\n\t\t\tdata-form-type=\"general-form\"\r\n\t\t\tdata-stop-vertical-effect=\"\"\r\n\t\t\t><\/div>\r\n\r\n\r\n\t\t<!----------------------------- \r\n\t\t\t* controls_data : find the the props passed indie of data attribute\r\n\t\t\t* props.SubmitResponseMarkup : contains the markup of error or success message\r\n\t\t\t* https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Template_literals\r\n\t\t--------------------------- -->\r\n\r\n\t\t\t\t<script type=\"text\/mf\" class=\"mf-template\">\r\n\t\t\tfunction controls_data (value){\r\n\t\t\t\tlet currentWrapper = \"mf-response-props-id-83\";\r\n\t\t\t\tlet currentEl = document.getElementById(currentWrapper);\r\n\t\t\t\t\r\n\t\t\t\treturn currentEl ? currentEl.dataset[value] : false\r\n\t\t\t}\r\n\r\n\r\n\t\t\tlet is_edit_mode = '' ? true : false;\r\n\t\t\tlet message_position = controls_data('messageposition') || 'top';\r\n\r\n\t\t\t\r\n\t\t\tlet message_successIcon = controls_data('successicon') || '';\r\n\t\t\tlet message_errorIcon = controls_data('erroricon') || '';\r\n\t\t\tlet message_editSwitch = controls_data('editswitchopen') === 'yes' ? true : false;\r\n\t\t\tlet message_proClass = controls_data('editswitchopen') === 'yes' ? 'mf_pro_activated' : '';\r\n\t\t\t\r\n\t\t\tlet is_dummy_markup = is_edit_mode && message_editSwitch ? true : false;\r\n\r\n\t\t\t\r\n\t\t\treturn html`\r\n\t\t\t\t<form\r\n\t\t\t\t\tclassName=\"metform-form-content\"\r\n\t\t\t\t\tref=${parent.formContainerRef}\r\n\t\t\t\t\tonSubmit=${ validation.handleSubmit( parent.handleFormSubmit ) }\r\n\t\t\t\t\r\n\t\t\t\t\t>\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\t${is_dummy_markup ? message_position === 'top' ?  props.ResponseDummyMarkup(message_successIcon, message_proClass) : '' : ''}\r\n\t\t\t\t\t${is_dummy_markup ? ' ' :  message_position === 'top' ? props.SubmitResponseMarkup`${parent}${state}${message_successIcon}${message_errorIcon}${message_proClass}` : ''}\r\n\r\n\t\t\t\t\t<!--------------------------------------------------------\r\n\t\t\t\t\t*** IMPORTANT \/ DANGEROUS ***\r\n\t\t\t\t\t${html``} must be used as in immediate child of \"metform-form-main-wrapper\"\r\n\t\t\t\t\tclass otherwise multistep form will not run at all\r\n\t\t\t\t\t---------------------------------------------------------->\r\n\r\n\t\t\t\t\t<div className=\"metform-form-main-wrapper\" key=${'hide-form-after-submit'} ref=${parent.formRef}>\r\n\t\t\t\t\t${html`\r\n\t\t\t\t\t\t\t\t<div data-elementor-type=\"wp-post\" key=\"2\" data-elementor-id=\"83\" className=\"elementor elementor-83\" data-elementor-post-type=\"metform-form\">\n\t\t\t\t\t\t<section className=\"elementor-section elementor-top-section elementor-element elementor-element-72e40bc6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"72e40bc6\" data-element_type=\"section\">\n\t\t\t\t\t\t<div className=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div className=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6d9d108c\" data-id=\"6d9d108c\" data-element_type=\"column\">\n\t\t\t<div className=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section className=\"elementor-section elementor-inner-section elementor-element elementor-element-40d2e7db elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"40d2e7db\" data-element_type=\"section\">\n\t\t\t\t\t\t<div className=\"elementor-container elementor-column-gap-custom\">\n\t\t\t\t\t<div className=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-3ea3c588\" data-id=\"3ea3c588\" data-element_type=\"column\">\n\t\t\t<div className=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div className=\"elementor-element elementor-element-4bc19136 elementor-widget elementor-widget-mf-text\" data-id=\"4bc19136\" data-element_type=\"widget\" data-settings=\"{&quot;mf_input_name&quot;:&quot;Koko_Nimi&quot;}\" data-widget_type=\"mf-text.default\">\n\t\t\t\t\t\r\n\t\t<div className=\"mf-input-wrapper\">\r\n\t\t\t\t\t\t\t<label className=\"mf-input-label\" htmlFor=\"mf-input-text-4bc19136\">\r\n\t\t\t\t\t${ parent.decodeEntities(`Koko Nimi`) } \t\t\t\t\t<span className=\"mf-input-required-indicator\">*<\/span>\r\n\t\t\t\t<\/label>\r\n\t\t\t\r\n\t\t\t<input\r\n\t\t\t\ttype=\"text\"\r\n\t\t\t\tclassName=\"mf-input \"\r\n\t\t\t\tid=\"mf-input-text-4bc19136\"\r\n\t\t\t\tname=\"Koko_Nimi\"\r\n\t\t\t\tplaceholder=\"${ parent.decodeEntities(`Koko Nimi`) } \"\r\n\t\t\t\t\t\t\t\t\tonInput=${parent.handleChange}\r\n\t\t\t\t\tonBlur=${parent.handleChange}\r\n\t\t\t\t\taria-invalid=${validation.errors['Koko_Nimi'] ? 'true' : 'false'}\r\n\t\t\t\t\tref=${el =>{\r\n\t\t\t\t\t\t\t\t\t\t\t\tparent.activateValidation({\"message\":\"This field is required.\",\"minLength\":1,\"maxLength\":\"\",\"type\":\"none\",\"required\":true,\"expression\":\"null\"}, el)\r\n\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\/>\r\n\r\n\t\t\t\t\t\t\t<${validation.ErrorMessage}\r\n\t\t\t\t\terrors=${validation.errors}\r\n\t\t\t\t\tname=\"Koko_Nimi\"\r\n\t\t\t\t\tas=${html`<span className=\"mf-error-message\"><\/span>`}\r\n\t\t\t\t\t\/>\r\n\t\t\t\r\n\t\t\t\t\t<\/div>\r\n\r\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section className=\"elementor-section elementor-inner-section elementor-element elementor-element-52326cb7 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"52326cb7\" data-element_type=\"section\">\n\t\t\t\t\t\t<div className=\"elementor-container elementor-column-gap-custom\">\n\t\t\t\t\t<div className=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-5bc84b9a\" data-id=\"5bc84b9a\" data-element_type=\"column\">\n\t\t\t<div className=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div className=\"elementor-element elementor-element-4be6ad99 elementor-widget elementor-widget-mf-email\" data-id=\"4be6ad99\" data-element_type=\"widget\" data-settings=\"{&quot;mf_input_name&quot;:&quot;mf-email&quot;}\" data-widget_type=\"mf-email.default\">\n\t\t\t\t\t\r\n\t\t<div className=\"mf-input-wrapper\">\r\n\t\t\t\t\t\t\t<label className=\"mf-input-label\" htmlFor=\"mf-input-email-4be6ad99\">\r\n\t\t\t\t\t${ parent.decodeEntities(`S\u00e4hk\u00f6posti`) } \t\t\t\t\t<span className=\"mf-input-required-indicator\">*<\/span>\r\n\t\t\t\t<\/label>\r\n\t\t\t\r\n\t\t\t<input \r\n\t\t\t\ttype=\"email\" \r\n\t\t\t\t \r\n\t\t\t\tdefaultValue=\"\" \r\n\t\t\t\tclassName=\"mf-input \" \r\n\t\t\t\tid=\"mf-input-email-4be6ad99\" \r\n\t\t\t\tname=\"mf-email\" \r\n\t\t\t\tplaceholder=\"${ parent.decodeEntities(`S\u00e4hk\u00f6posti`) } \" \r\n\t\t\t\t \r\n\t\t\t\tonBlur=${parent.handleChange} onFocus=${parent.handleChange} aria-invalid=${validation.errors['mf-email'] ? 'true' : 'false' } \r\n\t\t\t\tref=${el=> parent.activateValidation({\"message\":\"This field is required.\",\"emailMessage\":\"Please enter a valid Email address\",\"minLength\":1,\"maxLength\":\"\",\"type\":\"none\",\"required\":true,\"expression\":\"null\"}, el)}\r\n\t\t\t\t\t\t\t\/>\r\n\r\n\t\t\t\t\t\t<${validation.ErrorMessage} \r\n\t\t\t\terrors=${validation.errors} \r\n\t\t\t\tname=\"mf-email\" \r\n\t\t\t\tas=${html`<span className=\"mf-error-message\"><\/span>`}\r\n\t\t\t\/>\r\n\t\t\t\r\n\t\t\t\t\t<\/div>\r\n\r\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div className=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-319d7115\" data-id=\"319d7115\" data-element_type=\"column\">\n\t\t\t<div className=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div className=\"elementor-element elementor-element-792d01e elementor-widget elementor-widget-mf-text\" data-id=\"792d01e\" data-element_type=\"widget\" data-settings=\"{&quot;mf_input_name&quot;:&quot;Aihe&quot;}\" data-widget_type=\"mf-text.default\">\n\t\t\t\t\t\r\n\t\t<div className=\"mf-input-wrapper\">\r\n\t\t\t\t\t\t\t<label className=\"mf-input-label\" htmlFor=\"mf-input-text-792d01e\">\r\n\t\t\t\t\t${ parent.decodeEntities(`Aihe`) } \t\t\t\t\t<span className=\"mf-input-required-indicator\"><\/span>\r\n\t\t\t\t<\/label>\r\n\t\t\t\r\n\t\t\t<input\r\n\t\t\t\ttype=\"text\"\r\n\t\t\t\tclassName=\"mf-input \"\r\n\t\t\t\tid=\"mf-input-text-792d01e\"\r\n\t\t\t\tname=\"Aihe\"\r\n\t\t\t\tplaceholder=\"${ parent.decodeEntities(`Aihe`) } \"\r\n\t\t\t\t\t\t\t\t\tonInput=${parent.handleChange}\r\n\t\t\t\t\tonBlur=${parent.handleChange}\r\n\t\t\t\t\taria-invalid=${validation.errors['Aihe'] ? 'true' : 'false'}\r\n\t\t\t\t\tref=${el =>{\r\n\t\t\t\t\t\t\t\t\t\t\t\tparent.activateValidation({\"message\":\"This field is required.\",\"minLength\":1,\"maxLength\":\"\",\"type\":\"none\",\"required\":false,\"expression\":\"null\"}, el)\r\n\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\/>\r\n\r\n\t\t\t\t\t\t\t<${validation.ErrorMessage}\r\n\t\t\t\t\terrors=${validation.errors}\r\n\t\t\t\t\tname=\"Aihe\"\r\n\t\t\t\t\tas=${html`<span className=\"mf-error-message\"><\/span>`}\r\n\t\t\t\t\t\/>\r\n\t\t\t\r\n\t\t\t\t\t<\/div>\r\n\r\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section className=\"elementor-section elementor-inner-section elementor-element elementor-element-78be35dc elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"78be35dc\" data-element_type=\"section\">\n\t\t\t\t\t\t<div className=\"elementor-container elementor-column-gap-custom\">\n\t\t\t\t\t<div className=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-a582d05\" data-id=\"a582d05\" data-element_type=\"column\">\n\t\t\t<div className=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div className=\"elementor-element elementor-element-4b1b8b48 elementor-widget elementor-widget-mf-textarea\" data-id=\"4b1b8b48\" data-element_type=\"widget\" data-settings=\"{&quot;mf_input_name&quot;:&quot;Viesti&quot;}\" data-widget_type=\"mf-textarea.default\">\n\t\t\t\t\t\r\n\t\t<div className=\"mf-input-wrapper\">\r\n\t\t\t\t\t\t\t<label className=\"mf-input-label\" htmlFor=\"mf-input-text-area-4b1b8b48\">\r\n\t\t\t\t\t${ parent.decodeEntities(`Viesti`) } \t\t\t\t\t<span className=\"mf-input-required-indicator\"><\/span>\r\n\t\t\t\t<\/label>\r\n\t\t\t\r\n\t\t\t<textarea className=\"mf-input mf-textarea \" id=\"mf-input-text-area-4b1b8b48\"\r\n\t\t\t\tname=\"Viesti\" \r\n\t\t\t\tplaceholder=\"${ parent.decodeEntities(`Sinun viesti...`) } \"\r\n\t\t\t\tcols=\"30\" rows=\"10\"\r\n\t\t\t\t\t\t\t\t\tonInput=${ parent.handleChange }\r\n\t\t\t\t\taria-invalid=${validation.errors['Viesti'] ? 'true' : 'false'}\r\n\t\t\t\t\tref=${ el => parent.activateValidation({\"message\":\"This field is required.\",\"minLength\":1,\"maxLength\":\"\",\"type\":\"none\",\"required\":false,\"expression\":\"null\"}, el)}\r\n\t\t\t\t\t\t\t\t><\/textarea>\r\n\r\n\t\t\t\t\t\t\t<${validation.ErrorMessage}\r\n\t\t\t\t\terrors=${validation.errors}\r\n\t\t\t\t\tname=\"Viesti\"\r\n\t\t\t\t\tas=${html`<span className=\"mf-error-message\"><\/span>`}\r\n\t\t\t\t\t\/>\r\n\t\t\t\t\t\t\t\t<\/div>\r\n\r\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section className=\"elementor-section elementor-inner-section elementor-element elementor-element-1690efa0 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"1690efa0\" data-element_type=\"section\">\n\t\t\t\t\t\t<div className=\"elementor-container elementor-column-gap-custom\">\n\t\t\t\t\t<div className=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-1d230d94\" data-id=\"1d230d94\" data-element_type=\"column\">\n\t\t\t<div className=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div className=\"elementor-element elementor-element-284c90f4 mf-btn--justify mf-btn--tablet-justify mf-btn--mobile-justify elementor-widget elementor-widget-mf-button\" data-id=\"284c90f4\" data-element_type=\"widget\" data-widget_type=\"mf-button.default\">\n\t\t\t\t\t\t\t<div className=\"mf-btn-wraper \" data-mf-form-conditional-logic-requirement=\"\">\r\n\t\t\t\t\t\t\t<button type=\"submit\" className=\"metform-btn metform-submit-btn \" id=\"\">\r\n\t\t\t\t\t<span>${ parent.decodeEntities(`L\u00e4het\u00e4`) } <\/span>\r\n\t\t\t\t<\/button>\r\n\t\t\t        <\/div>\r\n        \t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t`}\r\n\t\t\t\t\t<\/div>\r\n\r\n\t\t\t\t\t${is_dummy_markup ? message_position === 'bottom' ? props.ResponseDummyMarkup(message_successIcon, message_proClass) : '' : ''}\r\n\t\t\t\t\t${is_dummy_markup ? ' ' : message_position === 'bottom' ? props.SubmitResponseMarkup`${parent}${state}${message_successIcon}${message_errorIcon}${message_proClass}` : ''}\r\n\t\t\t\t\r\n\t\t\t\t<\/form>\r\n\t\t\t`\r\n\t\t<\/script>\r\n\r\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t<\/div>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Ohjelmistokehitys Koti Ohjelmistokehitys Ohjelmistokehitys Tietoa palvelusta J\u202fTainio Oy toteuttaa r\u00e4\u00e4t\u00e4l\u00f6ityj\u00e4 ohjelmistoratkaisuja, jotka tukevat yrityksesi toimintaa ja kasvua. Suunnittelemme ja kehit\u00e4mme ohjelmistot aina asiakkaan tarpeiden mukaan \u2013 oli kyseess\u00e4 verkkopalvelu, sis\u00e4inen ty\u00f6kalu tai SaaS-ratkaisu. Kehitysty\u00f6mme perustuu moderniin teknologiaan, ketter\u00e4\u00e4n tekemiseen ja jatkuvaan yhteisty\u00f6h\u00f6n asiakkaan kanssa. N\u00e4in varmistamme, ett\u00e4 lopputulos on toimiva, turvallinen ja helppok\u00e4ytt\u00f6inen. R\u00e4\u00e4t\u00e4l\u00f6idyt ohjelmistoratkaisut [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-150","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/jtainio.fi\/index.php?rest_route=\/wp\/v2\/pages\/150","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jtainio.fi\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/jtainio.fi\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/jtainio.fi\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jtainio.fi\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=150"}],"version-history":[{"count":7,"href":"https:\/\/jtainio.fi\/index.php?rest_route=\/wp\/v2\/pages\/150\/revisions"}],"predecessor-version":[{"id":219,"href":"https:\/\/jtainio.fi\/index.php?rest_route=\/wp\/v2\/pages\/150\/revisions\/219"}],"wp:attachment":[{"href":"https:\/\/jtainio.fi\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=150"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}