Programmiersprache – die neusten Beiträge

JavaScript: Wie kann ich Daten zwischen zwei Dateien verteilen?

Hallo zusammen,

ich bitte euch um Hilfe bei meinem Problem. Und zwar muss ich im Studium eine Seite so nachbauen, dass ich mittels einer Filterauswahl eine Liste ausgeben kann.

Letztens haben wir gelernt, dass wir den Code anhand Komponenten aufteilen sollen. Ich habe also die Komponenten Titelleiste (wo der Filter, Logo und Titel enthalten sein sollte), Tabelle und Filter erstellt.

Zudem gibt es ja diese Hauptdatei App.js. In einem ersten Schritt habe ich in der Filter.js Funktionen geschrieben, um meine Daten gemäß der möglichen Suchbegriffe zu filtern und habe den aktuellen Wert, welcher vom Nutzer gewählt wird, in einem useState abgespeichert.

Wie kann ich diesen Wert nun der Tabelle.js übergeben, damit dort anhand der Filterung die Ausgabe generiert werden kann?

ChatGPT hat mir geraten, die Daten zuerst in die App.js zu schreiben. Aber wie geht das? Wie komme ich von einem Child in das Parent?

Ich denke, ihr erkennt, dass ich leider noch sehr unerfahren im Programmieren bin.

Folgend die Codes:

App.js:

const Titelseite = () => {
  return (
    <div className="titelseite-container">
      <BasicTable />
    </div>
  );
};

const Tabelle = () => {
  return (
    <div className="tabelle">
      <div>Tabellenleiste</div>
    </div>
  );
};

function App() {
  const [service_ausg, setService] = useState("");
  const [anbieter_ausg, setAnbieter] = useState("");
  const handleServiceChange = (value) => {
    setService(value);
  };
  const handleAnbieterChange = (e) => {
    setAnbieter(e);
  };

  return (
    <div className="App">
      <Titelleiste>
        <Filter
          onChangeService={handleServiceChange}
          onChangeAnbieter={handleAnbieterChange}
        />
        <BasicTable />
      </Titelleiste>
      <Titelseite />
    </div>
  );
}

export default App;

Titelleiste.js:

import Grid from "@mui/material/Grid2";
import { Filter } from "./Filter";
import { useState } from "react";
import data from "./data/tableData.json";

export const Titelleiste = () => {
  const getData = (data) => {
    console.log("Ich bin in Titelleiste und komme von Filter");
  };

  return (
    <Grid container spacing={2}>
      <Grid item size={4}>
        <p>
          <img src="geoharvester.png" width="100px" height="50px" />
        </p>
      </Grid>
      <Grid item size={4}>
        <p>Ein Katalog für schweizer Geodienste</p>
      </Grid>
      <Grid item size={4} container justifyContent="flex-end">
        <p>
          <Filter onChange={getData} />
        </p>
      </Grid>
    </Grid>
  );
};

Filter.js :

import "./App.css";
import { useState } from "react";
import InputLabel from "@mui/material/InputLabel";
import MenuItem from "@mui/material/MenuItem";
import FormHelperText from "@mui/material/FormHelperText";
import FormControl from "@mui/material/FormControl";
import Select from "@mui/material/Select";
import data from "./data/tableData.json";
import { App } from "./App";

export const Filter = ({ onChangeService, onChangeAnbieter }) => {
  let array_service = data.map((element) => element.service);
  let array_service_ausg = [...new Set(array_service)]; //* new "Set", entfernt automatisch die Duplikate und erstellt ein neues Objekt. Das neue Objekt wird mittels den "..." in eine Liste gespeichert
  let array_anbieter = data.map((element) => element.anbieter);
  let array_anbieter_ausg = [...new Set(array_anbieter)];
  const funService = (e) => {
    const [service_ausg, setService] = useState("");
    setService(e.target.value);
  };
  const funAnbieter = (e) => {
    TransferAnbieter(e.target.value);
  };

  return (
    <div>
      <form>
        <Select name="service" onChange={funService} sx={{ width: 100 }}>
          {array_service_ausg.map((service) => (
            <MenuItem value={service}>{service}</MenuItem>
          ))}
        </Select>
      </form>
      <Select name="anbieter" onChange={funAnbieter} sx={{ width: 100 }}>
        {array_anbieter_ausg.map((anbieter) => (
          <MenuItem value={anbieter}>{anbieter}</MenuItem>
        ))}
      </Select>
      <br />
    </div>
  );
};

Nach einigen Stunden, die ich bereits in die Recherche meines Problems investiert habe, danke ich euch herzlich für eure Hilfe.

Bild zum Beitrag
HTML, IT, Webseite, JavaScript, HTML5, Code, Informatik, Programmiersprache, Softwareentwicklung, Webentwicklung, Frontend, React

Ampelsimulation in Lazarus?

Sehr geehrte gutefrage-Community,

ich bin gerade an der Bearbeitung einer Ampelsimulation, jedoch funktioniert die Implementierung der drei senkrechten Kreise nicht so wie gewünscht. Für Vorschläge/Tipps der Verbesserung stehe ich Ihnen gerne offen.

Unten abgebildet ist die bisherige Programmierung der Ampelsimulation in Lazarus (Free Pascal).

unit Unit1;
{$mode objfpc}{$H+}

interface
uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
  { TAmpel }
  TAmpel = class(TForm)
    ZeichneAmpel: TButton;
    procedure ZeichneAmpelClick(Sender: TObject);
  private
    procedure ZeichneKreis (Farbe:integer);
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Ampel: TAmpel;

implementation
{$R *.lfm}

procedure Wait (time:word);
var Start: Integer;
begin
  Start := GetTickCount64;
  while GetTickCount64 - Start <= time do
    application.ProcessMessages;
end;

procedure ZeichneAmpelClick(Sender: TObject);
var
  i, x, y, radius, Abstand: integer;
begin // Grundeinstellungen
  radius := 50; // Radius der Kreise
  Abstand := 20; // Abstand zwischen den Kreisen
  x := 10 div 2; // Horizontale Position (in der Mitte des Fensters)

  // mehrere Kreise senkrecht zeichnen
  for i := 0 to 4 do // Zeichnet 5 Kreise
  begin
    y:= (i * (2 * radius + Abstand)) + radius; // Berechne vertikale Position
  end;
end;

{ TAmpel }
procedure TAmpel.ZeichneKreis(Farbe:integer);
begin
  Canvas.Pen.Color := Farbe;
  Canvas.Brush.Color := Farbe;
  Canvas.Ellipse(10, 10, 100, 100);
end;

procedure TAmpel.ZeichneAmpelClick(Sender: TObject);
begin
  ZeichneKreis(clred);
  wait(1000);
  ZeichneKreis(clyellow);
  wait(1000);
  ZeichneKreis(clgreen);
end;

end.                   
Informatik, Programmiersprache

JavaScript/html2pdf: Wieso werden die Seiten nicht richtig gedruckt?

Hi, ich möchte mit JavaScript und den Bibliotheken JsBarcode und html2pdf Barcodes generieren, einen Text oberhalb des Barcodes ausgeben und diesen dann als PDF speichern, um damit Etiketten mit Barcodes zu drucken.

Leider habe ich dabei aber das Problem, dass meine Seiten immer weiter nach oben geschoben werden und somit dann ein Label auf zwei Seiten gedruckt wird.

Kennt jemand das Problem oder kann mir dabei helfen?

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>html2pdf</title>
    <script src="https://cdn.jsdelivr.net/npm/jsbarcode@3.11.6/dist/JsBarcode.all.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js"></script>
    <style>
      .label {
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        width: 60mm;
        height: 30mm;
        margin: 0;
        padding: 0;
      }

      .label-text-center {
        text-align: center;
        margin-top: 0;
        margin-bottom: 0;
      }

      svg {
        width: auto;
        height: 60%;
      }
    </style>
  </head>
  <body>
    <div class="wrapper" id="element-to-print">
      <div class="label">
        <p class="label-text-center">headline01</p>
        <p class="label-text-center">headline01</p>
        <svg id="barcode" class="label-image-center"></svg>
      </div>
    </div>
    <script>
      // Generiere Barcodes für alle SVGs mit der Klasse "barcode"
      JsBarcode("#barcode", "5901234123457", { format: "EAN13" });

      // PDF-Optionen
      var opt = {
        margin: 0,
        filename: 'barcodes.pdf',
        image: { type: 'jpeg', quality: 0.98 },
        html2canvas: { scale: 2 },
        jsPDF: { unit: 'mm', format: [60, 30], orientation:'landscape' }
      };
      // Erstelle das PDF und speichere es
      html2pdf().set(opt).from(document.getElementById('element-to-print')).save();
    </script>
  </body>
</html>
Bild zum Beitrag
HTML, Webseite, CSS, JavaScript, HTML5, Programmiersprache, Webentwicklung, Frontend, node.js

Könnt ihr mir bei meinem Processing-Spiel helfen?

Hey, ich habe eine Frage zu einem Java-Code. Und zwar habe ich ein unfertiges Spiel gemacht, wo drei Kugeln herunterfallen und wieder oben erscheinen, falls diese ganz unten angekommen sind.

Im Programmieren bin ich noch ein Anfänger und ich habe nicht so viel Wissen dazu.

Mit den Pfeiltasten rechts und links kann man unten das Rechteck bewegen.

Die Kugeln erhalten immer eine neue Farbe, wenn sie oben neu erscheinen.

Meine zwei Fragen wären:

  1. Wie kann ich es so machen, dass, wenn eine Kugel wieder oben erscheint, nur diese vom fill-Befehl betroffen ist und somit nicht das Rechteck und alle anderen Kugeln eine neue Farbe erhalten, wenn eine Kugel oben neu erscheint (Priorität)?
  2. Wie kann ich die Bewegung vom Rechteck smoother machen? Weil wenn man zu schnell rechts und links drückt, dann laggt das und geht irgendwie in die entgegengesetze Richtung, die man drückt (optional).

Den Code habe ich in Processing geschrieben.

Ich bedanke mich schon einmal im Voraus für jede Antwort.

Hier der Code:

float x = 200; // Rechts-, Links-Wert für den Eimer
float x1 = 250; // Wo die 1. Kugel sich horizontal befindet
float y1 = 0; // Wo die 1. Kugel sich vertikal befindet
float x2 = 100; // Wo die 2. Kugel sich horizontal befindet
float y2 = 50; // Wo die 2. Kugel sich vertikal befindet
float x3 = 385; // Wo die 3. Kugel sich horizontal befindet
float y3 = 250; // Wo die 3. Kugel sich vertikal befindet

void setup() {
  size(500, 500);
}

void draw() {
  background(0, 255, 0);

  // Die fallenden Kugeln:

  // 1. Kugel
  ellipse(x1, y1, 50, 50);
  y1 = y1 + 2;

  if (y1 > 500) {
    fill(random(0, 255));
    y1 = 0;
    x1 = random(50, 450);
  }

  // 2. Kugel
  ellipse(x2, y2, 50, 50);
  y2 = y2 + 2;

  if (y2 > 500) {
    fill(random(0, 255));
    y2 = 0;
    x2 = random(50, 450);
  }

  // 3. Kugel
  ellipse(x3, y3, 50, 50);
  y3 = y3 + 2;

  if (y3 > 500) {
    fill(random(0, 255));
    y3 = 0;
    x3 = random(50, 450);
  }

  // Der Eimer:
  noStroke();
  rect(x, 400, 100, 50);

  if (keyPressed) {
    if (keyCode == LEFT && x >0) {
      x = x - 5;
    }

    if (keyCode == RIGHT && x <400) {
      x = x + 5;
    }
  }
}
Java, Code, Programmiersprache

Meistgelesene Beiträge zum Thema Programmiersprache