web


git clone https://radroots.dev/git/web.git
Log | Files | Refs | Submodules | README | LICENSE

+page.svelte (2034B)


      1 <script lang="ts">
      2     import { app_init, db, route } from "$lib/utils/app";
      3     import { handle_err } from "@radroots/apps-lib";
      4     import { Farms } from "@radroots/apps-lib-pwa";
      5     import type {
      6         FarmExtended,
      7         IViewFarmsData,
      8     } from "@radroots/apps-lib-pwa/types/views/farms";
      9     import { gcs_to_location_basis } from "@radroots/geo";
     10     import { onMount } from "svelte";
     11 
     12     type LoadData = IViewFarmsData | undefined;
     13     let data: LoadData = $state(undefined);
     14 
     15     onMount(async () => {
     16         await app_init();
     17         data = await load_data();
     18     });
     19 
     20     const load_data = async (): Promise<LoadData> => {
     21         try {
     22             const farms = await db.farm_find_many();
     23             if ("err" in farms) return undefined;
     24 
     25             const list: FarmExtended[] = [];
     26             for (const farm of farms.results) {
     27                 const farm_locations = await db.gcs_location_find_many({
     28                     rel: {
     29                         on_farm: {
     30                             id: farm.id,
     31                         },
     32                     },
     33                 });
     34                 if ("err" in farm_locations) continue;
     35                 list.push({
     36                     farm,
     37                     location: gcs_to_location_basis(farm_locations.results[0]),
     38                 });
     39             }
     40 
     41             const data: LoadData = {
     42                 list,
     43             };
     44             return data;
     45         } catch (e) {
     46             handle_err(e, `load`);
     47         }
     48     };
     49 </script>
     50 
     51 <Farms
     52     basis={{
     53         data,
     54         callback_route: { route: `/` },
     55         on_handle_farm_add: async () => {
     56             try {
     57                 await route("/farms/add");
     58             } catch (e) {
     59                 handle_err(e, `on_handle_farm_add`);
     60             }
     61         },
     62         on_handle_farm_view: async (farm_id) => {
     63             try {
     64                 await route("/farms/info", [[`id`, farm_id]]);
     65             } catch (e) {
     66                 handle_err(e, `on_handle_farm_view`);
     67             }
     68         },
     69     }}
     70 />