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.