CDIabout 22 hours ago

Senior Product Associate

Non precisé
Kampala (Uganda)

Job Description

window.notificationMessages = []; Help us serve you better & stand to win a $200 Samsung phone & data bundles! Complete a short survey here Complete survey Help us serve you better & stand to win a $200 Samsung phone & data bundles! Complete a short survey here Complete survey Verify Employer Account Now Activate let hasCheckedBrowserAlert = false;

function bannerSlider(initialBanners = []) { return { banners: Array.isArray(initialBanners) ? initialBanners : [], activeSlide: 1, timer: null, hydrated: false,

init() { this.hydrated = true;

this.$nextTick(() => { this.deferLoop();

});

},

loop() { if (this.banners.length > 1 && !this.timer) { this.timer = setInterval(() => { this.activeSlide = (this.activeSlide % this.banners.length) + 1;

}, 5000);

} },

deferLoop() { if (this.banners.length this.loop();

if ("requestIdleCallback" in window) { requestIdleCallback(start, { timeout: 6000 }); } else { setTimeout(start, 5000); } },

pause() { if (this.timer) { clearInterval(this.timer); this.timer = null; } },

resume() { this.deferLoop(); },

resetLoop() { if (this.timer) { clearInterval(this.timer); this.timer = null; } this.deferLoop(); },

setSlide(num) { this.activeSlide = num; this.resetLoop(); },

nextSlide() { if (!this.banners.length) return;

this.activeSlide = this.activeSlide === this.banners.length

? 1

: this.activeSlide + 1;

this.resetLoop(); },

prevSlide() { if (!this.banners.length) return;

this.activeSlide = this.activeSlide === 1 ? this.banners.length : this.activeSlide - 1;

this.resetLoop(); },

addBanner(banner) { const alreadyExists = this.banners.some( b => b.banner_type === banner.banner_type, );

if (!alreadyExists) { this.banners.unshift(banner); } },

deferBrowserAlertBanner() { const run = () => this.showBrowserAlertBanner();

if ("requestIdleCallback" in window) { requestIdleCallback(run, { timeout: 8000 }); } else { setTimeout(run, 6000); } },

showBrowserAlertBanner() { const maxRetries = 10; const retryInterval = 300;

const browserAlertBanner = { icon: "speakerphone", banner_text: Authorise this browser to receive instant browser alerts., banner_cta_event: "onesignal_subscribe", banner_type: "browser_alert", };

return new Promise((resolve) => { let retries = 0;

const interval = setInterval(() => { if (typeof window.checkIfHasOnesignalPlayerId === "function") { clearInterval(interval);

if (!hasCheckedBrowserAlert) { hasCheckedBrowserAlert = true;

window.checkIfHasOnesignalPlayerId((result) => { if (result) { this.addBanner(browserAlertBanner); resolve(browserAlertBanner); } else { resolve(false); }

});

} else { resolve(false); } } else { retries++;

if (retries >= maxRetries) { clearInterval(interval); resolve(false); } } }, retryInterval);

});

},

hideBrowserAlertBanner() { this.banners = this.banners.filter( banner => banner.banner_type !== "browser_alert", ); this.activeSlide = 1; }, }; } Find a Job + + + + Search const TopSearch = { handleSubmit: function (event) { event.preventDefault(); event.stopPropagation();

const form = event.target;

const getValue = (name) => { if (form[name]) { if (form[name].type) { if (["select-one", "text", "hidden"].indexOf(form[name].type) > -1) { return form[name].value; } if (["checkbox", "radio"].indexOf(form[name].type) > -1 && form[name].checked) { return form[name].value; } } else if (form[name].length) { return form[name].value; } }

return ""; };

const experienceLevel = getValue("experience[]") || getValue("experience"); const jobFunction = getValue("job_function[]") || getValue("job_function"); const industry = getValue("industry[]") || getValue("industry"); const location = getValue("location[]") || getValue("location"); const workType = getValue("work_type"); const term = getValue("q"); const sortBy = getValue("sort_by");

// If the logged in user is authenticated // Append authenticated value to make url unique/different to logged out url // same action is happening in SearchFilterViewComposer // line 589 in the multiSearchFilterHref function const authenticated = document.getElementById("authenticated").value; let toUrl = ""; if (industry.trim() && jobFunction.trim()) { const segments = [jobFunction, location, workType].filter((x) => x); toUrl = ${segments.join("/")}?industry=${industry}; } else { const segments = [jobFunction, industry, location, workType].filter((x) => x); toUrl = segments.join("/"); }

if (experienceLevel) { toUrl += ${toUrl.indexOf("?") === -1 ? "?" : "&"}experience=${experienceLevel}; }

if (term.trim()) { toUrl += ${toUrl.indexOf("?") === -1 ? "?" : "&"}q=${encodeURI(term.replace(" ", "+"))}; }

if (sortBy.trim()) { toUrl += ${toUrl.indexOf("?") === -1 ? "?" : "&"}sort=${sortBy}; }

if (authenticated === "true") { toUrl += ${toUrl.indexOf("?") === -1 ? "?" : "&"}authenticated=${Date.now()}; }

const wholeUrl = `${form.getAttribute("action")}/${toUrl.to

---

**

[Click the Apply button below to see the contact details]

Ready to apply?

Safety Reminder

Never pay money to get an interview. Taf4All will never contact you to request application fees.

You might also be interested in

NO

Senior Tax Associate

Non preciséPost A Job Post A Job Accounting, Auditing & Fina

Senior Tax Associate chez Non precisé à Post A Job Post A Job Accounting, Auditing & Fina.

Stage
2 months ago
NO

Senior Associate – Audit

Non preciséPost A Job Post A Job Accounting, Auditing & Fina

Senior Associate – Audit chez Non precisé à Post A Job Post A Job Accounting, Auditing & Fina.

Stage
2 months ago
NO

Sales Associate

Non preciséPost A Job Post A Job Sales Manufacturing & Wareh

window.notificationMessages = []; Help us serve you better & stand to win a $200 Samsung phone & data bundles! C

CDI
4 days ago