PageSourceSearch

https://www.spotpod.com/_nuxt/DZzRe60g.js

js spotpod.com collected 2026-10-05 17:45:45 UTC 21,538 bytes, 467 lines download raw bytes

1import { a as useNuxtApp } from "./DDe9mtQU.js";
2import { D as createVNode, E as createTextVNode, Ht as watch, On as unref, _ as createBaseVNode, b as createElementBlock, bt as renderList, ct as onMounted, g as computed, k as defineComponent, mt as openBlock, o as Fragment, qt as withCtx, tr as toDisplayString, v as createBlock, vn as ref, y as createCommentVNode } from "./DDznFIea.js";
3import { i as createError, o as showError, p as useRoute } from "./eRVdz19a.js";
4import { r as useSeoMeta } from "./CWcoTTHu.js";
5import { t as NuxtLink } from "./DPD3IMgH.js";
6import { a as VListItem, s as VDivider, t as VList } from "./2WDSAV7m.js";
7import { t as VIcon } from "./DiJ5bSEx.js";
8import { t as VChip } from "./DrV-DS3q.js";
9import { n as VCol, t as VRow } from "./BwSgOMna.js";
10import { t as VSkeletonLoader } from "./Dm5e02Uf.js";
11import { E as useCandidateStore, O as JobDiscoveryCreator, R as storeToRefs, V as useAnalytics, k as JobEvaluationRating, l as VSheet, n as _plugin_vue_export_helper_default, o as VCard, p as VBtn } from "#entry";
12import { t as definePageMeta } from "./D-ZGJ1uu.js";
13import { n as Feedback_default, r as MatchRating_default, t as ActionMenu_default } from "./D65r2UBK.js";
14//#endregion
15//#region components/candidate/suggestion/EvaluationRatingIcon.vue
16var EvaluationRatingIcon_default = Object.assign(/* @__PURE__ */ defineComponent({
17	__name: "EvaluationRatingIcon",
18	props: { rating: {} },
19	setup(__props) {
20		const props = __props;
21		const color = computed(() => {
22			switch (props.rating) {
23				case JobEvaluationRating.High:
24				case "high": return "success";
25				case JobEvaluationRating.Medium:
26				case "medium": return "warning";
27				case JobEvaluationRating.Low:
28				case "low": return "error";
29				default: return "grey";
30			}
31		});
32		const icon = computed(() => {
33			switch (props.rating) {
34				case JobEvaluationRating.High:
35				case "high": return "fal fa-arrow-up-right";
36				case JobEvaluationRating.Medium:
37				case "medium": return "fal fa-arrow-right";
38				case JobEvaluationRating.Low:
39				case "low": return "fal fa-arrow-down-right";
40				default: return "fal fa-minus";
41			}
42		});
43		return (_ctx, _cache) => {
44			return openBlock(), createBlock(VIcon, {
45				color: unref(color),
46				icon: unref(icon),
47				size: 24
48			}, null, 8, ["color", "icon"]);
49		};
50	}
51}), { __name: "CandidateSuggestionEvaluationRatingIcon" });
52//#endregion
53//#region pages/candidate/jobs/view/[slug].vue?vue&type=script&setup=true&lang.ts
54var _hoisted_1 = { class: "job-suggestion-view" };
55var _hoisted_2 = { class: "mb-5" };
56var _hoisted_3 = { class: "mb-5" };
57var _hoisted_4 = { class: "mb-5" };
58var _hoisted_5 = { class: "text-center mb-5 d-flex flex-column align-center" };
59var _hoisted_6 = { class: "text-headline-medium mb-3" };
60var _hoisted_7 = { class: "d-flex align-center mb-5" };
61var _hoisted_8 = {
62	key: 1,
63	class: "mb-5"
64};
65var _hoisted_9 = {
66	key: 2,
67	class: "mb-5"
68};
69var _hoisted_10 = { class: "mb-0" };
70var _hoisted_11 = ["innerHTML"];
71var _hoisted_12 = {
72	key: 3,
73	class: "mb-5"
74};
75var _hoisted_13 = { class: "mb-0" };
76var _hoisted_14 = ["innerHTML"];
77var _hoisted_15 = { class: "d-flex justify-center mb-5" };
78var _hoisted_16 = ["innerHTML"];
79var _hoisted_17 = { class: "text-small" };
80var _hoisted_18 = { key: 0 };
81var _hoisted_19 = { class: "text-small" };
82var _hoisted_20 = { class: "text-small" };
83var _hoisted_21 = { class: "text-small" };
84var _hoisted_22 = { class: "text-small" };
85var _hoisted_23 = ["innerHTML"];
86//#endregion
87//#region pages/candidate/jobs/view/[slug].vue
88var _slug__default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
89	__name: "[slug]",
90	setup(__props) {
91		const { $formatNumber, $stripURLProtocol, $eventbus } = useNuxtApp();
92		const { trackEvent } = useAnalytics();
93		const route = useRoute();
94		const candidateStore = useCandidateStore();
95		const { pending, candidateId } = storeToRefs(candidateStore);
96		const suggestion = ref(null);
97		useSeoMeta({
98			title: () => suggestion.value ? `${suggestion.value.attributes.title} bei ${suggestion.value.attributes.organization || "Spotpod"}` : "Job-Vorschlag Details – Spotpod",
99			description: () => suggestion.value?.attributes.spotpod_summary || "Details zu deinem Job-Vorschlag bei Spotpod."
100		});
101		definePageMeta({
102			middleware: ["auth-required", "auth-role-required"],
103			allowedRoles: ["candidate"],
104			footerHidden: true,
105			backAction: (router) => router.go(-1)
106		});
107		const fetchSuggestion = async () => {
108			if (candidateId.value && !suggestion.value) {
109				const slug = route.params.slug;
110				const data = await candidateStore.fetchJobSuggestion(slug);
111				if (data) {
112					const loadedSuggestion = data;
113					suggestion.value = loadedSuggestion;
114					if (!loadedSuggestion.attributes.viewed_at) {
115						candidateStore.markJobSuggestionSeen(loadedSuggestion.id).then((updatedSuggestion) => {
116							if (updatedSuggestion) trackEvent("jobsuggestion_new_viewed");
117						});
118						return;
119					}
120					trackEvent("jobsuggestion_viewed");
121				} else showError(createError({
122					status: 404,
123					statusText: "Job-Vorschlag konnte nicht gefunden werden.",
124					fatal: true
125				}));
126			}
127		};
128		onMounted(fetchSuggestion);
129		watch(candidateId, (newId) => {
130			if (newId) fetchSuggestion();
131		});
132		return (_ctx, _cache) => {
133			const _component_CandidateSuggestionFeedback = Feedback_default;
134			const _component_NuxtLink = NuxtLink;
135			const _component_CandidateSuggestionMatchRating = MatchRating_default;
136			const _component_CandidateSuggestionEvaluationRatingIcon = EvaluationRatingIcon_default;
137			return openBlock(), createElementBlock("div", _hoisted_1, [unref(pending).fetchJobSuggestion ? (openBlock(), createBlock(VSheet, {
138				key: 0,
139				class: "pa-4 pa-md-5 mb-5"
140			}, {
141				default: withCtx(() => [createVNode(VRow, null, {
142					default: withCtx(() => [createVNode(VCol, {
143						cols: "12",
144						sm: "8"
145					}, {
146						default: withCtx(() => [
147							createVNode(VSkeletonLoader, {
148								type: "heading",
149								class: "mb-4"
150							}),
151							createVNode(VSkeletonLoader, {
152								type: "subtitle",
153								class: "mb-6"
154							}),
155							createBaseVNode("div", _hoisted_2, [createVNode(VSkeletonLoader, {
156								type: "subtitle",
157								class: "mb-2"
158							}), createVNode(VSkeletonLoader, { type: "paragraph" })]),
159							createBaseVNode("div", _hoisted_3, [createVNode(VSkeletonLoader, {
160								type: "subtitle",
161								class: "mb-2"
162							}), createVNode(VSkeletonLoader, { type: "paragraph" })]),
163							createBaseVNode("div", _hoisted_4, [createVNode(VSkeletonLoader, {
164								type: "subtitle",
165								class: "mb-2"
166							}), (openBlock(), createElementBlock(Fragment, null, renderList(3, (i) => {
167								return createVNode(VSkeletonLoader, {
168									type: "paragraph",
169									key: i
170								});
171							}), 64))])
172						]),
173						_: 1
174					}), createVNode(VCol, {
175						cols: "12",
176						sm: "4"
177					}, {
178						default: withCtx(() => [createVNode(VCard, {
179							variant: "outlined",
180							class: "pa-4 mb-5"
181						}, {
182							default: withCtx(() => [
183								createBaseVNode("div", _hoisted_5, [createVNode(VSkeletonLoader, {
184									type: "avatar",
185									size: "80",
186									class: "mb-2"
187								}), createVNode(VSkeletonLoader, {
188									type: "text",
189									width: "100"
190								})]),
191								createVNode(VList, { density: "compact" }, {
192									default: withCtx(() => [(openBlock(), createElementBlock(Fragment, null, renderList(3, (i) => {
193										return createVNode(VListItem, { key: i }, {
194											default: withCtx(() => [createVNode(VSkeletonLoader, { type: "text" })]),
195											_: 1
196										});
197									}), 64))]),
198									_: 1
199								}),
200								createVNode(VDivider, { class: "my-4" }),
201								createVNode(VSkeletonLoader, {
202									type: "button",
203									class: "mb-3"
204								}),
205								createVNode(VSkeletonLoader, { type: "button" })
206							]),
207							_: 1
208						})]),
209						_: 1
210					})]),
211					_: 1
212				})]),
213				_: 1
214			})) : unref(suggestion) ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
215				createVNode(VSheet, { class: "pa-3 pa-md-5 mb-5" }, {
216					default: withCtx(() => [createVNode(VRow, null, {
217						default: withCtx(() => [createVNode(VCol, {
218							cols: "12",
219							md: "7"
220						}, {
221							default: withCtx(() => [
222								createVNode(_component_CandidateSuggestionFeedback, { suggestion: unref(suggestion) }, null, 8, ["suggestion"]),
223								createVNode(ActionMenu_default, { suggestion: unref(suggestion) }, null, 8, ["suggestion"]),
224								unref(suggestion).attributes.creator === unref(JobDiscoveryCreator).User ? (openBlock(), createBlock(VChip, {
225									key: 0,
226									size: "small",
227									color: "primary",
228									variant: "tonal",
229									"prepend-icon": "fal fa-user",
230									text: "Von dir eingereicht"
231								})) : createCommentVNode("", true),
232								createBaseVNode("h1", _hoisted_6, toDisplayString(unref(suggestion).attributes.title), 1),
233								createBaseVNode("div", _hoisted_7, [createVNode(_component_NuxtLink, {
234									href: unref(suggestion).attributes.organization_website,
235									target: "_blank",
236									class: "font-weight-normal"
237								}, {
238									default: withCtx(() => [createVNode(VIcon, {
239										class: "me-3 mb-1",
240										size: "16"
241									}, {
242										default: withCtx(() => [..._cache[0] || (_cache[0] = [createTextVNode("fal fa-external-link", -1)])]),
243										_: 1
244									}), createTextVNode(toDisplayString(unref(suggestion).attributes.organization ?? unref($stripURLProtocol)(unref(suggestion).attributes.organization_website)), 1)]),
245									_: 1
246								}, 8, ["href"])]),
247								unref(suggestion).attributes.spotpod_summary ? (openBlock(), createElementBlock("div", _hoisted_8, [createBaseVNode("p", null, toDisplayString(unref(suggestion).attributes.spotpod_summary), 1)])) : createCommentVNode("", true),
248								unref(suggestion).attributes.description ? (openBlock(), createElementBlock("div", _hoisted_9, [createBaseVNode("div", _hoisted_10, [_cache[1] || (_cache[1] = createBaseVNode("small", null, "Jobbeschreibung", -1)), createBaseVNode("div", { innerHTML: unref(suggestion).attributes.description }, null, 8, _hoisted_11)])])) : createCommentVNode("", true),
249								unref(suggestion).attributes.spotpod_employer_description ? (openBlock(), createElementBlock("div", _hoisted_12, [createBaseVNode("div", _hoisted_13, [createBaseVNode("small", null, "Über " + toDisplayString(unref(suggestion).attributes.organization), 1), createBaseVNode("div", { innerHTML: unref(suggestion).attributes.spotpod_employer_description }, null, 8, _hoisted_14)])])) : createCommentVNode("", true)
250							]),
251							_: 1
252						}), createVNode(VCol, {
253							cols: "12",
254							md: "5"
255						}, {
256							default: withCtx(() => [createVNode(VCard, {
257								class: "pa-4",
258								variant: "outlined"
259							}, {
260								default: withCtx(() => [
261									createBaseVNode("div", _hoisted_15, [createVNode(_component_CandidateSuggestionMatchRating, {
262										rating: unref(suggestion).attributes.match_rating,
263										size: 80,
264										width: "8",
265										"text-class": "text-h5 font-weight-black text-black"
266									}, null, 8, ["rating"])]),
267									createBaseVNode("div", {
268										innerHTML: unref(suggestion).attributes.spotpod_recommendation,
269										class: "mb-3"
270									}, null, 8, _hoisted_16),
271									createVNode(VList, {
272										density: "compact",
273										"bg-color": "white",
274										class: "job-suggestion-meta"
275									}, {
276										default: withCtx(() => [
277											unref(suggestion).attributes.workplace_city ? (openBlock(), createBlock(VListItem, {
278												key: 0,
279												class: "align-start pt-0 ps-0"
280											}, {
281												prepend: withCtx(() => [createVNode(VIcon, {
282													size: "18",
283													icon: "fal fa-map-marker-alt",
284													class: "opacity-100 ms-1 mt-1"
285												})]),
286												default: withCtx(() => [createBaseVNode("div", _hoisted_17, [createTextVNode(toDisplayString(unref(suggestion).attributes.workplace_city) + " ", 1), unref(suggestion).attributes.workplace_country ? (openBlock(), createElementBlock("span", _hoisted_18, " (" + toDisplayString(unref(suggestion).attributes.workplace_country) + ") ", 1)) : createCommentVNode("", true)])]),
287												_: 1
288											})) : createCommentVNode("", true),
289											unref(suggestion).attributes.salary ? (openBlock(), createBlock(VListItem, {
290												key: 1,
291												class: "align-start pt-0 ps-0 mt-1"
292											}, {
293												prepend: withCtx(() => [createVNode(VIcon, {
294													size: "18",
295													icon: "fal fa-money-bill-wave",
296													class: "opacity-100 ms-1 mt-1"
297												})]),
298												default: withCtx(() => [createBaseVNode("div", _hoisted_19, [typeof unref(suggestion).attributes.salary === "object" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createTextVNode(toDisplayString(unref($formatNumber)(unref(suggestion).attributes.salary?.min)) + " - " + toDisplayString(unref($formatNumber)(unref(suggestion).attributes.salary?.max)) + " " + toDisplayString(unref(suggestion).attributes.salary?.currency) + " / " + toDisplayString(unref(suggestion).attributes.salary?.unit_per), 1)], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createTextVNode(toDisplayString(unref(suggestion).attributes.salary), 1)], 64))])]),
299												_: 1
300											})) : createCommentVNode("", true),
301											unref(suggestion).attributes.remote_options ? (openBlock(), createBlock(VListItem, {
302												key: 2,
303												class: "align-start pt-0 ps-0 mt-1"
304											}, {
305												prepend: withCtx(() => [createVNode(VIcon, {
306													size: "18",
307													icon: "fal fa-laptop",
308													class: "opacity-100 ms-1 mt-1"
309												})]),
310												default: withCtx(() => [createBaseVNode("div", _hoisted_20, toDisplayString(unref(suggestion).attributes.remote_options), 1)]),
311												_: 1
312											})) : createCommentVNode("", true),
313											unref(suggestion).attributes.published_at ? (openBlock(), createBlock(VListItem, {
314												key: 3,
315												class: "align-start pt-0 ps-0 mt-1"
316											}, {
317												prepend: withCtx(() => [createVNode(VIcon, {
318													size: "18",
319													icon: "fal fa-calendar-day",
320													class: "opacity-100 ms-1 mt-1"
321												})]),
322												default: withCtx(() => [createBaseVNode("div", _hoisted_21, " Veröffentlicht am " + toDisplayString(new Date(unref(suggestion).attributes.published_at).toLocaleDateString("de-DE")), 1)]),
323												_: 1
324											})) : createCommentVNode("", true),
325											unref(suggestion).attributes.created_at ? (openBlock(), createBlock(VListItem, {
326												key: 4,
327												class: "align-start pt-0 ps-0 mt-1"
328											}, {
329												prepend: withCtx(() => [createVNode(VIcon, {
330													size: "18",
331													icon: "fal fa-clock",
332													class: "opacity-100 ms-1 mt-1"
333												})]),
334												default: withCtx(() => [createBaseVNode("div", _hoisted_22, " Vorgeschlagen am " + toDisplayString(new Date(unref(suggestion).attributes.created_at).toLocaleDateString("de-DE")), 1)]),
335												_: 1
336											})) : createCommentVNode("", true),
337											unref(suggestion).attributes.source_url ? (openBlock(), createBlock(VListItem, {
338												key: 5,
339												class: "align-start pt-0 ps-0 mt-1",
340												href: unref(suggestion).attributes.source_url,
341												target: "_blank"
342											}, {
343												prepend: withCtx(() => [createVNode(VIcon, {
344													size: "18",
345													icon: "fal fa-link",
346													class: "opacity-100 ms-1 mt-1"
347												})]),
348												default: withCtx(() => [_cache[2] || (_cache[2] = createBaseVNode("div", { class: "text-small font-weight-normal" }, "Original-Anzeige", -1))]),
349												_: 1
350											}, 8, ["href"])) : createCommentVNode("", true)
351										]),
352										_: 1
353									}),
354									unref(suggestion).attributes.application_url ? (openBlock(), createBlock(VBtn, {
355										key: 0,
356										block: "",
357										color: "primary",
358										href: unref(suggestion).attributes.application_url,
359										target: "_blank",
360										class: "mb-1 mt-3",
361										"append-icon": "fal fa-arrow-up-right"
362									}, {
363										default: withCtx(() => [..._cache[3] || (_cache[3] = [createTextVNode(" Bewerbung ", -1)])]),
364										_: 1
365									}, 8, ["href"])) : createCommentVNode("", true)
366								]),
367								_: 1
368							})]),
369							_: 1
370						})]),
371						_: 1
372					})]),
373					_: 1
374				}),
375				unref(suggestion).attributes?.spotpod_evaluation_role ? (openBlock(), createBlock(VSheet, {
376					key: 0,
377					class: "pa-5 mb-5"
378				}, {
379					default: withCtx(() => [createVNode(VRow, null, {
380						default: withCtx(() => [createVNode(VCol, { cols: "auto" }, {
381							default: withCtx(() => [createVNode(_component_CandidateSuggestionEvaluationRatingIcon, { rating: unref(suggestion).attributes?.spotpod_evaluation_role_rating }, null, 8, ["rating"])]),
382							_: 1
383						}), createVNode(VCol, null, {
384							default: withCtx(() => [_cache[4] || (_cache[4] = createBaseVNode("h2", { class: "text-headline-small my-0" }, "Rolle und Aufgaben", -1)), createTextVNode(" " + toDisplayString(unref(suggestion).attributes?.spotpod_evaluation_role), 1)]),
385							_: 1
386						})]),
387						_: 1
388					})]),
389					_: 1
390				})) : createCommentVNode("", true),
391				unref(suggestion).attributes?.spotpod_evaluation_skills ? (openBlock(), createBlock(VSheet, {
392					key: 1,
393					class: "pa-5 mb-5"
394				}, {
395					default: withCtx(() => [createVNode(VRow, null, {
396						default: withCtx(() => [createVNode(VCol, { cols: "auto" }, {
397							default: withCtx(() => [createVNode(_component_CandidateSuggestionEvaluationRatingIcon, { rating: unref(suggestion).attributes?.spotpod_evaluation_skills_rating }, null, 8, ["rating"])]),
398							_: 1
399						}), createVNode(VCol, null, {
400							default: withCtx(() => [_cache[5] || (_cache[5] = createBaseVNode("h2", { class: "text-headline-small my-0" }, "Fähigkeiten und Erfahrung", -1)), createTextVNode(" " + toDisplayString(unref(suggestion).attributes?.spotpod_evaluation_skills), 1)]),
401							_: 1
402						})]),
403						_: 1
404					})]),
405					_: 1
406				})) : createCommentVNode("", true),
407				unref(suggestion).attributes?.spotpod_evaluation_culture ? (openBlock(), createBlock(VSheet, {
408					key: 2,
409					class: "pa-5 mb-5"
410				}, {
411					default: withCtx(() => [createVNode(VRow, null, {
412						default: withCtx(() =>
412 [createVNode(VCol, { cols: "auto" }, {
413							default: withCtx(() => [createVNode(_component_CandidateSuggestionEvaluationRatingIcon, { rating: unref(suggestion).attributes?.spotpod_evaluation_culture_rating }, null, 8, ["rating"])]),
414							_: 1
415						}), createVNode(VCol, null, {
416							default: withCtx(() => [_cache[6] || (_cache[6] = createBaseVNode("h2", { class: "text-headline-small my-0" }, "Unternehmenskultur", -1)), createTextVNode(" " + toDisplayString(unref(suggestion).attributes?.spotpod_evaluation_culture), 1)]),
417							_: 1
418						})]),
419						_: 1
420					})]),
421					_: 1
422				})) : createCommentVNode("", true),
423				unref(suggestion).attributes?.spotpod_evaluation_compensation ? (openBlock(), createBlock(VSheet, {
424					key: 3,
425					class: "pa-5 mb-5"
426				}, {
427					default: withCtx(() => [createVNode(VRow, null, {
428						default: withCtx(() => [createVNode(VCol, { cols: "auto" }, {
429							default: withCtx(() => [createVNode(_component_CandidateSuggestionEvaluationRatingIcon, { rating: unref(suggestion).attributes?.spotpod_evaluation_compensation_rating }, null, 8, ["rating"])]),
430							_: 1
431						}), createVNode(VCol, null, {
432							default: withCtx(() => [_cache[7] || (_cache[7] = createBaseVNode("h2", { class: "text-headline-small my-0" }, "Vergütung und Benefits", -1)), createTextVNode(" " + toDisplayString(unref(suggestion).attributes?.spotpod_evaluation_compensation), 1)]),
433							_: 1
434						})]),
435						_: 1
436					})]),
437					_: 1
438				})) : createCommentVNode("", true),
439				unref(suggestion).attributes?.spotpod_evaluation_location ? (openBlock(), createBlock(VSheet, {
440					key: 4,
441					class: "pa-5 mb-5"
442				}, {
443					default: withCtx(() => [createVNode(VRow, null, {
444						default: withCtx(() => [createVNode(VCol, { cols: "auto" }, {
445							default: withCtx(() => [createVNode(_component_CandidateSuggestionEvaluationRatingIcon, { rating: unref(suggestion).attributes?.spotpod_evaluation_location_rating }, null, 8, ["rating"])]),
446							_: 1
447						}), createVNode(VCol, null, {
448							default: withCtx(() => [_cache[8] || (_cache[8] = createBaseVNode("h2", { class: "text-headline-small my-0" }, "Standort und Flexibilität", -1)), createTextVNode(" " + toDisplayString(unref(suggestion).attributes?.spotpod_evaluation_location), 1)]),
449							_: 1
450						})]),
451						_: 1
452					})]),
453					_: 1
454				})) : createCommentVNode("", true),
455				unref(suggestion).attributes?.jobposting_original ? (openBlock(), createBlock(VSheet, {
456					key: 5,
457					class: "pa-5 mb-5 conversation-container"
458				}, {
459					default: withCtx(() => [_cache[9] || (_cache[9] = createBaseVNode("p", { class: "text-small" }, "Veröffentlichtes Stellenangebot", -1)), createBaseVNode("div", { innerHTML: unref(suggestion).attributes.jobposting_original }, null, 8, _hoisted_23)]),
460					_: 1
461				})) : createCommentVNode("", true)
462			], 64)) : createCommentVNode("", true)]);
463		};
464	}
465}), [["__scopeId", "data-v-46a03bcd"]]);
466//#endregion
467export { _slug__default as default };

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.