POWERED BY

Call for Proposals

Introduction

We will accept a broad range of presentations, from reports on academic and commercial projects to tutorials and case studies. As long as the presentation is interesting and potentially useful to the audience, it will be considered for inclusion in the programme.


Talk Intro

What is your talk about?

Speaker Profile

Who will give this talk? We will show this to attendees to showcase your talk.

Contact Information

How can our team get in touch with you?
// // This file is meant to regroup your javascript code. You can either copy/past // any code that should be executed on each page loading or write your own // taking advantage of the Odoo framework to create new behaviors or modify // existing ones. For example, doing this will greet any visitor with a 'Hello, // world !' message in a popup: // /* odoo.define('website.user_custom_code', function (require) { 'use strict'; var Dialog = require('web.Dialog'); var publicWidget = require('web.public.widget'); publicWidget.registry.HelloWorldPopup = publicWidget.Widget.extend({ selector: '#wrapwrap', start: function () { Dialog.alert(this, "Hello, world!"); return this._super.apply(this, arguments); }, }) }); */ /*javascript for job form application */ const input = document.getElementById('recruitment1'); const input2 = document.getElementById('recruitment2'); const input3 = document.getElementById('recruitment3'); const input4 = document.getElementById('oq0n5e284u') const input5 = document.getElementById('s4mwapgldsi') let inputs = [input, input2,input4,input5]; inputs.forEach((input, i) => { if (input) { input.addEventListener('input', function() { try { if (input.checkValidity()) { input.classList.add('is-valid'); input.classList.remove('is-invalid'); input.parentElement.nextElementSibling.style.display = 'block'; } else { input.classList.add('is-invalid'); input.classList.remove('is-valid'); input.parentElement.nextElementSibling.style.display = 'none'; } } catch (error) { console.error('Recruitment error:', error); } }); } // else { // console.log("Input element " + i + "is null"); // } }); /*------------hiding fields if the position is the open one-------------------*/ try { var jobNameElement = document.querySelector('.nameOfJob'); if (jobNameElement) { var jobName = jobNameElement.textContent.toLowerCase(); console.log(jobName); var keywordToHide = 'open'; var hideFields = false; if (jobName.includes(keywordToHide)) { hideFields = true; } var toHideFields = document.querySelectorAll('.toHide'); var toShowFields = document.querySelectorAll('.Showfield'); var resume = document.querySelector("[name='Resume']"); var toKeep = document.querySelector(".toKeep"); var requiredMark = toKeep.querySelector('div label span:nth-child(2)'); // console.log("the resume element", resume); // console.log('the resquired mark of the resume field', requiredMark); for (var i = 0; i < toHideFields.length; i++) { //if it's the open position if (hideFields) { toHideFields[i].style.display = 'none'; //make all the hided elements optional toHideFields[i].querySelectorAll('[required]').forEach(function (element) { element.removeAttribute('required'); }); //show new fields that are just for the open position for (const field of toShowFields){ field.style.display = 'block'; console.log("showing fields") // set the state of the fields as optional field.querySelectorAll('[required]').forEach(function (elt){ elt.setAttribute('required','1'); }); } //set resume as optional resume.removeAttribute('required') requiredMark.style.display = 'none'; } else { toHideFields[i].style.display = 'block'; for (const field of toShowFields){ field.style.display = 'none'; // set the state of the fields of the open position as optional field.querySelectorAll('[required]').forEach(function (elt){ elt.removeAttribute('required'); }); } //set back resume as required resume.setAttribute('required','1'); requiredMark.style.display = 'block'; } } } // else { // console.log('.nameOfJob element not found'); // } } catch (error) { console.error('Hiding fields for Open position error:', error); } /* REST api to get countries code*/ const selectCountries = document.getElementById('country-codes'); if (selectCountries) { // Make a request to the API endpoint fetch('https://restcountries.com/v3.1/all') .then(response => response.json()) .then(data => { // Extract the country codes from the response const countryCodes = data.map(country => country.cca2); // Add the country codes to the selectCountries element countryCodes.forEach(code => { const option = document.createElement('option'); option.value = code; option.text = code; selectCountries.appendChild(option); }); }) .catch(error => console.log(error)); } // Function to show the selected page content and hide others function showPage(page) { try { var pageContents = document.getElementsByClassName("page-content"); var navLinks = document.getElementsByClassName("nav-link"); for (var i = 0; i < pageContents.length; i++) { if (i === page - 1) { pageContents[i].style.display = "block"; navLinks[i].classList.add("active"); } else { pageContents[i].style.display = "none"; navLinks[i].classList.remove("active"); } } } catch (error) { console.error('showPage error:', error); } } //search bar for the job-------------------------------------------------------- // making sure that the code is executed before the dom is loaded. /*document.addEventListener('DOMContentLoaded', function() { function searchWithinPage() { var searchQuery = document.querySelector('.oe_search_box'); if (!searchQuery) { console.error('Search input element not found'); return; } var searchValue = searchQuery.value.toLowerCase().trim(); var elementsToSearch = document.getElementsByClassName('searchingArea'); for (var i = 0; i < elementsToSearch.length; i++) { var content = elementsToSearch[i].textContent.toLowerCase(); if (searchValue === '') { elementsToSearch[i].classList.remove('highlight'); } else { if (content.includes(searchValue)) { elementsToSearch[i].classList.add('highlight'); } else { elementsToSearch[i].classList.remove('highlight'); } } } } var searchBox = document.querySelector('.oe_search_box'); if (searchBox) { searchBox.addEventListener('input', function() { if (this.value.trim() === '') { var highlightedElements = document.querySelectorAll('.highlight'); highlightedElements.forEach(function(element) { element.classList.remove('highlight'); }); } }); } else { console.error('Search input element not found'); } });*/ // newsletter reset ------------------------------------------------------------- // Get the email input element and the subscribe button element const emailInput = document.querySelector('.js_subscribe_email'); const subscribeButton = document.querySelector('.js_subscribe_btn'); // const thanksButton = document.querySelector('.js_subscribed_btn'); const thanksButton = document.querySelector('.btn-success'); // try { // if (emailInput && subscribeButton && thanksButton) { // console.log('1') // window.addEventListener('load', function() { // console.log('2') // emailInput.value = ''; // subscribeButton.style.display = 'inline-block'; // thanksButton.style.display = 'none'; // }); // } // } // catch (error) { // console.log('3') // console.error('Window addEventListener error:', error); // } // try{ // let email = emailInput.value.trim(); // console.log("this is the email",email); // const handelInput(e){ // const emailvalue = e.target.value ; // console.log("email value", emailvalue); // } // emailInput.addEventListener("change", handelInput); // }catch(e){ // console.log("we can't find the email or its value") // } // // Add event listener to the subscribe button // if (subscribeButton) { // console.log('4') // console.log("this is subscribeButton",subscribeButton); // console.log("this is thanksButton",thanksButton); // try { // console.log('5') // const handelSubmit = (e)=>{ // e.preventDefault(); // Prevent the default form submission // console.log('5.1') // // Get the entered email // // Validate the email (you can add your own email validation logic here) // if (email !== '') { // console.log('6') // // Hide the subscribe button and show the thanks message // subscribeButton.style.display = 'none'; // thanksButton.style.display = 'inline-block'; // // Reset the input field after 3 seconds // console.log('111') // subscribeButton.removeEventListener('click', handelSubmit); // console.log('222') // setTimeout(function() { // console.log('6.1') // subscribeButton.style.display = 'inline-block'; // console.log('6.2') // thanksButton.style.display = 'none'; // emailInput.value = ''; // emailInput.innerText = ''; // window.location.reload(); // }, 3000); // // return; // } // } // subscribeButton.addEventListener('click', handelSubmit); // } // catch (error) { // console.log('7') // console.error('subscribeButton error:', error); // } // } // console.log('8') // console.log("Subscribed email: " + localStorage.getItem('subscribedEmail')); // this code is for newsletter confirmation on mobile function showThankYouMessage() { alert("Thank you for submitting the form!"); }