31. august, 2023
3
minutter lesetid

View Ledger gledet 300 ansatte med en hyggelig overraskelse på noen få minutter

Tonje Magnussøn
HR-direktør i View Ledger
Det er mye som skjer i arbeidshverdagen, så det var veldig fint å kunne gi såpass enkelt. Glede krever minimalt med administrasjon.

View Ledger, med over 300 ansatte fordelt på 9 lokasjoner i Norge, hjelper kundene sine med å få kontroll på økonomien og oppnå en smidigere arbeidshverdag.

En av deres kjerneverdier er Care. De bryr seg om hverandre, kundene sine, selskapet og samfunnet som helhet. For å leve opp til verdien sørger de jevnlig for å anerkjenne de ansatte.

Tonje Magnussen er HR-direktør i selskapet, og forteller litt om deres tidligere erfaringer.

“Tidligere har vi brukt flere gaveløsninger som har medført mye administrasjon og høye fraktkostnader. I tillegg har det vært en utfordring å få varene levert til alle ansatte. Med kontorer på 9 ulike steder i Norge krever det naturlig nok en god del logistikkarbeid.”

Null styr med logistikk og frakt

Tidligere i år ønsket ledelsen i View Ledger Norge å sende en hyggelig gavehilsen til alle ansatte for å vise at de setter pris på innsatsen som legges ned. Med en travel arbeidshverdag ønsket de minst mulig logistikk forbundet med gaveutsendelsen, og så etter en løsning som fungerer godt uavhengig av geografi. Da dukket Glede opp som det beste alternativet.

Tonje fikk lastet opp en Excel-fil med 300 ansatte, og var klar til å sende gavene i løpet av kort tid.

Tonje trekker spesielt frem fire ting hun liker ved Glede:

For godt til å være sant

I etterkant har Tonje fått flere hyggelige tilbakemeldinger på gavene hun sendte ut, både fra ledere og ansatte.

“En av våre ansatte sa faktisk at det var for godt til å være sant!”, sier hun med et smil om munnen.

Tidligere har hun erfart at de ansatte setter pris på muligheten til å velge selv. “Vi har eksperimentert med flere forskjellige julegaver. De gangene vi har lykkes best er når vi har latt ansatte velge selv. Folk er jo forskjellige, og har ulike preferanser.”

Tonje konkluderer med at det har vært en fryd å bruke Glede.

Jeg vil definitivt anbefale andre selskaper å benytte seg av Glede. Det krever lite administrasjon, og du kan enkelt anerkjenne ansatte med noe de faktisk ønsker seg.

Ønsker du å prøve Glede? Klikk her for å se hvor enkelt det er!

Kontakt oss

Tusen takk! Vi har mottatt din henvendelse, og vil svare deg i løpet av én arbeidsdag 😊
Uups! Noe gikk galt, og meldingen ble ikke sendt. Prøv igjen, eller ta kontakt med oss på e-post: support@glede.app

Kom i gang med Glede

Gi gavekortet som kan brukes overalt — i butikk og på nett!

(function () { const DEBUG = false; const log = (...a) => DEBUG && console.log('[weglot-ui]', ...a); const normalize = (code) => { if (!code) return ''; code = String(code).toLowerCase(); if (code.includes('-')) code = code.split('-')[0]; // en-US -> en if (code === 'nb') code = 'no'; // Bokmål -> 'no' if (code === 'se') code = 'sv'; // common slip return code; }; // We cache a template per language so we can rebuild the list let TEMPLATES = { inner: {}, outer: {} }; function cacheTemplates(wrapper) { // Grab any [lang] blocks (from toggle OR list) and store inner/outer wrapper.querySelectorAll('[lang]').forEach(el => { const lang = normalize(el.getAttribute('lang')); if (!lang) return; if (!TEMPLATES.inner[lang]) TEMPLATES.inner[lang] = el.innerHTML; if (!TEMPLATES.outer[lang]) TEMPLATES.outer[lang] = el.outerHTML; }); log('cached templates', TEMPLATES); } function updateSwitcher(currentLang) { currentLang = normalize(currentLang); const wrappers = document.querySelectorAll('.wg-element-wrapper.sw6'); if (wrappers.length === 0) { log('no wrappers'); return; } else { wrappers.forEach(wrapper => { const toggle = wrapper.querySelector('.wg-dropdown-toggle'); const list = wrapper.querySelector('.wg-dd-1-list'); if (!toggle || !list) { log('missing toggle/list'); return; } // Ensure templates are cached (first run on this page load) if (!TEMPLATES.inner.no || !TEMPLATES.inner.sv || !TEMPLATES.inner.en) { cacheTemplates(wrapper); } // If any template still missing, bail (structure not as expected) if (!TEMPLATES.inner.no || !TEMPLATES.inner.sv || !TEMPLATES.inner.en) { log('incomplete templates'); return; } // 1) Set TOGGLE visual (attribute + optional state class + content) toggle.setAttribute('lang', currentLang); toggle.classList.remove('is-no','is-sv','is-en'); toggle.classList.add(`is-${currentLang}`); toggle.innerHTML = TEMPLATES.inner[currentLang]; // 2) Rebuild LIST to contain ONLY the two other languages (fresh each time) const ALL = ['no','sv','en']; const others = ALL.filter(l => l !== currentLang); // Build a clean list using the captured OUTER html so structure/classes match const htmlA = TEMPLATES.outer[others[0]]; const htmlB = TEMPLATES.outer[others[1]]; // Clear and insert exactly two items list.innerHTML = ''; // Insert via range to keep outerHTML intact const r1 = document.createRange(); r1.selectNode(list); list.appendChild(r1.createContextualFragment(htmlA)); const r2 = document.createRange(); r2.selectNode(list); list.appendChild(r2.createContextualFragment(htmlB)); // Optional: normalize classes on list items too list.querySelectorAll('[lang]').forEach(el => { const l = normalize(el.getAttribute('lang')); el.classList.remove('is-no','is-sv','is-en'); el.classList.add(`is-${l}`); }); log('updated → current:', currentLang, 'others:', others); } ) } } // Event delegation (survives DOM swaps) document.addEventListener('click', function (e) { const link = e.target.closest('.wg-element-wrapper.sw6 [lang]'); if (!link) return; e.preventDefault(); const lang = normalize(link.getAttribute('lang')); // Trigger Weglot switch (subdomain setups will reload; path setups will not) document.cookie = "glede_locale=" + lang + "; path=/; domain=.glede.app; max-age=31536000"; Weglot.switchTo(lang); // Do NOT call update here for subdomain setups; page will reload anyway. }); // Run AFTER Weglot has rendered (important on subdomain reload) function runAfterWeglotReady() { const run = () => { const lang = normalize(Weglot.getCurrentLang()); // Wait one frame to let Weglot paint its switcher nodes requestAnimationFrame(() => updateSwitcher(lang)); }; Weglot.on('initialized', run); // If already initialized (script included late), run immediately if (Weglot.getCurrentLang && Weglot.getCurrentLang()) run(); // For path-based projects (no reload), update visuals after change Weglot.on('languageChanged', (newLang) => { updateSwitcher(newLang) }); } // Boot when DOM is ready if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', runAfterWeglotReady); } else { runAfterWeglotReady(); } })();