From 97ca464aefc51102a5d68a97b8475cbccb5b3fdc Mon Sep 17 00:00:00 2001 From: Erol Date: Fri, 10 Apr 2026 09:52:34 +0200 Subject: [PATCH] =?UTF-8?q?F=C3=B8r=20Codex=20ChatGPT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/Medlemsskap.txt | 306 +- backend/__pycache__/main.cpython-311.pyc | Bin 43346 -> 44533 bytes backend/import_urls.py | 2 + backend/main.py | 33 +- eksport_script.py | 4 +- fil-tre-3.txt | 796 +++++ fil-tre.txt | 29 +- frontend/src/app/admin/page.tsx | 71 +- .../rediger/[slug]/EditFacilityClient.tsx | 67 +- kode_eksport_1/backend_import_urls_py.txt | 101 + kode_eksport_1/backend_main_py.txt | 164 +- kode_eksport_1/backend_scrape_greenfee_py.txt | 173 + .../backend_scrape_membership_py.txt | 151 +- kode_eksport_1/backend_scrape_vtg_py.txt | 161 + ...ontend_src_app_admin_greenfee_page_tsx.txt | 203 ++ .../frontend_src_app_admin_page_tsx.txt | 494 +-- ..._rediger_[slug]_EditFacilityClient_tsx.txt | 181 +- .../frontend_src_app_admin_vtg_page_tsx.txt | 208 ++ ...olfbaner_[slug]_FacilityDetailView_tsx.txt | 234 +- kode_eksport_1/test_tjome_py.txt | 44 - kode_eksport_3/backend_create_admin_py.txt | 64 + kode_eksport_3/backend_import_gallery_py.txt | 111 + .../backend_import_nye_felter_py.txt | 150 + kode_eksport_3/backend_import_urls_py.txt | 103 + kode_eksport_3/backend_import_wp_py.txt | 157 + kode_eksport_3/backend_main_py.txt | 663 ++++ .../backend_scrape_golfamore1_3_py.txt | 124 + kode_eksport_3/backend_scrape_greenfee_py.txt | 173 + .../backend_scrape_membership_py.txt | 168 + kode_eksport_3/backend_scrape_nsg_3_py.txt | 96 + kode_eksport_3/backend_scrape_status_py.txt | 332 ++ kode_eksport_3/backend_scrape_vtg_py.txt | 161 + kode_eksport_3/backend_sync_greenfee_py.txt | 79 + kode_eksport_3/backend_test_gemini_py.txt | 116 + kode_eksport_3/backend_test_login_py.txt | 47 + kode_eksport_3/backend_update_admin_py.txt | 85 + kode_eksport_3/eksport_script_py.txt | 72 + kode_eksport_3/frontend_next-env_d_ts.txt | 6 + kode_eksport_3/frontend_next_config_ts.txt | 7 + .../frontend_src_app_FacilitySearch_tsx.txt | 217 ++ .../frontend_src_app_HeroSlider_tsx.txt | 130 + ...ontend_src_app_admin_greenfee_page_tsx.txt | 203 ++ .../frontend_src_app_admin_login_page_tsx.txt | 103 + ...tend_src_app_admin_medlemskap_page_tsx.txt | 179 + .../frontend_src_app_admin_page_tsx.txt | 468 +++ ..._rediger_[slug]_EditFacilityClient_tsx.txt | 637 ++++ ..._src_app_admin_rediger_[slug]_page_tsx.txt | 20 + .../frontend_src_app_admin_vtg_page_tsx.txt | 208 ++ ...app_golfbaner_[slug]_CourseDisplay_tsx.txt | 206 ++ ...olfbaner_[slug]_FacilityDetailView_tsx.txt | 543 +++ ...tend_src_app_golfbaner_[slug]_page_tsx.txt | 17 + .../frontend_src_app_layout_tsx.txt | 19 + kode_eksport_3/frontend_src_app_page_tsx.txt | 40 + .../frontend_src_components_Header_tsx.txt | 45 + ..._src_components_ScrapeMethodSelect_tsx.txt | 71 + .../frontend_src_config_constants_ts.txt | 42 + kode_eksport_3/frontend_src_middleware_ts.txt | 36 + losby_dump.txt | 72 - nsg.txt | 3160 ----------------- rene_urler.txt | 56 - struktur2_dump.txt | 639 ++++ struktur3_dump.txt | 20 +- test_tjome.py | 44 - 63 files changed, 9240 insertions(+), 4071 deletions(-) create mode 100644 fil-tre-3.txt create mode 100644 kode_eksport_1/backend_import_urls_py.txt create mode 100644 kode_eksport_1/backend_scrape_greenfee_py.txt create mode 100644 kode_eksport_1/backend_scrape_vtg_py.txt create mode 100644 kode_eksport_1/frontend_src_app_admin_greenfee_page_tsx.txt create mode 100644 kode_eksport_1/frontend_src_app_admin_vtg_page_tsx.txt delete mode 100644 kode_eksport_1/test_tjome_py.txt create mode 100644 kode_eksport_3/backend_create_admin_py.txt create mode 100644 kode_eksport_3/backend_import_gallery_py.txt create mode 100644 kode_eksport_3/backend_import_nye_felter_py.txt create mode 100644 kode_eksport_3/backend_import_urls_py.txt create mode 100644 kode_eksport_3/backend_import_wp_py.txt create mode 100644 kode_eksport_3/backend_main_py.txt create mode 100644 kode_eksport_3/backend_scrape_golfamore1_3_py.txt create mode 100644 kode_eksport_3/backend_scrape_greenfee_py.txt create mode 100644 kode_eksport_3/backend_scrape_membership_py.txt create mode 100644 kode_eksport_3/backend_scrape_nsg_3_py.txt create mode 100644 kode_eksport_3/backend_scrape_status_py.txt create mode 100644 kode_eksport_3/backend_scrape_vtg_py.txt create mode 100644 kode_eksport_3/backend_sync_greenfee_py.txt create mode 100644 kode_eksport_3/backend_test_gemini_py.txt create mode 100644 kode_eksport_3/backend_test_login_py.txt create mode 100644 kode_eksport_3/backend_update_admin_py.txt create mode 100644 kode_eksport_3/eksport_script_py.txt create mode 100644 kode_eksport_3/frontend_next-env_d_ts.txt create mode 100644 kode_eksport_3/frontend_next_config_ts.txt create mode 100644 kode_eksport_3/frontend_src_app_FacilitySearch_tsx.txt create mode 100644 kode_eksport_3/frontend_src_app_HeroSlider_tsx.txt create mode 100644 kode_eksport_3/frontend_src_app_admin_greenfee_page_tsx.txt create mode 100644 kode_eksport_3/frontend_src_app_admin_login_page_tsx.txt create mode 100644 kode_eksport_3/frontend_src_app_admin_medlemskap_page_tsx.txt create mode 100644 kode_eksport_3/frontend_src_app_admin_page_tsx.txt create mode 100644 kode_eksport_3/frontend_src_app_admin_rediger_[slug]_EditFacilityClient_tsx.txt create mode 100644 kode_eksport_3/frontend_src_app_admin_rediger_[slug]_page_tsx.txt create mode 100644 kode_eksport_3/frontend_src_app_admin_vtg_page_tsx.txt create mode 100644 kode_eksport_3/frontend_src_app_golfbaner_[slug]_CourseDisplay_tsx.txt create mode 100644 kode_eksport_3/frontend_src_app_golfbaner_[slug]_FacilityDetailView_tsx.txt create mode 100644 kode_eksport_3/frontend_src_app_golfbaner_[slug]_page_tsx.txt create mode 100644 kode_eksport_3/frontend_src_app_layout_tsx.txt create mode 100644 kode_eksport_3/frontend_src_app_page_tsx.txt create mode 100644 kode_eksport_3/frontend_src_components_Header_tsx.txt create mode 100644 kode_eksport_3/frontend_src_components_ScrapeMethodSelect_tsx.txt create mode 100644 kode_eksport_3/frontend_src_config_constants_ts.txt create mode 100644 kode_eksport_3/frontend_src_middleware_ts.txt delete mode 100644 losby_dump.txt delete mode 100644 nsg.txt delete mode 100644 rene_urler.txt create mode 100644 struktur2_dump.txt delete mode 100644 test_tjome.py diff --git a/backend/Medlemsskap.txt b/backend/Medlemsskap.txt index 35a19a4..85c64e0 100644 --- a/backend/Medlemsskap.txt +++ b/backend/Medlemsskap.txt @@ -1,153 +1,153 @@ -https://ballerud.no/medlemmer -https://bamblegolfklubb.no/medlem/meldelemskontigent/ -https://www.bgk.no/medlemmer -https://www.bjgk.no/om-oss/bli-medlem -https://bjaavanngk.no/medlem/innmeldingskjema -https://www.bodogolfklubb.no/klubben/medlemsskap-2024 -https://borregb.no/medlemskap/medlemskategorier-og-priser -https://borregb.no/medlemskap/medlemskategorier-og-priser -https://www.bynesetgolf.no/medlemskap-og-fordeler/medlemskap-og-priser/ -https://bmgk.no/klubben/medlemskap -https://drammengk.no/drammen-golfklubb/medlemskap -https://drobakgolf.no/medlemskap/medlemskap-og-priser -https://www.eikergolf.no/klubben/innmelding/ -https://www.ekholtgolf.no/blimedlem -https://elverumgolf.no/medlemsskap/ -https://fanagolf.no/medlemskap -https://www.fetgk.no/klubben/ -https://www.florogolf.no/bli-medlem/ -https://www.frostagk.no/next/p/70342/medlemskap -https://gfgk.no/bli-medlem/bli-medlem -https://giskegolf.no/medlemskap/ -https://gjerdrumgolfklubb.no/medlemskap -https://gjersjoengolf.no/medlemskap -https://gtgk.no/medlemskap/medlemskap-og-priser -https://grenlandgolf.no/medlem/medlemskap-2019/ -https://grimstadgolfklubb.no/medlemskap -https://grinigolfklubb.no/medlemskap/alle-medlemskap -https://grorudgk.no/medlemskap -https://gronmogk.no/bli-medlem/ -https://hafjellgolf.no/medlemmer -https://hagagolf.no/medlem/medlemskap -https://aasgaardgolfpark.no/medlemsskap -https://haldengk.no/start/medlem -https://hallingdalgolfklubb.no/medlemskap/,https://www.golfalpingolfbane.no/gjester/green-fee/ -https://hammerfestgolf.no/index.php?pageID=104 -https://hardangergolfklubb.no/prisar/ -https://hgolf.no/vtg-og-medlemsskap/ -https://haugalandgolf.no/klubb/medlemskap/ -https://hauger-golfklubb.no/medlemskap -https://www.haugesundgolf.no/menu-4 -https://www.helgelandgolfklubb.no/klubben -https://hemsedalgolfklubb.no/medlemskap-oversikt/ -https://herdlagolfklubb.no/innmelding/ -https://hinnøy-gk.no/om-oss/medlemskapspillerett.html -https://www.hitragolf.no/priser/ -https://www.hotellborge.no/husoy-golfklubb/ -https://hofgolfklubb.no/medlemskap/ -https://holtsmarkgolf.no/medlemskap-oversikt/ -https://www.hovdengolf.com/medlem -https://hhg.no/medlemskap -https://hvalergk.no/medlemskap -https://www.imjelt.no/priser -https://www.jgk.no/kontingent -https://karasjokgolf.no/medlemskap/ -https://www.karmoy-golfklubb.no/starte-med-golf/ -https://kjekstad-gk.no/medlemskap -https://kongsberggolf.no/medlemskap/ -https://kongsvingergolf.no/priser/ -https://kragk.no/medlem -https://kristiansandgk.no/medlemskap -https://www.kristiansund-golfklubb.no/vtg-kurs -https://krokhol.no/medlemsservice/medlemskap -https://golfen.no/klubb/medlem/ -https://larvikgolf.no/medlemskap -https://lilgk.no/medlemmer/innmelding -https://lindesnesgolfklubb.no/klubben/90-2/ -https://www.lofotenlinks.no/medlemmer/ -https://www.lommedalengk.no/priser -https://losby.no/medlemskap -https://legk.no/innmelding/ -https://mandalgk.no/klubben/#kontingenter -https://melandgolf.no/medlemmer-1 -https://www.midttromsgolf.no/next/p/52839/medlemsbetingelser -https://miklagardgolf.no/medlemskap/medlemskap-kampanje -https://msgk.no/medlemskap -https://moldegolf.no/medlemskap -https://www.evjegolf.no/bli-golfspiller-og-medlem/medlemskap-og-priser -https://morkgolf.no/medlemskap/medlemsavgifter -https://www.namdal-golfklubb.no/priser/ -https://www.narvikgolf.no/bli-medlem/ -https://nesgolf.no/medlemskap -https://www.norgolf.com/medlemskap/ -https://nordhauggk.no/medlemskap/medlemskap -https://nordvegengolf.no/priser/ -https://www.norefjell-golf.no/medlemskap/ -https://golfparken.no/medlemskap/#senior -https://northcape-golfclub.no/medlemskap -https://www.naroysundgolf.no/medlem-old -https://notteroygolf.no/medlemskap/ -https://www.minidrett.no/medlemskap/113698 -https://ognagolf.no/bli-medlem/ -https://onsoygolfklubb.no/medlemskap -https://www.oppdalgolfklubb.no/kontigent -https://oppegardgk.no/medlemskap/medlemskap-og-priser -https://www.oslogk.no/bli-medlem -https://occ.no/medlemskap/ -https://www.polarsirkelen-golf.no/medlemsskap -https://www.prgk.no/bli-medlem -https://www.randaberggolf.no/blimedlem -https://www.randsfjordgolf.no/?p=1761 -https://www.raumagolf.no/next/p/10216/kontakt -https://tonsberggolf.no/arsavgifter/ -https://www.ringerikegk.no/homepage/medlemskap -https://rjukangolf.no/for-medlemmer/bli-medlem/ -https://www.rorosgolf.no/bli-medlem/ -https://bodogolfpark.com/medlemmer/#medlemskontingent -https://www.sandanegolf.no/klubben/bli-medlem/ -https://sandegk.no/medlem/medlemskontingent -https://www.sandefjordgolf.no/klubben/bli-medlem/ -https://www.sandnesgolfklubb.no/sandnes-golfklubb/bli-medlem-i-sandnes-golfklubb/ -https://www.saudagolf.no/priser-og-medlemskap -https://www.seljegolfklubb.no/medlemskap/ -https://sirdalfjellgolf.no/medlemskap/ -https://www.skeigolf.no/skjema-for-innmelding-i-skei-golfklubb -https://skigk.no/klubb/medlemskap -https://skjeberggk.no/medlemskap/bli-medlem -https://slenesetgolf.no/bli-medlem/ -https://smolagolfklubb.no/klubb.htm -https://solagk.no/klubben/medlemskap-og-priser -https://solagk.no/klubben/medlemskap-og-priser -https://www.solumgolf.club/medlem -https://soongolf.no/medlemmer/prisliste-medlemskap -https://sorknesgk.no/bli-medlem -https://sotragk.no/medlemskap/medlemskap-og-priser-2026 -https://www.sgk.no/medlemskap/ -https://steinkjer-golfklubb.no/bli-medlem/ -https://www.stiklestad-golfklubb.no/medlemskap/ -https://stjordal.golf/medlemskap -https://www.stordgolf.com/medlemskap -https://strandagolf.no/lokalmedlemskap/ -https://www.sunndal-golfklubb.no/medlemskap/ -https://sunnfjordgk.no/medlem/ -https://sunnmoregolf.no/klubben/medlemskap#innmelding -https://surnadal-golfklubb.no/medlemskap/ -https://tingvollgolf.no/priser/ -https://tjomegolfklubb.no/bli-medlem/ -https://tromsogolf.com/spill-banen/booking-greenfee/ -https://golfklubben.no/medlem/kontigent-medlemskap -https://www.trondheimpar3golf.no -https://trysilgolf.no/start/medlem/medlemskap -https://tyrifjord-golfklubb.no/info/medlemmer/120/medlemskap-kategorier -https://www.tysnesgolf.no/medlem/ -https://www.ugk.no/medlemsskap/ -https://utsiktengolf.no/medlemskap -https://valdresgolf.no/om/bli-medlem/ -https://www.vangolf.no/?page_id=541 -https://varangergolf.no/varanger-golfklubb/medlemskontigent -https://www.vestgolf.com/medlemskap -https://voldagolf.no/index.php/om-klubben/medlemsskap -https://www.vossgolf.no/?p=335 -https://vradalgolfklubb.no/medlemskap -https://ostmarkagolf.no/medlemskap -https://aalesundgk.no/medlemskap +https://ballerud.no/medlemmer +https://bamblegolfklubb.no/medlem/meldelemskontigent/ +https://www.bgk.no/medlemmer +https://www.bjgk.no/om-oss/bli-medlem +https://bjaavanngk.no/medlem/innmeldingskjema +https://www.bodogolfklubb.no/klubben/medlemsskap-2024 +https://borregb.no/medlemskap/medlemskategorier-og-priser +https://borregb.no/medlemskap/medlemskategorier-og-priser +https://www.bynesetgolf.no/medlemskap-og-fordeler/medlemskap-og-priser/ +https://bmgk.no/klubben/medlemskap +https://drammengk.no/drammen-golfklubb/medlemskap +https://drobakgolf.no/medlemskap/medlemskap-og-priser +https://www.eikergolf.no/klubben/innmelding/ +https://www.ekholtgolf.no/blimedlem +https://elverumgolf.no/medlemsskap/ +https://fanagolf.no/medlemskap +https://www.fetgk.no/klubben/ +https://www.florogolf.no/bli-medlem/ +https://www.frostagk.no/next/p/70342/medlemskap +https://gfgk.no/bli-medlem/bli-medlem +https://giskegolf.no/medlemskap/ +https://gjerdrumgolfklubb.no/medlemskap +https://gjersjoengolf.no/medlemskap +https://gtgk.no/medlemskap/medlemskap-og-priser +https://grenlandgolf.no/medlem/medlemskap-2019/ +https://grimstadgolfklubb.no/medlemskap +https://grinigolfklubb.no/medlemskap/alle-medlemskap +https://grorudgk.no/medlemskap +https://gronmogk.no/bli-medlem/ +https://hafjellgolf.no/medlemmer +https://hagagolf.no/medlem/medlemskap +https://aasgaardgolfpark.no/medlemsskap +https://haldengk.no/start/medlem +https://hallingdalgolfklubb.no/medlemskap/,https://www.golfalpingolfbane.no/gjester/green-fee/ +https://hammerfestgolf.no/index.php?pageID=104 +https://hardangergolfklubb.no/prisar/ +https://hgolf.no/vtg-og-medlemsskap/ +https://haugalandgolf.no/klubb/medlemskap/ +https://hauger-golfklubb.no/medlemskap +https://www.haugesundgolf.no/menu-4 +https://www.helgelandgolfklubb.no/klubben +https://hemsedalgolfklubb.no/medlemskap-oversikt/ +https://herdlagolfklubb.no/innmelding/ +https://hinnøy-gk.no/om-oss/medlemskapspillerett.html +https://www.hitragolf.no/priser/ +https://www.hotellborge.no/husoy-golfklubb/ +https://hofgolfklubb.no/medlemskap/ +https://holtsmarkgolf.no/medlemskap-oversikt/ +https://www.hovdengolf.com/medlem +https://hhg.no/medlemskap +https://hvalergk.no/medlemskap +https://www.imjelt.no/priser +https://www.jgk.no/kontingent +https://karasjokgolf.no/medlemskap/ +https://www.karmoy-golfklubb.no/starte-med-golf/ +https://kjekstad-gk.no/medlemskap +https://kongsberggolf.no/medlemskap/ +https://kongsvingergolf.no/priser/ +https://kragk.no/medlem +https://kristiansandgk.no/medlemskap +https://www.kristiansund-golfklubb.no/vtg-kurs +https://krokhol.no/medlemsservice/medlemskap +https://golfen.no/klubb/medlem/ +https://larvikgolf.no/medlemskap +https://lilgk.no/medlemmer/innmelding +https://lindesnesgolfklubb.no/klubben/90-2/ +https://www.lofotenlinks.no/medlemmer/ +https://www.lommedalengk.no/priser +https://losby.no/medlemskap +https://legk.no/innmelding/ +https://mandalgk.no/klubben/#kontingenter +https://melandgolf.no/medlemmer-1 +https://www.midttromsgolf.no/next/p/52839/medlemsbetingelser +https://miklagardgolf.no/medlemskap/medlemskap-kampanje +https://msgk.no/medlemskap +https://moldegolf.no/medlemskap +https://www.evjegolf.no/bli-golfspiller-og-medlem/medlemskap-og-priser +https://morkgolf.no/medlemskap/medlemsavgifter +https://www.namdal-golfklubb.no/priser/ +https://www.narvikgolf.no/bli-medlem/ +https://nesgolf.no/medlemskap +https://www.norgolf.com/medlemskap/ +https://nordhauggk.no/medlemskap/medlemskap +https://nordvegengolf.no/priser/ +https://www.norefjell-golf.no/medlemskap/ +https://golfparken.no/medlemskap/#senior +https://northcape-golfclub.no/medlemskap +https://www.naroysundgolf.no/medlem-old +https://notteroygolf.no/medlemskap/ +https://www.minidrett.no/medlemskap/113698 +https://ognagolf.no/bli-medlem/ +https://onsoygolfklubb.no/medlemskap +https://www.oppdalgolfklubb.no/kontigent +https://oppegardgk.no/medlemskap/medlemskap-og-priser +https://www.oslogk.no/bli-medlem +https://occ.no/medlemskap/ +https://www.polarsirkelen-golf.no/medlemsskap +https://www.prgk.no/bli-medlem +https://www.randaberggolf.no/blimedlem +https://www.randsfjordgolf.no/?p=1761 +https://www.raumagolf.no/next/p/10216/kontakt +https://tonsberggolf.no/arsavgifter/ +https://www.ringerikegk.no/homepage/medlemskap +https://rjukangolf.no/for-medlemmer/bli-medlem/ +https://www.rorosgolf.no/bli-medlem/ +https://bodogolfpark.com/medlemmer/#medlemskontingent +https://www.sandanegolf.no/klubben/bli-medlem/ +https://sandegk.no/medlem/medlemskontingent +https://www.sandefjordgolf.no/klubben/bli-medlem/ +https://www.sandnesgolfklubb.no/sandnes-golfklubb/bli-medlem-i-sandnes-golfklubb/ +https://www.saudagolf.no/priser-og-medlemskap +https://www.seljegolfklubb.no/medlemskap/ +https://sirdalfjellgolf.no/medlemskap/ +https://www.skeigolf.no/skjema-for-innmelding-i-skei-golfklubb +https://skigk.no/klubb/medlemskap +https://skjeberggk.no/medlemskap/bli-medlem +https://slenesetgolf.no/bli-medlem/ +https://smolagolfklubb.no/klubb.htm +https://solagk.no/klubben/medlemskap-og-priser +https://solagk.no/klubben/medlemskap-og-priser +https://www.solumgolf.club/medlem +https://soongolf.no/medlemmer/prisliste-medlemskap +https://sorknesgk.no/bli-medlem +https://sotragk.no/medlemskap/medlemskap-og-priser-2026 +https://www.sgk.no/medlemskap/ +https://steinkjer-golfklubb.no/bli-medlem/ +https://www.stiklestad-golfklubb.no/medlemskap/ +https://stjordal.golf/medlemskap +https://www.stordgolf.com/medlemskap +https://strandagolf.no/lokalmedlemskap/ +https://www.sunndal-golfklubb.no/medlemskap/ +https://sunnfjordgk.no/medlem/ +https://sunnmoregolf.no/klubben/medlemskap#innmelding +https://surnadal-golfklubb.no/medlemskap/ +https://tingvollgolf.no/priser/ +https://tjomegolfklubb.no/bli-medlem/ +https://tromsogolf.com/spill-banen/booking-greenfee/ +https://golfklubben.no/medlem/kontigent-medlemskap +https://www.trondheimpar3golf.no +https://trysilgolf.no/start/medlem/medlemskap +https://tyrifjord-golfklubb.no/info/medlemmer/120/medlemskap-kategorier +https://www.tysnesgolf.no/medlem/ +https://www.ugk.no/medlemsskap/ +https://utsiktengolf.no/medlemskap +https://valdresgolf.no/om/bli-medlem/ +https://www.vangolf.no/?page_id=541 +https://varangergolf.no/varanger-golfklubb/medlemskontigent +https://www.vestgolf.com/medlemskap +https://voldagolf.no/index.php/om-klubben/medlemsskap +https://www.vossgolf.no/?p=335 +https://vradalgolfklubb.no/medlemskap +https://ostmarkagolf.no/medlemskap +https://aalesundgk.no/medlemskap diff --git a/backend/__pycache__/main.cpython-311.pyc b/backend/__pycache__/main.cpython-311.pyc index f1217ea58dda84982ecf659f71d6554095f93e06..630d2597ca1ee8827bc66e967d77d71e69abb9e3 100644 GIT binary patch delta 3129 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 diff --git a/backend/import_urls.py b/backend/import_urls.py index f1fa917..f0f5ad0 100644 --- a/backend/import_urls.py +++ b/backend/import_urls.py @@ -3,6 +3,8 @@ TEE OFF - AUTOMATISK URL-IMPORTØR --------------------------------------------------------------------------- Leser tekstfiler med lenker og forsøker å matche dem mot eksisterende golfanlegg i databasen basert på domenenavn. + +docker compose exec api python import_urls.py --------------------------------------------------------------------------- """ diff --git a/backend/main.py b/backend/main.py index cfce462..5688610 100644 --- a/backend/main.py +++ b/backend/main.py @@ -1,5 +1,5 @@ """ -TEE OFF BACKEND API v3.7.0 - KOBLET PÅ FULL ADMIN REDIGERING +TEE OFF BACKEND API v3.8.0 - KOBLET PÅ FULL ADMIN REDIGERING --------------------------------------------------------------------------- REGEL 1: Bruk str (ikke string) for type-hinting. REGEL 2: Inkluder alle subqueries for banestatus og hull-data. @@ -185,7 +185,7 @@ async def lifespan(app: FastAPI): # Lukk pool ved avslutning await app.state.pool.close() -app = FastAPI(title="TeeOff API v3.7.0", lifespan=lifespan) +app = FastAPI(title="TeeOff API v3.8.0", lifespan=lifespan) # CORS - Tillater både lokal utvikling og produksjonsdomene app.add_middleware( @@ -385,10 +385,28 @@ async def update_facility_full(facility_id: int, request: Request): if update_data: set_clauses = [] values = [] + + # Definer hvilke felt som er datoer i databasen + date_fields = ['membership_updated_at', 'greenfee_updated_at', 'vtg_updated_at', 'status_updated_at'] + for i, (k, v) in enumerate(update_data.items(), 1): if isinstance(v, (dict, list)): set_clauses.append(f"{k} = ${i}::jsonb") values.append(json.dumps(v)) + elif k in date_fields: + set_clauses.append(f"{k} = ${i}") + # Håndter tomme datoer og konverter til Python datetime + if v == "" or v is None: + values.append(None) + else: + # Tving strengen over til et ekte datetime-objekt. + # .replace() håndterer Next.js' "Z"-format. + dt_str = str(v).replace("Z", "+00:00") + try: + dt_obj = datetime.fromisoformat(dt_str) + values.append(dt_obj) + except ValueError: + values.append(None) else: set_clauses.append(f"{k} = ${i}") values.append(v) @@ -403,9 +421,16 @@ async def update_facility_full(facility_id: int, request: Request): course_id = course.get('id') if course_id: # Rens datoformat for PostgreSQL (håndterer Next.js date input) - valid_until = course.get('slope_valid_until') - if valid_until == "" or valid_until is None: + valid_until_str = course.get('slope_valid_until') + if valid_until_str == "" or valid_until_str is None: valid_until = None + else: + # Gjør om strengen til et ekte date-objekt for asyncpg + try: + date_part = valid_until_str.split('T')[0] + valid_until = datetime.strptime(date_part, "%Y-%m-%d").date() + except ValueError: + valid_until = None await conn.execute(""" UPDATE courses diff --git a/eksport_script.py b/eksport_script.py index 288a706..9db330a 100644 --- a/eksport_script.py +++ b/eksport_script.py @@ -4,8 +4,8 @@ from pathlib import Path # --- KONFIGURASJON --- KILDE_MAPPE = "/opt/teeoff/" -EKSPORT_MAPPE = "/opt/teeoff/kode_eksport_1/" -TRE_FIL = "/opt/teeoff/fil-tre.txt" +EKSPORT_MAPPE = "/opt/teeoff/kode_eksport_3/" +TRE_FIL = "/opt/teeoff/fil-tre-3.txt" # Filtyper vi vil kopiere FILTYPER = ['.py', '.ts', '.tsx'] diff --git a/fil-tre-3.txt b/fil-tre-3.txt new file mode 100644 index 0000000..16beb71 --- /dev/null +++ b/fil-tre-3.txt @@ -0,0 +1,796 @@ + 📁 teeoff/ + 📄 fil-tre.txt + 📄 struktur2_dump.txt + 📄 seed.sql + 📄 struktur3_dump.txt + 📄 eksport_script.py + 📄 update_golfbox.sql + 📄 fil-tre-3.txt + 📄 docker-compose.yml + 📄 schema.sql + 📄 init.sql +📁 kode_eksport_3/ + 📄 backend_scrape_membership_py.txt + 📄 backend_scrape_greenfee_py.txt + 📄 frontend_src_components_Header_tsx.txt + 📄 backend_scrape_nsg_3_py.txt + 📄 frontend_src_app_admin_medlemskap_page_tsx.txt + 📄 frontend_next-env_d_ts.txt + 📄 frontend_src_app_layout_tsx.txt + 📄 frontend_src_app_admin_vtg_page_tsx.txt + 📄 frontend_src_app_admin_greenfee_page_tsx.txt + 📄 backend_import_urls_py.txt + 📄 frontend_src_app_page_tsx.txt + 📄 eksport_script_py.txt + 📄 frontend_src_components_ScrapeMethodSelect_tsx.txt + 📄 frontend_src_app_golfbaner_[slug]_page_tsx.txt + 📄 backend_import_wp_py.txt + 📄 frontend_src_middleware_ts.txt + 📄 backend_test_gemini_py.txt + 📄 frontend_src_app_golfbaner_[slug]_CourseDisplay_tsx.txt + 📄 frontend_next_config_ts.txt + 📄 backend_update_admin_py.txt + 📄 backend_import_nye_felter_py.txt + 📄 frontend_src_app_admin_login_page_tsx.txt + 📄 frontend_src_app_golfbaner_[slug]_FacilityDetailView_tsx.txt + 📄 backend_main_py.txt + 📄 frontend_src_app_admin_rediger_[slug]_page_tsx.txt + 📄 frontend_src_app_admin_page_tsx.txt + 📄 frontend_src_app_admin_rediger_[slug]_EditFacilityClient_tsx.txt + 📄 frontend_src_app_HeroSlider_tsx.txt + 📄 backend_test_login_py.txt + 📄 backend_create_admin_py.txt + 📄 backend_sync_greenfee_py.txt + 📄 backend_scrape_status_py.txt + 📄 backend_scrape_golfamore1_3_py.txt + 📄 frontend_src_app_FacilitySearch_tsx.txt + 📄 backend_scrape_vtg_py.txt + 📄 frontend_src_config_constants_ts.txt + 📄 backend_import_gallery_py.txt +📁 frontend/ + 📄 eslint.config.mjs + 📄 next-env.d.ts + 📄 tsconfig.json + 📄 README.md + 📄 next.config.ts + 📄 postcss.config.mjs + 📄 package-lock.json + 📄 .gitignore + 📄 package.json + 📄 Dockerfile + 📁 public/ + 📄 globe.svg + 📄 vercel.svg + 📄 Toppbilde-standard.jpg + 📄 TeeOff-logo-Retina-1.png + 📄 window.svg + 📄 next.svg + 📄 file.svg + 📁 media/ + 📄 slide_naeroysund-golfklubb_5.jpg + 📄 main_hakadal-golfklubb.jpg + 📄 slide_baerum-golfklubb_1.jpg + 📄 slide_egersund-golfklubb_7.jpg + 📄 main_hammerfest-og-kvalsund-golfklubb.jpg + 📄 main_odda-golfklubb.jpg + 📄 slide_holtsmark-golfklubb_1.jpg + 📄 main_voss-golfklubb.jpeg + 📄 slide_soon-golfklubb_2.jpg + 📄 logo_ogna-golfklubb.jpg + 📄 slide_tyrifjord-golfklubb_4.jpg + 📄 slide_tjome-golfklubb_2.jpg + 📄 logo_garder-golfklubb.jpg + 📄 slide_helgeland-golfklubb_1.jpg + 📄 slide_kvinnherad-golfklubb_0.jpg + 📄 main_rauma-golfklubb.jpg + 📄 slide_naeroysund-golfklubb_0.jpg + 📄 slide_hallingdal-golfklubb_1.jpeg + 📄 slide_hakadal-golfklubb_13.jpg + 📄 slide_sunndal-golfklubb_2.jpg + 📄 logo_skjeberg-golfklubb.jpg + 📄 slide_larvik-golfklubb_0.jpg + 📄 logo_tingvoll-golfklubb.jpg + 📄 slide_sandefjord-golfklubb_4.jpg + 📄 logo_onsoy-golfklubb.jpg + 📄 logo_oppdal-golfklubb.jpg + 📄 main_nordhaug-golfklubb.jpg + 📄 main_hof-golfklubb.jpg + 📄 main_hauger-golfklubb.jpg + 📄 slide_vradal-golfklubb_1.jpg + 📄 slide_holtsmark-golfklubb_5.jpg + 📄 main_baerum-golfklubb.jpg + 📄 logo_huseby-hanko-golfklubb.png + 📄 slide_solum-golfklubb_4.jpg + 📄 logo_hardanger-golfklubb.png + 📄 logo_kristiansund-og-omegn-golfklubb.jpg + 📄 main_byneset-golf.jpg + 📄 logo_laerdal-golfklubb.jpg + 📄 slide_kjekstad-golfklubb_0.jpg + 📄 main_namdal-golfklubb.jpg + 📄 main_hallingdal-golfklubb.jpg + 📄 logo_ibestad-golfklubb.jpg + 📄 logo_alta-golfklubb.png + 📄 slide_norsjo-golfklubb_4.jpg + 📄 main_elverum-golfklubb.jpg + 📄 logo_hammerfest-og-kvalsund-golfklubb.jpg + 📄 main_garder-golfklubb.jpg + 📄 logo_lommedalen-golfklubb.jpg + 📄 slide_ski-golfklubb_1.jpg + 📄 logo_gronmo-golfklubb.jpg + 📄 logo_hvam-golfklubb.jpg + 📄 main_nesbyen-golfklubb.jpg + 📄 slide_naeroysund-golfklubb_2.jpg + 📄 slide_tjome-golfklubb_0.jpg + 📄 logo_miklagard-golfklubb.png + 📄 main_nordfjord-golfklubb.jpg + 📄 slide_bjaavann-golfklubb_1.jpg + 📄 main_jaeren-golfklubb.jpg + 📄 slide_salten-golfklubb-bodo-golfpark_1.jpg + 📄 slide_larvik-golfklubb_1.jpg + 📄 main_modum-golfklubb.jpg + 📄 logo_volda-golfklubb.jpg + 📄 main_grini-golfklubb.jpg + 📄 slide_aurskog-golfpark_0.jpg + 📄 main_miklagard-golfklubb.jpg + 📄 main_bjaavann-golfklubb.jpg + 📄 main_fet-golfklubb.jpg + 📄 slide_atlungstad-golfklubb_2.jpg + 📄 logo_kvinnherad-golfklubb.jpg + 📄 slide_borregaard-golfklubb_1.jpg + 📄 slide_tjome-golfklubb_4.jpg + 📄 main_rjukan-og-tinn-golfklubb.jpg + 📄 slide_kjekstad-golfklubb_1.jpg + 📄 slide_norsjo-golfklubb_3.jpg + 📄 logo_surnadal-golfklubb.png + 📄 slide_kongsberg-golfklubb_0.jpg + 📄 slide_hovden-golfklubb_1.jpg + 📄 main_hemsedal-golfklubb.jpg + 📄 slide_tyrifjord-golfklubb_5.jpg + 📄 logo_alesund-golfklubb.jpg + 📄 slide_tingvoll-golfklubb_0.jpg + 📄 slide_tyrifjord-golfklubb_2.jpg + 📄 slide_bleik-golfstrombane_0.jpg + 📄 slide_nesbyen-golfklubb_0.jpg + 📄 main_sunnfjord-golfklubb.jpg + 📄 slide_hasvik-golfklubb_0.jpg + 📄 logo_stavanger-golfklubb.png + 📄 slide_ostmarka-golfklubb_3.jpg + 📄 main_land-golfklubb.jpg + 📄 slide_helgeland-golfklubb_5.jpg + 📄 logo_bergen-golfklubb.png + 📄 slide_lofoten-golfklubb_1.jpg + 📄 logo_rjukan-og-tinn-golfklubb.jpg + 📄 main_alta-golfklubb.jpg + 📄 slide_asker-golfklubb_1.jpg + 📄 slide_krokhol-golfklubb_5.jpg + 📄 logo_nordvegen-golfklubb.png + 📄 logo_kristiansand-golfklubb.jpg + 📄 main_asker-golfklubb.jpg + 📄 slide_sleneset-golfklubb_0.jpg + 📄 logo_re-golfklubb.jpg + 📄 slide_oustoen-country-club_0.jpg + 📄 logo_hallingdal-golfklubb.png + 📄 logo_fet-golfklubb.jpg + 📄 slide_trondheim-golfklubb_3.jpg + 📄 slide_borregaard-golfklubb_3.jpg + 📄 main_hovden-golfklubb.jpg + 📄 slide_ostmarka-golfklubb_2.jpg + 📄 slide_sandane-golfklubb_2.jpg + 📄 slide_trondheim-golfklubb_6.jpg + 📄 slide_helgeland-golfklubb_9.jpg + 📄 logo_borre-golfklubb.png + 📄 main_karasjok-golfklubb.jpg + 📄 slide_hallingdal-golfklubb_2.jpeg + 📄 main_north-cape-golf-club.jpg + 📄 logo_selbu-golfklubb.png + 📄 logo_sola-golfklubb-forus.jpg + 📄 slide_asker-golfklubb_0.jpg + 📄 main_hafjell-golfklubb.jpg + 📄 logo_mjosen-golfklubb.png + 📄 slide_atlungstad-golfklubb_0.jpg + 📄 main_moa-golfsenter.jpg + 📄 slide_bleik-golfstrombane_7.jpg + 📄 main_kvinnherad-golfklubb.jpg + 📄 main_re-golfklubb.jpg + 📄 logo_haga-golfklubb.jpg + 📄 main_roros-golfklubb.jpg + 📄 main_vestfold-golfklubb.jpg + 📄 slide_egersund-golfklubb_2.jpg + 📄 slide_volda-golfklubb_2.jpeg + 📄 slide_egersund-golfklubb_5.jpg + 📄 main_gjersjoen-golfklubb.jpg + 📄 main_gamle-fredrikstad-golfklubb.jpg + 📄 slide_naeroysund-golfklubb_3.jpg + 📄 slide_oustoen-country-club_1.jpg + 📄 logo_hitra-golfklubb.png + 📄 logo_rygge-flystasjon-golf-klubb.jpg + 📄 slide_tyrifjord-golfklubb_9.jpg + 📄 slide_trondheim-golfklubb_5.jpg + 📄 slide_aurskog-golfpark_1.jpg + 📄 main_sola-golfklubb-solastranden.jpg + 📄 logo_trysil-golfklubb.jpg + 📄 logo_harstad-golfklubb.jpg + 📄 slide_ogna-golfklubb_1.jpg + 📄 logo_gamle-fredrikstad-golfklubb.jpg + 📄 main_stranda-golfklubb.jpg + 📄 logo_sauda-golfklubb.png + 📄 slide_egersund-golfklubb_0.jpg + 📄 logo_solum-golfklubb.jpg + 📄 main_bjornefjorden-golfklubb.jpg + 📄 main_vestlia-golf.jpg + 📄 slide_sandefjord-golfklubb_1.jpg + 📄 logo_borregaard-golfklubb.jpg + 📄 main_grimstad-golfklubb.jpg + 📄 logo_vesteralen-golfklubb.png + 📄 main_kristiansund-og-omegn-golfklubb.jpg + 📄 slide_hallingdal-golfklubb_3.jpeg + 📄 logo_sandnes-golfklubb.jpg + 📄 main_alesund-golfklubb.jpeg + 📄 main_steinkjer-golfklubb.jpg + 📄 main_skei-golfklubb.jpg + 📄 slide_nesbyen-golfklubb_3.jpg + 📄 slide_hardanger-golfklubb_0.jpg + 📄 slide_gumoy-golf_1.jpg + 📄 main_grenland-og-omegn-golfklubb.jpg + 📄 main_karmoy-golfklubb.jpg + 📄 logo_egersund-golfklubb.jpg + 📄 logo_baerum-golfklubb.png + 📄 main_kristiansand-golfklubb.jpg + 📄 slide_kongsberg-golfklubb_2.jpg + 📄 slide_gumoy-golf_3.jpg + 📄 logo_smola-golfklubb.jpg + 📄 logo_grimstad-golfklubb.png + 📄 logo_stord-golfklubb.png + 📄 slide_helgeland-golfklubb_6.jpg + 📄 logo_rauma-golfklubb.png + 📄 logo_hinnoy-golfklubb.jpg + 📄 slide_holtsmark-golfklubb_0.jpg + 📄 logo_varanger-golfklubb.jpg + 📄 logo_mandal-golfklubb.jpg + 📄 slide_trondheim-golfklubb_1.jpg + 📄 logo_tjome-golfklubb.png + 📄 slide_lofoten-golfklubb_2.jpg + 📄 main_haga-golfklubb.jpg + 📄 slide_bjaavann-golfklubb_2.jpg + 📄 slide_hakadal-golfklubb_8.jpg + 📄 logo_herdla-golfklubb.jpg + 📄 main_stavanger-golfklubb.jpg + 📄 main_lommedalen-golfklubb.jpg + 📄 main_sirdal-fjellgolf-klubb.jpg + 📄 main_alsten-golfklubb.jpg + 📄 logo_lillestrom-golfklubb.png + 📄 main_ogna-golfklubb.jpg + 📄 slide_helgeland-golfklubb_8.jpg + 📄 slide_nesbyen-golfklubb_2.jpg + 📄 main_tjome-golfklubb.jpg + 📄 main_sandefjord-golfklubb.jpg + 📄 main_namsos-golfklubb.jpg + 📄 logo_notteroy-golfklubb.jpg + 📄 main_trondheim-golfklubb.jpg + 📄 slide_solum-golfklubb_1.jpg + 📄 slide_kongsberg-golfklubb_4.jpg + 📄 main_utsikten-golfklubb.jpg + 📄 main_vesteralen-golfklubb.jpg + 📄 slide_sandefjord-golfklubb_0.jpg + 📄 slide_hakadal-golfklubb_9.jpg + 📄 logo_polarsirkelen-golfklubb.jpg + 📄 logo_sandane-golfklubb.jpg + 📄 slide_groruddalen-golfklubb_2.jpg + 📄 main_ski-golfklubb.jpg + 📄 logo_bjornefjorden-golfklubb.png + 📄 main_polarsirkelen-golfklubb.jpg + 📄 slide_krokhol-golfklubb_1.jpg + 📄 main_groruddalen-golfklubb.jpg + 📄 slide_krokhol-golfklubb_4.jpg + 📄 main_vanylven-golfklubb.jpg + 📄 main_borregaard-golfklubb.jpg + 📄 slide_sandefjord-golfklubb_5.jpg + 📄 slide_helgeland-golfklubb_2.jpg + 📄 main_hinnoy-golfklubb.jpg + 📄 slide_sunndal-golfklubb_0.jpg + 📄 logo_groruddalen-golfklubb.png + 📄 main_tingvoll-golfklubb.jpg + 📄 slide_tjome-golfklubb_3.jpg + 📄 main_lindesnes-golfklubb.jpg + 📄 slide_kongsvingers-golfklubb_5.jpg + 📄 slide_tromso-golfklubb_0.jpg + 📄 main_randaberg-golfklubb.jpg + 📄 logo_krokhol-golfklubb.png + 📄 main_smola-golfklubb.jpg + 📄 logo_sande-golfklubb.jpg + 📄 logo_oslo-golfklubb.jpg + 📄 logo_preikestolen.jpg + 📄 logo_sunnfjord-golfklubb.jpg + 📄 slide_lofoten-golfklubb_3.jpg + 📄 main_bleik-golfstrombane.jpg + 📄 slide_gumoy-golf_0.jpg + 📄 logo_modum-golfklubb.png + 📄 slide_tingvoll-golfklubb_1.jpg + 📄 logo_bodo-golfklubb.jpg + 📄 logo_nesbyen-golfklubb.png + 📄 main_selbu-golfklubb.jpg + 📄 slide_holtsmark-golfklubb_2.jpg + 📄 logo_imjelt-pitch-putt.jpg + 📄 logo_ullensaker-golfklubb.png + 📄 slide_elverum-golfklubb_1.jpg + 📄 logo_ringerike-golfklubb.jpg + 📄 slide_hakadal-golfklubb_6.jpg + 📄 slide_volda-golfklubb_4.jpg + 📄 slide_tyrifjord-golfklubb_6.jpg + 📄 main_solum-golfklubb.jpg + 📄 slide_helgeland-golfklubb_4.jpg + 📄 main_stiklestad-golfklubb.jpg + 📄 slide_stavanger-golfklubb_0.jpg + 📄 logo_vestlia-golf.jpg + 📄 slide_vestfold-golfklubb_0.jpg + 📄 logo_floro-golfklubb.jpg + 📄 logo_voss-golfklubb.jpg + 📄 slide_tyrifjord-golfklubb_8.jpg + 📄 slide_sotra-golfklubb_2.jpg + 📄 logo_jaeren-golfklubb.png + 📄 slide_moss-rygge-golfklubb_0.jpg + 📄 logo_asker-golfklubb.png + 📄 slide_bleik-golfstrombane_6.jpg + 📄 slide_bjaavann-golfklubb_3.jpg + 📄 main_hvam-golfklubb.jpg + 📄 logo_eiker-golfklubb.jpg + 📄 slide_bleik-golfstrombane_9.jpg + 📄 slide_namdal-golfklubb_0.jpg + 📄 logo_nordhaug-golfklubb.jpg + 📄 slide_borregaard-golfklubb_0.jpg + 📄 slide_kongsberg-golfklubb_5.jpg + 📄 main_hardanger-golfklubb.jpg + 📄 slide_ostmarka-golfklubb_5.jpg + 📄 logo_oppegard-golfklubb.png + 📄 slide_vradal-golfklubb_0.jpg + 📄 main_narvik-golfklubb.jpg + 📄 logo_midt-troms-golfklubb.jpg + 📄 slide_solum-golfklubb_2.jpg + 📄 slide_sunndal-golfklubb_1.jpg + 📄 slide_gjersjoen-golfklubb_1.jpg + 📄 slide_preikestolen_0.jpg + 📄 main_huseby-hanko-golfklubb.jpg + 📄 slide_holtsmark-golfklubb_4.jpg + 📄 main_larvik-golfklubb.jpg + 📄 slide_hasvik-golfklubb_1.jpg + 📄 slide_herdla-golfklubb_1.jpg + 📄 logo_kjekstad-golfklubb.jpg + 📄 main_austratt-golfklubb.jpg + 📄 slide_sandefjord-golfklubb_3.jpg + 📄 logo_hakadal-golfklubb.png + 📄 slide_bleik-golfstrombane_3.jpg + 📄 logo_vanylven-golfklubb.jpg + 📄 main_skjeberg-golfklubb.jpg + 📄 slide_hovden-golfklubb_3.jpg + 📄 slide_ostmarka-golfklubb_0.jpg + 📄 logo_tromso-golfklubb.png + 📄 main_stjordal-golfklubb.jpg + 📄 slide_frosta-golfklubb_3.jpg + 📄 main_nordvegen-golfklubb.jpg + 📄 slide_norsjo-golfklubb_1.jpg + 📄 logo_gumoy-golf.png + 📄 slide_gronmo-golfklubb_2.jpg + 📄 slide_hardanger-golfklubb_1.jpg + 📄 main_oppdal-golfklubb.jpg + 📄 slide_trondheim-golfklubb_0.jpg + 📄 main_lillestrom-golfklubb.jpg + 📄 slide_gjersjoen-golfklubb_0.jpg + 📄 slide_soon-golfklubb_1.jpg + 📄 logo_vestfold-golfklubb.jpg + 📄 slide_stavanger-golfklubb_1.jpg + 📄 main_norefjell-golfklubb.jpg + 📄 main_kongsberg-golfklubb.jpg + 📄 slide_gjovik-og-toten-golfklubb_2.jpg + 📄 logo_veierland-golfklubb.jpg + 📄 slide_soon-golfklubb_0.jpg + 📄 slide_egersund-golfklubb_6.jpg + 📄 slide_norsjo-golfklubb_0.jpg + 📄 slide_kristiansand-golfklubb_0.jpg + 📄 main_hurum-golfklubb.jpg + 📄 main_sola-golfklubb-forus.jpg + 📄 logo_mork-golfklubb.jpg + 📄 logo_molde-golfklubb.png + 📄 main_kongsvingers-golfklubb.jpg + 📄 main_sunndal-golfklubb.jpg + 📄 logo_utsikten-golfklubb.jpg + 📄 logo_austratt-golfklubb.jpg + 📄 logo_selje-golfklubb.jpg + 📄 main_stord-golfklubb.jpg + 📄 logo_sorknes-golfklubb.jpg + 📄 slide_krokhol-golfklubb_3.jpg + 📄 slide_hovden-golfklubb_4.jpg + 📄 main_preikestolen.jpg + 📄 logo_aurskog-golfpark.png + 📄 main_aurskog-golfpark.jpg + 📄 slide_mork-golfklubb_1.jpg + 📄 logo_roros-golfklubb.jpg + 📄 main_harstad-golfklubb.jpg + 📄 main_helgeland-golfklubb.jpg + 📄 slide_ogna-golfklubb_0.jpg + 📄 slide_kvinnherad-golfklubb_1.jpg + 📄 logo_haugesund-golfklubb.png + 📄 slide_bjaavann-golfklubb_0.jpg + 📄 slide_hakadal-golfklubb_3.jpg + 📄 slide_ostmarka-golfklubb_6.jpg + 📄 slide_bleik-golfstrombane_11.jpg + 📄 logo_moss-rygge-golfklubb.png + 📄 slide_borregaard-golfklubb_2.jpg + 📄 main_lofoten-golfklubb.jpg + 📄 slide_bleik-golfstrombane_5.jpg + 📄 logo_oustoen-country-club.jpg + 📄 main_oslo-golfklubb.jpg + 📄 slide_gjovik-og-toten-golfklubb_0.jpg + 📄 slide_frosta-golfklubb_1.jpg + 📄 slide_ostmarka-golfklubb_7.jpg + 📄 slide_helgeland-golfklubb_3.jpg + 📄 logo_vradal-golfklubb.png + 📄 main_salten-golfklubb-bodo-golfpark.jpg + 📄 main_rygge-flystasjon-golf-klubb.jpg + 📄 slide_trondheim-golfklubb_4.jpg + 📄 main_meland-golfklubb.jpg + 📄 slide_sotra-golfklubb_1.jpg + 📄 main_sandane-golfklubb.jpg + 📄 slide_baerum-golfklubb_0.jpg + 📄 slide_egersund-golfklubb_3.jpg + 📄 slide_frosta-golfklubb_5.jpg + 📄 logo_sandefjord-golfklubb.png + 📄 slide_egersund-golfklubb_4.jpg + 📄 slide_sandane-golfklubb_1.jpg + 📄 slide_bleik-golfstrombane_2.jpg + 📄 main_eiker-golfklubb.jpg + 📄 main_tromso-golfklubb.jpg + 📄 logo_tysnes-golfklubb.jpg + 📄 slide_hallingdal-golfklubb_4.jpeg + 📄 main_ringerike-golfklubb.jpg + 📄 main_norsjo-golfklubb.jpg + 📄 logo_byneset-golf.jpg + 📄 logo_land-golfklubb.png + 📄 slide_bleik-golfstrombane_8.jpg + 📄 logo_losby-golfklubb.png + 📄 logo_husoy-golfklubb.png + 📄 main_nittedal-golfklubb.jpg + 📄 logo_trondheim-par3golf-havstein.png + 📄 main_mork-golfklubb.jpg + 📄 slide_sleneset-golfklubb_1.jpg + 📄 logo_ekholtbruket-golfklubb.jpg + 📄 slide_hauger-golfklubb_1.jpg + 📄 main_borre-golfklubb.jpg + 📄 main_kragero-golfklubb.jpg + 📄 main_lonne-golfklubb.jpg + 📄 logo_namsos-golfklubb.jpg + 📄 slide_hallingdal-golfklubb_0.jpeg + 📄 slide_solum-golfklubb_0.jpg + 📄 main_holtsmark-golfklubb.jpg + 📄 main_oustoen-country-club.jpg + 📄 slide_hakadal-golfklubb_12.jpg + 📄 slide_gronmo-golfklubb_1.jpg + 📄 main_mjosen-golfklubb.jpg + 📄 logo_sunndal-golfklubb.jpg + 📄 logo_larvik-golfklubb.jpg + 📄 slide_ekholtbruket-golfklubb_0.jpg + 📄 main_husoy-golfklubb.jpg + 📄 logo_drammen-golfklubb.png + 📄 logo_helgeland-golfklubb.png + 📄 main_gjerdrum-golfklubb.jpg + 📄 slide_sandefjord-golfklubb_2.jpg + 📄 main_hvaler-golfklubb.jpg + 📄 logo_sunnmore-golfklubb.jpg + 📄 slide_hauger-golfklubb_0.jpg + 📄 main_naeroysund-golfklubb.jpg + 📄 slide_hakadal-golfklubb_5.jpg + 📄 logo_bamble-golfklubb.png + 📄 slide_sandane-golfklubb_0.jpg + 📄 main_bodo-golfklubb.jpeg + 📄 main_drammen-golfklubb.jpg + 📄 slide_frosta-golfklubb_4.jpg + 📄 slide_solum-golfklubb_3.jpg + 📄 slide_bleik-golfstrombane_1.jpg + 📄 main_trondheim-par3golf-havstein.jpg + 📄 logo_kongsvingers-golfklubb.jpg + 📄 slide_volda-golfklubb_3.jpeg + 📄 slide_tyrifjord-golfklubb_3.jpg + 📄 slide_hakadal-golfklubb_2.jpg + 📄 slide_hovden-golfklubb_2.jpg + 📄 slide_kongsvingers-golfklubb_4.jpg + 📄 main_arendal-omegn-golfklubb.jpg + 📄 logo_bjaavann-golfklubb.png + 📄 main_sande-golfklubb.jpg + 📄 main_ballerud-golfklubb.jpg + 📄 logo_norefjell-golfklubb.png + 📄 slide_kristiansand-golfklubb_1.jpg + 📄 main_veierland-golfklubb.jpg + 📄 logo_karmoy-golfklubb.png + 📄 logo_lofoten-golfklubb.png + 📄 slide_lofoten-golfklubb_0.jpg + 📄 logo_hurum-golfklubb.png + 📄 slide_holtsmark-golfklubb_3.jpg + 📄 logo_hemsedal-golfklubb.jpg + 📄 slide_borregaard-golfklubb_5.jpg + 📄 logo_haugaland-golfklubb.png + 📄 slide_bjornefjorden-golfklubb_1.jpg + 📄 main_notteroy-golfklubb.jpg + 📄 slide_kongsvingers-golfklubb_3.jpg + 📄 slide_kongsvingers-golfklubb_2.jpg + 📄 main_fana-golfklubb.jpg + 📄 logo_giske-golfklubb.jpg + 📄 slide_hakadal-golfklubb_11.jpg + 📄 main_nes-golfklubb-09.jpg + 📄 main_volda-golfklubb.jpeg + 📄 logo_arendal-omegn-golfklubb.png + 📄 slide_gjovik-og-toten-golfklubb_1.jpg + 📄 main_soon-golfklubb.jpg + 📄 logo_soon-golfklubb.png + 📄 slide_gumoy-golf_2.jpg + 📄 logo_alsten-golfklubb.png + 📄 main_halden-golfklubb.jpg + 📄 logo_narvik-golfklubb.jpg + 📄 logo_randaberg-golfklubb.jpg + 📄 slide_hakadal-golfklubb_10.jpg + 📄 main_ostmarka-golfklubb.jpg + 📄 logo_bleik-golfstrombane.jpg + 📄 logo_hasvik-golfklubb.png + 📄 main_floro-golfklubb.jpg + 📄 main_gronmo-golfklubb.jpg + 📄 slide_hakadal-golfklubb_7.jpg + 📄 slide_egersund-golfklubb_8.jpg + 📄 logo_atlungstad-golfklubb.png + 📄 main_sunnmore-golfklubb.jpeg + 📄 main_sleneset-golfklubb.jpg + 📄 logo_lonne-golfklubb.png + 📄 main_haugaland-golfklubb.jpg + 📄 main_egersund-golfklubb.jpg + 📄 slide_solum-golfklubb_5.jpg + 📄 slide_gamle-fredrikstad-golfklubb_1.jpg + 📄 main_sotra-golfklubb.jpg + 📄 main_trysil-golfklubb.jpg + 📄 logo_kongsberg-golfklubb.png + 📄 slide_tromso-golfklubb_1.jpg + 📄 logo_frosta-golfklubb.jpg + 📄 slide_groruddalen-golfklubb_1.jpg + 📄 logo_hafjell-golfklubb.png + 📄 logo_sola-golfklubb-solastranden.png + 📄 logo_holtsmark-golfklubb.png + 📄 slide_naeroysund-golfklubb_1.jpg + 📄 slide_groruddalen-golfklubb_0.jpg + 📄 slide_naeroysund-golfklubb_4.jpg + 📄 slide_kjekstad-golfklubb_2.jpg + 📄 slide_gronmo-golfklubb_0.jpg + 📄 slide_preikestolen_1.jpg + 📄 logo_fana-golfklubb.jpg + 📄 slide_sorknes-golfklubb_0.jpg + 📄 slide_atlungstad-golfklubb_3.jpg + 📄 main_losby-golfklubb.jpg + 📄 slide_borregaard-golfklubb_4.jpg + 📄 slide_hakadal-golfklubb_1.jpg + 📄 main_sandnes-golfklubb.jpg + 📄 slide_norsjo-golfklubb_2.jpg + 📄 main_frosta-golfklubb.jpg + 📄 slide_krokhol-golfklubb_0.jpg + 📄 logo_askim-golfklubb.png + 📄 main_stryn-golfklubb.jpg + 📄 slide_lofoten-golfklubb_5.jpg + 📄 logo_karasjok-golfklubb.jpg + 📄 slide_krokhol-golfklubb_2.jpg + 📄 slide_hakadal-golfklubb_14.jpg + 📄 logo_gjovik-og-toten-golfklubb.png + 📄 main_haugesund-golfklubb.jpg + 📄 logo_stjordal-golfklubb.jpg + 📄 logo_drobak-golfklubb.png + 📄 main_atlungstad-golfklubb.jpg + 📄 logo_trondheim-golfklubb.jpg + 📄 logo_gjersjoen-golfklubb.png + 📄 slide_lofoten-golfklubb_4.jpg + 📄 slide_helgeland-golfklubb_7.jpg + 📄 main_molde-golfklubb.jpg + 📄 slide_tyrifjord-golfklubb_7.jpg + 📄 logo_gjerdrum-golfklubb.png + 📄 main_onsoy-golfklubb.jpg + 📄 slide_trondheim-golfklubb_2.jpg + 📄 slide_mork-golfklubb_0.jpg + 📄 slide_frosta-golfklubb_2.jpg + 📄 slide_giske-golfklubb_1.jpeg + 📄 slide_moss-rygge-golfklubb_1.jpg + 📄 slide_ostmarka-golfklubb_1.jpg + 📄 slide_volda-golfklubb_0.jpeg + 📄 logo_sotra-golfklubb.jpg + 📄 main_mandal-golfklubb.jpg + 📄 logo_grenland-og-omegn-golfklubb.jpg + 📄 slide_volda-golfklubb_1.jpeg + 📄 main_imjelt-pitch-putt.jpg + 📄 logo_nittedal-golfklubb.png + 📄 main_gumoy-golf.jpg + 📄 logo_hauger-golfklubb.png + 📄 slide_hakadal-golfklubb_4.jpg + 📄 slide_ostmarka-golfklubb_4.jpg + 📄 slide_hakadal-golfklubb_0.jpg + 📄 main_surnadal-golfklubb.jpg + 📄 logo_hof-golfklubb.png + 📄 slide_sleneset-golfklubb_2.jpg + 📄 logo_halden-golfklubb.png + 📄 logo_naeroysund-golfklubb.png + 📄 logo_elverum-golfklubb.png + 📄 main_bamble-golfklubb.jpg + 📄 logo_kragero-golfklubb.png + 📄 logo_valdres-golfklubb.png + 📄 slide_tyrifjord-golfklubb_1.jpg + 📄 logo_grini-golfklubb.png + 📄 logo_lindesnes-golfklubb.jpg + 📄 slide_lofoten-golfklubb_6.jpg + 📄 main_sauda-golfklubb.jpg + 📄 main_moss-rygge-golfklubb.jpg + 📄 main_dalane-golfklubb.jpg + 📄 logo_skei-golfklubb.jpg + 📄 logo_ostmarka-golfklubb.png + 📄 slide_nesbyen-golfklubb_1.jpg + 📄 logo_stryn-golfklubb.png + 📄 main_vradal-golfklubb.jpg + 📄 slide_hovden-golfklubb_0.jpg + 📄 main_gjovik-og-toten-golfklubb.jpg + 📄 logo_hvaler-golfklubb.png + 📄 main_giske-golfklubb.jpeg + 📄 slide_herdla-golfklubb_0.jpg + 📄 main_ibestad-golfklubb.jpg + 📄 slide_kongsvingers-golfklubb_0.jpg + 📄 slide_atlungstad-golfklubb_1.jpg + 📄 logo_nordfjord-golfklubb.png + 📄 logo_eidskog-golfklubb.png + 📄 main_hitra-golfklubb.jpg + 📄 logo_dalane-golfklubb.jpg + 📄 main_kjekstad-golfklubb.jpg + 📄 logo_odda-golfklubb.jpg + 📄 logo_ballerud-golfklubb.jpg + 📄 main_klaebu-golfklubb.jpg + 📄 main_hasvik-golfklubb.jpg + 📄 logo_klaebu-golfklubb.png + 📄 slide_bleik-golfstrombane_4.jpg + 📄 logo_north-cape-golf-club.jpg + 📄 slide_tyrifjord-golfklubb_0.jpg + 📄 logo_moa-golfsenter.png + 📄 main_herdla-golfklubb.jpg + 📄 slide_gjersjoen-golfklubb_2.jpg + 📄 logo_stiklestad-golfklubb.png + 📄 slide_bleik-golfstrombane_10.jpg + 📄 logo_hovden-golfklubb.jpg + 📄 slide_frosta-golfklubb_0.jpg + 📄 logo_sirdal-fjellgolf-klubb.png + 📄 main_ekholtbruket-golfklubb.jpg + 📄 slide_salten-golfklubb-bodo-golfpark_0.jpg + 📄 main_askim-golfklubb.jpg + 📄 slide_elverum-golfklubb_0.jpg + 📄 slide_gamle-fredrikstad-golfklubb_0.jpg + 📄 main_oppegard-golfklubb.jpg + 📄 slide_sorknes-golfklubb_1.jpg + 📄 main_drobak-golfklubb.jpg + 📄 slide_kongsvingers-golfklubb_1.jpg + 📄 slide_helgeland-golfklubb_0.jpg + 📄 slide_vestfold-golfklubb_1.jpg + 📄 slide_kongsberg-golfklubb_1.jpg + 📄 slide_tjome-golfklubb_1.jpg + 📄 slide_ekholtbruket-golfklubb_1.jpg + 📄 main_bergen-golfklubb.jpg + 📄 logo_salten-golfklubb-bodo-golfpark.jpg + 📄 slide_egersund-golfklubb_1.jpg + 📄 slide_trondheim-golfklubb_7.jpg + 📄 logo_stranda-golfklubb.jpg + 📄 main_eidskog-golfklubb.jpg + 📄 logo_nes-golfklubb-09.jpg + 📄 logo_ski-golfklubb.png + 📄 logo_norsjo-golfklubb.png + 📄 slide_kongsberg-golfklubb_3.jpg + 📄 slide_ski-golfklubb_0.jpg + 📄 main_sorknes-golfklubb.jpg + 📄 main_laerdal-golfklubb.jpg + 📄 slide_giske-golfklubb_0.jpeg + 📄 main_ullensaker-golfklubb.jpg + 📄 main_midt-troms-golfklubb.jpg + 📄 main_tysnes-golfklubb.jpg + 📄 logo_namdal-golfklubb.jpg + 📄 logo_tyrifjord-golfklubb.png + 📄 slide_bjornefjorden-golfklubb_0.jpg + 📄 slide_hovden-golfklubb_5.jpg + 📄 main_tyrifjord-golfklubb.jpg + 📄 slide_sotra-golfklubb_0.jpg + 📄 main_valdres-golfklubb.jpg + 📄 logo_steinkjer-golfklubb.jpg + 📄 main_krokhol-golfklubb.jpg + 📄 main_varanger-golfklubb.jpg + 📄 logo_meland-golfklubb.png + 📄 slide_namdal-golfklubb_1.jpg + 📄 main_selje-golfklubb.jpg + 📁 src/ + 📄 struktur_dump.txt + 📄 middleware.ts + 📁 components/ + 📄 ScrapeMethodSelect.tsx + 📄 Header.tsx + 📁 config/ + 📄 constants.ts + 📁 app/ + 📄 FacilitySearch.tsx + 📄 HeroSlider.tsx + 📄 favicon.ico + 📄 globals.css + 📄 page.tsx + 📄 layout.tsx + 📁 golfbaner/ + 📁 [slug]/ + 📄 CourseDisplay.tsx + 📄 page.tsx + 📄 FacilityDetailView.tsx + 📁 admin/ + 📄 page.tsx + 📁 rediger/ + 📁 [slug]/ + 📄 EditFacilityClient.tsx + 📄 page.tsx + 📁 login/ + 📄 page.tsx + 📁 vtg/ + 📄 page.tsx + 📁 medlemskap/ + 📄 page.tsx + 📁 greenfee/ + 📄 page.tsx +📁 kode_eksport_1/ + 📄 backend_scrape_membership_py.txt + 📄 backend_scrape_greenfee_py.txt + 📄 frontend_src_components_Header_tsx.txt + 📄 backend_scrape_nsg_3_py.txt + 📄 frontend_src_app_admin_medlemskap_page_tsx.txt + 📄 frontend_next-env_d_ts.txt + 📄 frontend_src_app_layout_tsx.txt + 📄 frontend_src_app_admin_vtg_page_tsx.txt + 📄 frontend_src_app_admin_greenfee_page_tsx.txt + 📄 backend_import_urls_py.txt + 📄 frontend_src_app_page_tsx.txt + 📄 eksport_script_py.txt + 📄 frontend_src_components_ScrapeMethodSelect_tsx.txt + 📄 frontend_src_app_golfbaner_[slug]_page_tsx.txt + 📄 backend_import_wp_py.txt + 📄 frontend_src_middleware_ts.txt + 📄 backend_test_gemini_py.txt + 📄 frontend_src_app_golfbaner_[slug]_CourseDisplay_tsx.txt + 📄 frontend_next_config_ts.txt + 📄 backend_update_admin_py.txt + 📄 backend_import_nye_felter_py.txt + 📄 frontend_src_app_admin_login_page_tsx.txt + 📄 frontend_src_app_golfbaner_[slug]_FacilityDetailView_tsx.txt + 📄 backend_main_py.txt + 📄 frontend_src_app_admin_rediger_[slug]_page_tsx.txt + 📄 frontend_src_app_admin_page_tsx.txt + 📄 frontend_src_app_admin_rediger_[slug]_EditFacilityClient_tsx.txt + 📄 frontend_src_app_HeroSlider_tsx.txt + 📄 backend_test_login_py.txt + 📄 backend_create_admin_py.txt + 📄 backend_sync_greenfee_py.txt + 📄 backend_scrape_status_py.txt + 📄 backend_scrape_golfamore1_3_py.txt + 📄 frontend_src_app_FacilitySearch_tsx.txt + 📄 backend_scrape_vtg_py.txt + 📄 frontend_src_config_constants_ts.txt + 📄 backend_import_gallery_py.txt +📁 backend/ + 📄 scrape_nsg_3.py + 📄 update_admin.py + 📄 test_gemini.py + 📄 import_gallery.py + 📄 import_nye_felter.py + 📄 .env + 📄 VtG.txt + 📄 scrape_membership.py + 📄 test_login.py + 📄 sync_greenfee.py + 📄 scrape_greenfee.py + 📄 scrape_status.py + 📄 scrape_golfamore1.3.py + 📄 requirements.txt + 📄 import_wp.py + 📄 create_admin.py + 📄 scrape_vtg.py + 📄 import_urls.py + 📄 GreenFee.txt + 📄 Medlemsskap.txt + 📄 main.py + 📄 Dockerfile + 📁 public/ + 📁 media/ \ No newline at end of file diff --git a/fil-tre.txt b/fil-tre.txt index 835b76a..7d204ab 100644 --- a/fil-tre.txt +++ b/fil-tre.txt @@ -1,16 +1,10 @@ 📁 teeoff/ - 📄 nsg.txt - 📄 test_tjome.py - 📄 fil-tre.txt - 📄 losby_dump.txt 📄 seed.sql - 📄 struktur3_dump.txt 📄 eksport_script.py 📄 update_golfbox.sql 📄 docker-compose.yml 📄 schema.sql 📄 init.sql - 📄 rene_urler.txt 📁 frontend/ 📄 eslint.config.mjs 📄 next-env.d.ts @@ -689,42 +683,34 @@ 📄 page.tsx 📁 login/ 📄 page.tsx + 📁 vtg/ + 📄 page.tsx 📁 medlemskap/ 📄 page.tsx + 📁 greenfee/ + 📄 page.tsx 📁 kode_eksport_1/ - 📄 backend_scrape_membership_py.txt 📄 frontend_src_components_Header_tsx.txt - 📄 backend_scrape_nsg_3_py.txt 📄 frontend_src_app_admin_medlemskap_page_tsx.txt 📄 frontend_next-env_d_ts.txt 📄 frontend_src_app_layout_tsx.txt + 📄 frontend_src_app_admin_vtg_page_tsx.txt + 📄 frontend_src_app_admin_greenfee_page_tsx.txt 📄 frontend_src_app_page_tsx.txt 📄 eksport_script_py.txt 📄 frontend_src_components_ScrapeMethodSelect_tsx.txt 📄 frontend_src_app_golfbaner_[slug]_page_tsx.txt - 📄 backend_import_wp_py.txt 📄 frontend_src_middleware_ts.txt - 📄 test_tjome_py.txt - 📄 backend_test_gemini_py.txt 📄 frontend_src_app_golfbaner_[slug]_CourseDisplay_tsx.txt 📄 frontend_next_config_ts.txt - 📄 backend_update_admin_py.txt - 📄 backend_import_nye_felter_py.txt 📄 frontend_src_app_admin_login_page_tsx.txt 📄 frontend_src_app_golfbaner_[slug]_FacilityDetailView_tsx.txt - 📄 backend_main_py.txt 📄 frontend_src_app_admin_rediger_[slug]_page_tsx.txt 📄 frontend_src_app_admin_page_tsx.txt 📄 frontend_src_app_admin_rediger_[slug]_EditFacilityClient_tsx.txt 📄 frontend_src_app_HeroSlider_tsx.txt - 📄 backend_test_login_py.txt - 📄 backend_create_admin_py.txt - 📄 backend_sync_greenfee_py.txt - 📄 backend_scrape_status_py.txt - 📄 backend_scrape_golfamore1_3_py.txt 📄 frontend_src_app_FacilitySearch_tsx.txt 📄 frontend_src_config_constants_ts.txt - 📄 backend_import_gallery_py.txt 📁 backend/ 📄 scrape_nsg_3.py 📄 update_admin.py @@ -735,11 +721,14 @@ 📄 scrape_membership.py 📄 test_login.py 📄 sync_greenfee.py + 📄 scrape_greenfee.py 📄 scrape_status.py 📄 scrape_golfamore1.3.py 📄 requirements.txt 📄 import_wp.py 📄 create_admin.py + 📄 scrape_vtg.py + 📄 import_urls.py 📄 main.py 📄 Dockerfile 📁 public/ diff --git a/frontend/src/app/admin/page.tsx b/frontend/src/app/admin/page.tsx index 3a69fb6..1bb56fa 100644 --- a/frontend/src/app/admin/page.tsx +++ b/frontend/src/app/admin/page.tsx @@ -1,6 +1,6 @@ "use client"; /** - * TEE OFF ADMIN DASHBOARD v3.0 - THE GRAND SLAM (Alle 4 skrapere) + * TEE OFF ADMIN DASHBOARD v4.0 - KONTROLLPANEL */ import { useState, useEffect, useMemo } from 'react'; @@ -164,7 +164,7 @@ export default function AdminDashboard() { } finally { setIsSaving(false); } }; - if (loading) return
LASTER DASHBORD...
; + if (loading) return
LASTER KONTROLLPANEL...
; return (
@@ -172,7 +172,6 @@ export default function AdminDashboard() { {/* REDIGER-MODAL FOR BANESTATUS */} {editingFacility && (
- {/* ... (Modal-koden er identisk som før, ingen endringer her) ... */}

Skrape-innstillinger

@@ -246,11 +245,11 @@ export default function AdminDashboard() {
@@ -278,8 +274,8 @@ export default function AdminDashboard() {
-

Mission Control

-

Sjekker status på {filteredFacilities.length} anlegg

+

Kontrollpanel

+

Oversikt over {filteredFacilities.length} anlegg

+ {/* VELDIG SYNLIGE FANER */}
- - - - + + + +
{activeTab === 'banestatus' && ( @@ -315,7 +312,7 @@ export default function AdminDashboard() {
- + @@ -330,9 +327,9 @@ export default function AdminDashboard() { )} {activeTab === 'medlemskap' && ( <> - + - + )} @@ -340,15 +337,15 @@ export default function AdminDashboard() { <> - + )} {activeTab === 'vtg' && ( <> - - + + )} @@ -364,7 +361,7 @@ export default function AdminDashboard() { const isHighlighted = (activeTab === 'medlemskap' && hasMemDraft) || (activeTab === 'greenfee' && hasGfDraft) || (activeTab === 'vtg' && hasVtgDraft); return ( - + - + )} @@ -417,13 +414,16 @@ export default function AdminDashboard() { <> - + )} @@ -433,21 +433,24 @@ export default function AdminDashboard() { - + )}
0} onChange={handleSelectAll} /> ID AnleggPrisside (Klikk for å redigere)Medlemskap-side (Klikk for å redigere) Nåværende PriserUtkastNytt Utkast? Sist VasketGreenfee-side (Klikk for å redigere) Aktive priserUtkastNytt Utkast? Sist VasketVTG-side (Klikk for å redigere)Aktiv Info (Pris & Beskrivelse)UtkastRegistrert InformasjonNytt Utkast? Sist Vasket
handleSelectOne(f.id, e.target.checked)} /> #{f.id} @@ -408,7 +405,7 @@ export default function AdminDashboard() { Rimeligste: {f.rimeligste_alternativ ? `${f.rimeligste_alternativ},-` : '---'} {hasMemDraft ? Ja : -}{hasMemDraft ? Ja, vask! : -} {f.membership_updated_at ? new Date(f.membership_updated_at).toLocaleDateString('nb-NO') : 'Aldri'} -
+
{f.greenfee && f.greenfee.length > 0 ? f.greenfee.map((g: any, i: number) => ( -
{g.banenavn}: V: {g.pris_voksne} J: {g.pris_junior}
- )) : '---'} +
+ {g.banenavn} + V: {g.pris_voksne} J: {g.pris_junior} +
+ )) : 'Ingen priser'}
{hasGfDraft ? Ja : -}{hasGfDraft ? Ja, vask! : -} {f.greenfee_updated_at ? new Date(f.greenfee_updated_at).toLocaleDateString('nb-NO') : 'Aldri'}
- Pris: {f.vtg_pris ? `${f.vtg_pris},-` : '---'} - {f.vtg_beskrivelse || 'Ingen beskrivelse'} + Pris: {f.vtg_pris ? `${f.vtg_pris},-` : '---'} + {f.vtg_beskrivelse || 'Ingen beskrivelse registrert.'} + + {f.vtg_datoer && f.vtg_datoer.length > 0 ? `📅 ${f.vtg_datoer.length} kursdato(er)` : '📅 Ingen datoer registrert'} +
{hasVtgDraft ? Ja : -}{hasVtgDraft ? Ja, vask! : -} {f.vtg_updated_at ? new Date(f.vtg_updated_at).toLocaleDateString('nb-NO') : 'Aldri'}
- {activeTab === 'banestatus' && } - {activeTab === 'medlemskap' && hasMemDraft && Vaskeriet} - {activeTab === 'greenfee' && hasGfDraft && Vaskeriet} - {activeTab === 'vtg' && hasVtgDraft && Vaskeriet} + {activeTab === 'banestatus' && } + {activeTab === 'medlemskap' && hasMemDraft && Gå til Vaskeri} + {activeTab === 'greenfee' && hasGfDraft && Gå til Vaskeri} + {activeTab === 'vtg' && hasVtgDraft && Gå til Vaskeri} Rediger alt
diff --git a/frontend/src/app/admin/rediger/[slug]/EditFacilityClient.tsx b/frontend/src/app/admin/rediger/[slug]/EditFacilityClient.tsx index 57af68b..3904d16 100644 --- a/frontend/src/app/admin/rediger/[slug]/EditFacilityClient.tsx +++ b/frontend/src/app/admin/rediger/[slug]/EditFacilityClient.tsx @@ -110,7 +110,7 @@ const ListObjectEditor = ({ label, value, templateKeys, onChange }: { label: str
{items.map((item, idx) => (
- +
{templateKeys.map(key => (
@@ -495,39 +495,60 @@ export default function EditFacilityClient({ initialData, allFacilities }: { ini {activeTab === 'okonomi' && (
-
- - handleChange('membership_updated_at', e.target.value)} /> -
- + {/* MEDLEMSKAP */}

Medlemskap

-
handleChange('navn_standard_medlemskap', e.target.value)} />
-
handleChange('standard_medlemskap', Number(e.target.value))} />
-