LGZNYFFGJK4SH7YLVPOYQXMMCBRVJL7WVB4IUPFG2DIYDIRFDY3AC 5RT5I4RQNLQYHDWB7YH54VF4YRWY6AZ2RE26GK4BSMV27NVPXTDQC 7MCTB5G2W6IB7JQXGO2HCMRHBUYIOKXI4MBODKLAJIK66EMLC5ZQC 6NB2PU2F64XDSURKYMBECKEN7ZQ63RMDN2GL5CP74YA6HE4K3TTAC DWRIJC3G3GO36DMH65IRX4ZQQWMV34ALGAJCY36EWG6XDQDCFKLAC YG7GE7B4XADVZW6KH3YSLWTT2SWZG6TMANKXZGD7PFD7LZZKNIXAC 4HSXLC3CAM6KCESNNF3FF4BN5PUP3ZBFDDKLO7A2GO7NDINT3RIAC 3O3IMVFKGSXMVLPLZR3H6MIG3EE5PS4632QE4JMK5SVX2PVSSKDAC VNWG7QG3VM3JCF3QQ4OJAY2RFBKBWZ7JJNAISIP6YIIX6L2LGBUQC PI6D6Y5EHSXHSILBYHKRKXWXZ6H6JOR5ZTP44CXBW4LUUIREY7OQC 5Y4B4NC65MPGP63IOCQRQYAFA7SYMIFSKIH63JLXKX7VII3EKKLQC E6LXIE7VBUGCR762DFTHYZISEWYFV5E3NM3MGLT5Z7YFQQ5GTYRQC XTPX4PYLPGJAEK52LYOYHLVRCL7N5FFAEY4E3OL23LOWLYPLCILQC CALQZ74ABIY2S35P4EHAX6NY6G7YXCCVVUMTFGIWGYZQ45XFT7OQC WHPMB2J4Q5XS3G5AKEZUG6G5VIVMP5NM4LQRCDE5TESBQ5ZKY22AC 5FPD6WH3Z6WVWVHWSU276I2JF7VRJZJB7GC76UY6MDRFJ7YGUMCQC UR5RFMWCD455OQZMTDQ2MSVJUPBNEUQHOBJ2UJBDWVHRJ4SOA5NAC RLLNOBJM5LB446HWBUNDLNMG35PTUFRBRRVNHMFTX7CMQC4JSXUQC WFOI5DN6JBBPNX7T3RCENHAHMHSZMO6MNCSNH7276AYS2REGK23QC 5B42RKMDCXT74BWXB7OVBMWVAEZAVFKV6T4I3KBESZIWSNQLPQCAC 6NRS3ZPPZ6A42IEDMRLQ7LZ5TPPLFQ6AGYVS32TQRGHBIJQW4WBAC FERLNXU2QISSKOUBSPABB2ERHOWHQRI2GVKDJ352Y4B2FUXBRGRQC GBEGPEQZPTMSSEHTK5MKHFYCA5ZFGYCYURMQGWC4SJSWIPHNSPHAC O63TXA57OHFIPUDT4QQBDVXRQA64CUIT7XU4G6MSQPMDRFJPM7IAC DUF23XHRNSXFD7FSO3TSBI7LLUIKBSR6GELWNNJWOZV4YWWFEXCAC FHLPOB7EDQCT2WVTM7LIJTOLMZYZ6YWZ6RTQNZQFY3RXZP25VWBAC 5UZRGYRDZK6YCDWOQDM5WYQEDRVZTZIKCNSZ3IULLOG2D6XCVU4QC let prms: Writable<{prm: null | numbernom: stringprenom: stringsiret: stringpro: boolean}[]> = getContext('prms')let prms_modified: Writable<boolean> = getContext('prms_modified')let profils: Writable<{ type: string; conso: number }[]> =getContext('profils')let profils_modified: Writable<boolean> = getContext('profils_modified')
const prt = Object.keys(profils_)data.profils.push({ type: prt[0], conso: 0 })data.profils = data.profils
profils.update((p) => {const prt = Object.keys(profils_)p.push({ type: prt[0], conso: 0 })return p})profils_modified.set(true)updatePlot(puissance, communaute)
async function delProfil(i: number) {data.profils.splice(i, 1)data.profils = data.profilsawait updatePlot(puissance, communaute)
function delProfil(i: number) {profils.update((p) => {p.splice(i, 1)return p})profils_modified.set(true)updatePlot(puissance, communaute)
console.log('diff', min, argmin)if (!$communaute) {communaute.set({lat: b.features[argmin].geometry.coordinates[1],lng: b.features[argmin].geometry.coordinates[0],compteurs: [],derogation,})
if (min >= 0) {console.log('diff', min, argmin)if (!$communaute) {communaute.set({lat: b.features[argmin].geometry.coordinates[1],lng: b.features[argmin].geometry.coordinates[0],compteurs: [],derogation,})}$communaute!.lng =b.features[argmin].geometry.coordinates[0]$communaute!.lat =b.features[argmin].geometry.coordinates[1]
<link rel="stylesheet" href="{assets}/leaflet.css" /><link rel="stylesheet" href="{assets}/leafletfs.css" /><link rel="stylesheet" href="{assets}/leaflet-gesture-handling.min.css" />
<link rel="stylesheet" href={asset('/static/leaflet.css')} /><link rel="stylesheet" href={asset('/static/leafletfs.css')} /><linkrel="stylesheet"href={asset('/static/leaflet-gesture-handling.min.css')} />
import type { Grain } from '../../../helpers'import * as H from '../../../helpers'import type { Sample } from '../../../plot'import { sample } from '../../../plot'
import type { Grain } from '../../../../helpers'import * as H from '../../../../helpers'import type { Sample } from '../../../../plot'import { sample } from '../../../../plot'
resultat.remboursement = new Array($duree + 1)resultat.crd = new Array($duree + 1)resultat.interets = new Array($duree + 1)
resultat.remboursement = new Array(Math.ceil($duree) + 1)resultat.crd = new Array(Math.ceil($duree) + 1)resultat.interets = new Array(Math.ceil($duree) + 1)
let resultatNetData: { id: string; data: { x: number; y: number }[] }[] = [{ id: '', data: [] },]$effect(() => {resultatNetData[0] = {id: '',data: new Array($N).fill(0).map((_, i) => {return { x: an + i, y: $resultatNet[i] }}),}})
// let resultatNetData: { id: string; data: { x: number; y: number }[] }[] =// $derived(() => {// return [// {// id: '',// data: new Array($N).fill(0).map((_, i) => {// return { x: an + i, y: $resultatNet[i] }// }),// },// ]// })// data: new Array($N).fill(0).map((_, i) => {// return { x: an + i, y: $resultatNet[i] }// }),
let maxa = $state(0)let mina = $state(0)let margin = $state(1)function traceArray(f: Array<number>, n: number) {
// let maxa = $state(0)// let mina = $state(0)// let margin = $state(1)function traceArray(f: Array<number>,n: number): { maxa: number; mina: number; margin: number; c: string } {let maxa = 0let mina = 0let margin = 1
<script lang="ts">import Synthese from './Synthese.svelte'</script><Synthese />
save: async () => {console.log('Pas de sauvegarde configurée')
save: async ({ request }) => {const data = await request.formData()const d = data.get('data')if (d) {const b = JSON.parse(d as string)const nom_ = b.nom.replaceAll('/', '_')b.id = nom_try {mkdirSync(PROJETS_DIR)} catch (err) {if (err &&typeof err == 'object' &&'code' in err &&err.code != 'EEXIST') {console.error(err)}}writeFile(PROJETS_DIR + '/' + nom_ + '.json',JSON.stringify(b),(err) => {if (err) {console.error(err)}})return nom_}return null
let needsSaving = derived([simulation.modified, profils_modified, prms_modified],([$mod, $profils, $prms]) => {console.log('derived', $mod)return $mod || $profils || $prms})setContext('simulation', simulation)setContext('profils', writable(data.profils || []))setContext('prms', writable(data.prms || []))setContext('profils_modified', profils_modified)setContext('prms_modified', writable(data.prms || []))let communaute = writable(data.communaute)setContext('communaute', communaute)
const compteActive = page.route.id?.endsWith('/finances') ?? falseconst descriptionActive = page.route.id?.endsWith('/description') ?? falseconst banqueActive = page.route.id?.endsWith('/banque') ?? falseconst expertActive = page.route.id?.endsWith('/expert') ?? falseconst simuActive = page.route.id?.endsWith('/simulation') ?? falseconst syntheseActive =
const compteActive = $derived(page.route.id?.endsWith('/finances') ?? false)const descriptionActive = $derived(page.route.id?.endsWith('/description') ?? false)const banqueActive = $derived(page.route.id?.endsWith('/banque') ?? false)const expertActive = $derived(page.route.id?.endsWith('/expert') ?? false)const simuActive = $derived(page.route.id?.endsWith('/simulation') ?? false)const syntheseActive = $derived(
async function save_() {let resp = await fetch(`/grain/projet/${props.params.id}?/save`, {method: 'POST',headers: {'content-type': 'application/x-www-form-urlencoded',},body:'data=' +encodeURIComponent(JSON.stringify(<Data>{id: data.id,nom: data.nom,simulation: simulation.s,prms: data.prms,profils: data.profils,communaute: $communaute,expert: $expert,})),})let id = await resp.json()console.log('ID', id)simulation.modified.set(false)profils_modified.set(false)prms_modified.set(false)return JSON.parse(id.data)[0]}async function save() {let id: string | null = await save_()console.log('SAVED', id)if (id && id != data.id) {data.id = idgoto(resolve('/grain/projet/[id]', { id }))}}
<form action="/projet/{data.id}/?save"><button class="my-2 btn btn-sm btn-primary">Sauvegarder</button>
<form onsubmit={save}><buttonclass="my-2 btn btn-sm btn-primary"disabled={!$needsSaving}>Sauvegarder</button>
function fixNom(nom: string): string {return nom.replaceAll('/', '_')}
<script lang="ts">import GrainMain, { type Data } from './GrainMain.svelte'const { data }: { data: Data } = $props()</script><GrainMain {data} />
<a class="nav-link" href={resolve('/apropos', {})}>À propos</a></li><li class="nav-item mx-2">
import { redirect } from '@sveltejs/kit'import type { PageLoad } from './$types'export const load: PageLoad = async () => {throw redirect(301, '/grain')}
Plotly!.newPlot(plot, [soleil, somme], layout_, {responsive: true,modeBarButtonsToRemove: modeBarButtonsToRemove,displaylogo: false,displayModeBar: true,})//@ts-ignoreplot.on('plotly_relayout', (event: any) =>relayout(event, plot, Plotly, layout, has_plot, soleil, somme))
Plotly!.newPlot(plot, [soleil, somme], layout_, {responsive: true,modeBarButtonsToRemove: modeBarButtonsToRemove,displaylogo: false,displayModeBar: true,})(plot as any).on('plotly_relayout', (event: any) =>relayout(event, plot, Plotly, layout, has_plot, soleil, somme))
.git.DS_Store