MUI Table body rendered in first cell when wrap table body in Accordion

Above is my code actually i have data in groups and i need to show each group in a accordion and can have only one header outside the table body when i try the above code then accordion rendered in first cell of table i don not know how i can fix this does anybody can help?

        <div>
            <TableContainer
                sx={{ ...classes.tableRoot, ...(customStyleTableContainer || {}) } as SxProps<Theme>}
            >
                <Table stickyHeader>
                    <TableHead>
                        <TableRow>
                            {headers?.map((cell: TableHeaderCell, index: number) => (
                                <TableCell
                                    key={`table-header-${index}`}
                                    sx={{
                                        ...tableHeaderCellStyle,
                                        backgroundColor: '#F4F6F8',
                                        padding: '0px'
                                    }}
                                    align={cell.align ?? 'left'}
                                    colSpan={4}
                                >
                                    <Typography variant='subtitle1' color='#212B36' sx={classes.header}>
                                        {cell.label}
                                    </Typography>
                                </TableCell>
                            ))}
                        </TableRow>
                    </TableHead>

                    {dummyData.map((group, index) => (
                        <Accordion
                            key={`accordion-${index}`}
                            expanded={expanded === `panel-${index}`}
                            onChange={toggleAccordion(`panel-${index}`)}
                            disableGutters={true}
                        >
                            <AccordionSummary
                                expandIcon={<ExpandMoreIcon />}
                                aria-controls={`panel-${index}-content`}
                                id={`panel-${index}-header`}
                                sx={{ background: 'grey' }}
                            >
                                <Typography variant='subtitle1'>{group.groupName}</Typography>
                            </AccordionSummary>
                            <AccordionDetails>
                                <TableBody>
                                    {group.data.map((row, rowIndex) => (
                                        <TableRow key={`row-${rowIndex}`}>
                                            {Object?.entries(row).map(
                                                ([key, value], index: number) =>
                                                    key !== 'id' && (
                                                        <TableCell
                                                            key={`table-cell-${index}`}
                                                            sx={{ padding: '0px' }}
                                                            colSpan={4}
                                                        >
                                                            {value}
                                                        </TableCell>
                                                    )
                                            )}
                                        </TableRow>
                                    ))}
                                </TableBody>
                            </AccordionDetails>
                        </Accordion>
                    ))}
                </Table>
            </TableContainer>
        </div>
    );```

How to create a simple web report by fetching data from the PRTG API

I want to create a simple web report that show data get prom PRTG API
can anyone help to guide me and explain about the roadmap or clue about this case.

I want to create a simple web report by fetching data from the PRTG API, displaying ping sensor data for devices already in PRTG. This web report should allow me to input additional sensors and devices by modifying and adding them later.

Unknown word (CssSyntaxError) in JSX File (react js)

I’m working on a React project and have run into an issue where ESLint is throwing an Unknown word (CssSyntaxError) when linting my JSX files. This error seems to be related to CSS parsing within JSX, but I’m not using any CSS-in-JS libraries or style-related code that should cause this error.

Here’s the content of my MyComponent2.jsx file:

import Header from "./Header";
import Footer from "./Footer";
import Food from "./Food";

function App() {
  return (
    <>
      <Header></Header>
      <Food></Food>
      <Footer></Footer>
    </>
  );
}

export default App;

And here’s the error message I receive when running the lint script from my package.json:

    "resource": "/e:/Web Projects/Learning React/React js/my-react-app/src/MyComponent2.jsx",
    "owner": "stylelint",
    "code": "CssSyntaxError",
    "severity": 8,
    "message": "Unknown word (CssSyntaxError)",
    "source": "stylelint",
    "startLineNumber": 1,
    "startColumn": 10,
    "endLineNumber": 1,
    "endColumn": 10
}]

The package.json file is as follows:

{
  "name": "my-react-app",
  "private": true,
  "version": "0.0.0",
  "type": "module",
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0",
    "preview": "vite preview"
  },
  "dependencies": {
    "react": "^18.2.0",
    "react-dom": "^18.2.0"
  },
  "devDependencies": {
    "@types/react": "^18.2.43",
    "@types/react-dom": "^18.2.17",
    "@vitejs/plugin-react": "^4.2.1",
    "eslint": "^8.55.0",
    "eslint-plugin-react": "^7.33.2",
    "eslint-plugin-react-hooks": "^4.6.0",
    "eslint-plugin-react-refresh": "^0.4.5",
    "vite": "^5.0.8"
  }
}

I’ve tried the following troubleshooting steps:

  • Ensuring there are no typos or syntax errors in my JSX or any CSS.
  • Checking the configuration of ESLint and any associated plugins.
  • Looking for any accidental CSS within my JSX files.

Despite these efforts, the error persists. I’m not sure why ESLint is flagging this as a Stylelint error when I’m not using Stylelint in my project. Any insights or suggestions on how to resolve this would be greatly appreciated.

How to read GPU buffers on CPU (WebGPU, Javascript)

As the title suggests I need help reading buffers used on GPU on the CPU.

I am trying to accomplish mouse-picking for the objects drawn on screen.

To do this, I have created a Float32Array with the size (canvas.width * canvas.height) and I fill it with object ID inside the fragment shader.

I’m trying to use ‘copyBufferToBuffer’ to copy the GPU buffer to a mapped buffer,a long with some Async stuff.

I’m super new to this, (literally 2 days new.) The following is my code that handles all the copying. I keep getting an error in the console on Edge which says, ” Uncaught (in promise) TypeError: Failed to execute ‘mapAsync’ on ‘GPUBuffer’: Value is not of type ‘unsigned long’. “

async function ReadStagingBuffer(encoder){

  encoder.copyBufferToBuffer(
    entityRenderTextureBuffer[0],
    0,
    entityRenderTextureStagingBuffer,
    0,
    entitiesRenderArray.byteLength,
  );

  await entityRenderTextureStagingBuffer.mapAsync(
    GPUMapMode.read,
    0,
    entitiesRenderArray.byteLength,
  ).then(()=>{
    const copyArrayBuffer = entityRenderTextureStagingBuffer.getMappedRange(0, entitiesRenderArray.byteLength);
    const data = copyArrayBuffer.slice(0);
    entityRenderTextureStagingBuffer.unmap();
    console.log(new Float32Array(data));
  }) 
}

I don’t understand what the error is since the entity ids are defined as f32 storage with read_write capability in the shader.

  @group(0) @binding(4) var<storage, read_write> entityID : array<f32>;

I’ve tried changing the type of variable in the shader to a u32 instead of f32 but it still gives me the same error.
I tried to use a single read write value instead of a large array of values and it still gives me the same error.

HOW DO YOU if you then try to render “register.ejs”?

IS THIS POSSIBLE?

HOW DO I DO THIS THE RIGHT WAY?

From index . html page:

<a href="signup.html" class="auth-link">Sign Up</a>

TO

signup . html page:

<form action="/users/register" method="POST">

TO finally,

app . js page:

app.get("/users/register", checkAuthenticated, (req, res) => {
  res.render("register.ejs");
});

HTTP ERROR 405

THANKS!

how to handle interactions between two streaming rendered component in Nextjs

Streaming is a good feature in Nextjs, it improve my app’s FCP by separate big chunk into small chunks. but i meet a problem when two streaming rendered component need to interact.
example:

// popup component
function Popup({ popupInfo, visible }) {
  return <>{visible && <div className="popup-comp">{popupInfo}</div>}</>;
}

// page component
function Page() {
  const [pageInfo, setPageinfo] = useState();
  const [popupInfo, setPopupInfo] = useState();

  const [visible, setVisible] = useState(false);

  useEffect(() => {
    fetchPageInfo().then(setPageinfo);
  }, []);

  useEffect(() => {
    fetchPopupInfo().then(setPopupInfo);
  }, []);

  return (
    <div className="page">
      {pageInfo}
      <button onClick={() => setVisible(true)}>open popup</button>
      <Popup visible={visible} popupInfo={popupInfo}></Popup>
    </div>
  );
}

As shown above, the Popup Component is nested in Page Component, when i click the button it will be shown on the screen. besides, the pageInfo and popupInfo is loaded in useEffect, as we all know, this is a inefficient way to load data.
Fortunately, we can use SSR to load data in sever. furthermore, the pageInfo and popupInfo is independent hence i can use streaming to load these two components independently. but what makes me confused is that how to click button to make the popup visible and how to close it ? or this example is not the correct scene of streaming ?

async function SSRPopup({ visible }) {
  const popupInfo = await fetchPopupInfo();

  return <>{visible && <div className="popup-comp">{popupInfo}</div>}</>;
}

function Page({ pageInfo }) {
  const [visible, setVisible] = useState(false);

  return (
    <div className="page">
      {pageInfo}
      <button onClick={() => setVisible(true)}>open popup</button>
    </div>
  );
}

async function SSRPage() {
  const pageInfo = await fetchPageInfo();

  return <Page pageInfo={pageInfo}></Page>;
}

function Home() {
  return (
    <>
      <Suspense>
        <SSRPage></SSRPage>
      </Suspense>

      <Suspense>
        <SSRPopup></SSRPopup>
      </Suspense>
    </>
  );
}

Chrome auto job apply extension

I am working on the chrome extension for auto jobs apply on indeed and encountering this issue.
I’m encountering an issue where, upon setting a radio button’s checked attribute to true using JavaScript, the radio button appears to be selected. However, when I subsequently click a continue button on the page, the selected radio button’s state seems to vanish
Is there a way to ensure that the selected radio button remains in its checked state even after interacting with other elements on the page, such as continue buttons?
this is source code that I am using currently.
I was tried to solve it various ways but always upon clicking the continue button radio input vanished just in search of a solution though which clicking on the continue button input remain same so I can go further

function clickNoOnRadioButtons() {
  const radioButtons = document.querySelectorAll('input[type="radio"]');
  radioButtons.forEach(radioButton => {
    // Check if the radio button value is "0" (representing "No")
    if (radioButton.value === "0") {
      // Set the radio button to checked (No option)
      radioButton.checked = true;
      radioButton.dispatchEvent(new Event('click')); // Dispatch click event
      console.log('Selected "No" option for radio button:', radioButton);
    }
  });
}


function clickContinueButton() {
  const continueButton = document.querySelector('#ia-container > div > div.css-12qwcfa.eu4oa1w0 > div > div > div.css-w93e9b.e37uo190 > div.css-6e23tm.eu4oa1w0 > div > div > main > div.ia-BasePage-footer.dd-privacy-allow > div > button');
  if (continueButton) {
    continueButton.click();
    console.log('Clicked on continue button.');
  } else {
    console.log('Continue button not found.');
  }
}

Error: NJS-098: 16 positional bind values are required but 5 were provided

I am facing below error while executing sql query mentioned in the code snippet.
I am already providing all required bind parameters but not able to understand why I need to pass them repeatedly.
Official documentation also mentions that bind parameters needs to appear only once in bind object even if it is used many times in sql.

Error: NJS-098: 16 positional bind values are required but 5 were provided

Below are the node and oracledb versions I am using.

node version – 20.10.0
oracledb version – 6.3.0

import { dashboardRecord, dashboardRecordsRequest, dashboardRecordsResponse } from "datamodel/dashboard/dashboard";
import { logger } from "logger/logger";
import * as OracleDB from "oracledb";

export async function getActiveRequestRecords(dashboardRecordsRequest: dashboardRecordsRequest): Promise<dashboardRecordsResponse> {
    const p_entityname: OracleDB.BindParameter = { dir: OracleDB.BIND_IN, val: dashboardRecordsRequest.entityName, type: OracleDB.STRING };
    const p_sortby: OracleDB.BindParameter = { dir: OracleDB.BIND_IN, val: dashboardRecordsRequest.sortBy, type: OracleDB.STRING };
    const p_sortOrder: OracleDB.BindParameter = { dir: OracleDB.BIND_IN, val: dashboardRecordsRequest.sortOrder, type: OracleDB.STRING };
    const p_startindex: OracleDB.BindParameter = { dir: OracleDB.BIND_IN, val: dashboardRecordsRequest.startIndex, type: OracleDB.NUMBER };
    const p_pagesize: OracleDB.BindParameter = { dir: OracleDB.BIND_IN, val: dashboardRecordsRequest.pageSize, type: OracleDB.NUMBER };
    const p_totalrecords: OracleDB.BindParameter = { dir: OracleDB.BIND_OUT, type: OracleDB.NUMBER };
    const p_activerecords: OracleDB.BindParameter = { dir: OracleDB.BIND_OUT, type: OracleDB.CURSOR };
    const bindParams: OracleDB.BindParameter[] = [
        p_entityname,
        p_sortby,
        p_sortOrder,
        p_startindex,
        p_pagesize,
        p_totalrecords,
        p_activerecords
    ];
    const execOptions: OracleDB.ExecuteOptions = { outFormat: OracleDB.OUT_FORMAT_OBJECT, resultSet: true };

    const recordsSQL: string = `SELECT
                                    requestnumber,
                                    requeststatus,
                                    requestor,
                                    pendingwith,
                                    processtype,
                                    actiondate
                                FROM
                                    requests
                                WHERE
                                    ( ( upper(:p_entityname) = 'HR'
                                            AND processtype IN ( 'PROCTYPE1', 'PROCTYPE2' ) )
                                        OR ( upper(:p_entityname) = 'MANAGER'
                                            AND processtype NOT IN ( 'PROCTYPE1', 'PROCTYPE2' ) ) )
                                        AND AND upper(requeststatus) = 'PENDINGAPPROVAL'
                                ORDER BY
                                    ( CASE WHEN lower(:p_sortorder) = 'desc' AND lower(:p_sortby) = 'requestnumber' THEN requestnumber END ) DESC,
                                    ( CASE WHEN lower(:p_sortorder) = 'asc' AND lower(:p_sortby) = 'requestnumber' THEN requestnumber END ) ASC,
                                    ( CASE WHEN lower(:p_sortorder) = 'desc' AND lower(:p_sortby) = 'processtype' THEN processtype END ) DESC,    
                                    ( CASE WHEN lower(:p_sortorder) = 'asc' AND lower(:p_sortby) = 'processtype' THEN processtype END ) ASC,    
                                    ( CASE WHEN lower(:p_sortorder) = 'desc' AND lower(:p_sortby) =  'actiondate' THEN actiondate END ) DESC,
                                    ( CASE WHEN lower(:p_sortorder) = 'asc' AND lower(:p_sortby) =  'actiondate' THEN actiondate END ) ASC
                                OFFSET :p_startindex ROWS FETCH NEXT :p_pagesize ROWS ONLY`;

    try {
        const dbConnection = await OracleDB.getConnection('requestpool');
        const recordsResult = await dbConnection.execute(recordsSQL, bindParams, execOptions);
        const recordsResultSet = await recordsResult.resultSet?.getRows();
        console.log(recordsResultSet);
    } catch (err) {
        logger.error(err);
        console.error(err);
    }
}

How do I set limit for an image moving?

I am making a Maps website like Google Map. I found a way to drag an image(div) to move. But I don’t want it to go beyond the screen. Once it goes beyond, the white background shows up. I want to set limit for the image so when the edge of the image hits the edge of the window, it can not move. What I want is not something to keep the image inside of a container, because the image is bigger than the window and how it worrks is moving the image around.

html

<!DOCTYPE html>
<html lang="en">
<head>
    <link rel="stylesheet" href="css.css">
    <script type="text/javascript" src="javascript.js"></script>
</head>
<body>
    
    <div class="container"> 
        <div class="draggable" id="dragMe">
            <img src="Texture/test map.png">
        </div>
      </div>

</body>

css

* {
    box-sizing: border-box;
}

html, body {
    margin: 0;
    padding: 0;
}

body {
    height: 100vh;
    width: 100vw;

    overflow-x: hidden;
    overflow-y: hidden;
}

img {
    -webkit-user-drag: none;
    -khtml-user-drag: none;
    -moz-user-drag: none;
    -o-user-drag: none;
}

.container {
    align-items: center;
    display: flex;
    justify-content: center;

    height: 100%;
    width: 100%;

    border: 1px solid #cbd5e0;
}

.draggable {
    cursor: pointer;
    position: absolute;
    user-select: none;

    align-items: center;
    display: flex;
    justify-content: center;

    border: 1px solid #cbd5e0;
}

javascript

document.addEventListener('DOMContentLoaded', function () {
    let x = 0;
    let y = 0;

    const ele = document.getElementById('dragMe');

    const mouseDownHandler = function (e) {
        x = e.clientX;
        y = e.clientY;

        document.addEventListener('mousemove', mouseMoveHandler);
        document.addEventListener('mouseup', mouseUpHandler);
    };

    const mouseMoveHandler = function (e) {
        const dx = e.clientX - x;
        const dy = e.clientY - y;

        ele.style.top = `${ele.offsetTop + dy}px`;
        ele.style.left = `${ele.offsetLeft + dx}px`;

        x = e.clientX;
        y = e.clientY;
    };

    const mouseUpHandler = function () {
        document.removeEventListener('mousemove', mouseMoveHandler);
        document.removeEventListener('mouseup', mouseUpHandler);
    };

    ele.addEventListener('mousedown', mouseDownHandler);
});

Convert scene from unrealengine to threejs

I tried to export the scenes from the Unreal Engine to GLTF and then import them into ThreeJS for application. The model and materials were successfully imported, but I baked the lighting maps in the Unreal Engine and exported them in GLTF. However, I cannot parse them in ThreeJS. The Unreal Engine has its own method, and I want to know how to apply the lighting maps correctly because my workflow can only use the Unreal Engine as content export.

I hope you can help me, I am very anxious

Flask server responding with “Method Not Allowed” error for POST request to “/predict” endpoint

I have a Flask server with an endpoint “/predict” configured to handle POST requests. However, when I send a POST request to this endpoint from my frontend, the server responds with a “Method Not Allowed” error (HTTP status code 405). The frontend code is correctly sending a POST request, and CORS is configured properly. I expect the server to accept the POST request and return a response with the predicted result.

Failed to load resource: the server responded with a status of 405 (Method Not Allowed)
chatbot.js:65 Error: SyntaxError: Unexpected end of JSON input
at chatbot.js:57:22

I verified that the frontend code is sending a POST request to the correct endpoint (“/predict”).
I also confirmed that CORS is correctly configured on the Flask server.

How can I pass information from one html page to another with simply linked lists?

Hola ¿Qué tal? Buenas noches, espero que se encuentren bien.
Tengo una duda acerca de Listas Enlazadas Simples.
¿Cómo puedo hacer para que en una página HTML (trabajador.html) a través del registro de un coche se clickea un boton y esa información de registro se vaya a otra pagina HTML (admin.html) y se imprima dicha información en pantalla?
Adjunto el código, gracias por la ayuda.

Main.js

//Lista enlazada

class Node {
    constructor(dato, siguiente = null) {
      this.dato = dato;
      this.siguiente = siguiente;
    }
}
  
  // crea/obtiene/remover nodos de la listas enlazasas
class ListaEnlazada {
    constructor() {
      this.head = null;
      this.tamano = 0;
    }
  
    // insertar el primer nodo
    insertarPrimero(dato) {
      this.head = new Node(dato, this.head);
      this.tamano++;
    }
  
    // insertar el ultimo nodo
    insertarUltimo(dato) {
      let node = new Node(dato);
      let actual;
  
      // si esta vacion hacerlo la cabecera
      if (!this.head) {
        this.head = node;
      } else {
        actual = this.head;
  
        while (actual.siguiente) {
          actual = actual.siguiente;
        }
  
        actual.siguiente = node;
      }
  
      this.tamano++;
    }
  
    // insertar un indice
    insertarEn(dato, indice) {
      //  si el indice esta fuera de rango
      if (indice > 0 && indice > this.tamano) {
        return;
      }
  
      // si es el primer indice
      if (indice === 0) {
        this.insertarPrimero(dato);
        return;
      }
  
      const node = new Node(dato);
      let actual, anterior;
  
      // hacer la cabeza el nodo actual
      actual = this.head;
      let contador = 0;
  
      while (contador < indice) {
        anterior = actual; // bid abntes de indice
        contador++;
        actual = actual.siguiente; // Nodo despues del indice
      }
  
      node.siguiente = actual;
      anterior.siguiente = node;
  
      this.tamano++;
    }
  
    // obtene run indice
    obtenerEn(indice) {
      let actual = this.head;
      let contador = 0;
  
      while (actual) {
        if (contador == indice) {
          //console.log(actual.dato);
          return actual.dato;
        }
        contador++;
        actual = actual.siguiente;
      }
  
      return null;
    }
  
    // remover el indice
    removerEn(indice) {
      if (indice > 0 && indice > this.tamano) {
        return;
      }
  
      let actual = this.head;
      let anterior;
      let contador = 0;
  
      // remover el primer
      if (indice === 0) {
        this.head = actual.siguiente;
      } else {
        while (contador < indice) {
          contador++;
          anterior = actual;
          actual = actual.siguiente;
        }
  
        anterior.siguiente = actual.siguiente;
      }
  
      this.tamano--;
    }
  
    // limpiar lista
    limpiarLista() {
      this.head = null;
      this.tamano = 0;
    }
  
    // imprmir los datos de la lista
    printListdato() {
      let actual = this.head;
  
      while (actual) {
        console.log(actual.dato);
        actual = actual.siguiente;
      }
    }
}


// Declara aquí las clases

class Automovil {
    constructor(id, marca, modelo, placas, descripcion) {
        this.id = id;
        this.marca = marca;
        this.modelo = modelo;
        this.placas =  placas;
        this.descripcion = descripcion;

    }

}

class Empleado {
    constructor(usuario, password) {
        this.usuario = usuario;
        this.password = password;
    }

    accederSistema(usuario, password) {
        this.bandera = false;

        if (usuario === this.usuario && password === this.password) {
            this.bandera = true;
        }
        return this.bandera;
    }
}

class Servicio {
    constructor(nombre, costo) {
        this.nombre = nombre;
        this.costo = costo;
    }

    editarPropiedades(nombre, costo) {
        this.nombre = nombre;
        this.costo = costo;
    }
}


// Logica del Programa

const administrador = new Empleado('Administrador','admin1');
const trabajador = new Empleado('Trabajador', 'trabaja1');

function obtenerDOM(id) {
    let valor = document.getElementById(id).value;
    return valor;
}

//Login
function entrar(){
    let usuario = obtenerDOM('usuario');
    let password = obtenerDOM('password');

    //Validar las credenciales de acceso
    let accesoAdmin = administrador.accederSistema(usuario,password);
    let accesoTrabaja = trabajador.accederSistema(usuario,password);
    
    if (accesoAdmin) {
        //Acceso correcto para el admin
        window.location = "admin.html"
    } else if (accesoTrabaja) {
        //Si no es admin, acceso correcto para el trabajador
        window.location = "trabajador.html"
    } else {
        
    }

}

// Logica para el administrador

const listaServicios = new ListaEnlazada();

//Cargar servicios
const servicio0 = new Servicio('Cambio de aceite', 750);
listaServicios.insertarUltimo(servicio0);
const servicio1 = new Servicio('Revisión y ajuste del sistema de frenos', 1500);
listaServicios.insertarUltimo(servicio1);
const servicio2 = new Servicio('Rotación de neumaticos', 300);
listaServicios.insertarUltimo(servicio2);
const servicio3 = new Servicio('Alineación y balanceo', 600);
listaServicios.insertarUltimo(servicio3);
const servicio4 = new Servicio('Mantenimiento del sistema de enfriamiento', 1000);
listaServicios.insertarUltimo(servicio4);
const servicio5 = new Servicio('Cambio de correas', 500);
listaServicios.insertarUltimo(servicio5);
const servicio6 = new Servicio('Mantenimiento del sistema de indiección de combustible', 1000);
listaServicios.insertarUltimo(servicio6);
const servicio7 = new Servicio('Cambio de baterías', 200);
listaServicios.insertarUltimo(servicio7);
const servicio8 = new Servicio('Mantenimiento del sistema de suspencion', 1100);
listaServicios.insertarUltimo(servicio8);
const servicio9 = new Servicio('Remplazo de fluidos', 500);
listaServicios.insertarUltimo(servicio9);


//Opcion de cargar nuevo servicio 
function nuevoServicio() {
    //Hacer que aparesca estos campos
    let nombre = obtenerDOM('nombreServicio');
    let costo = parseFloat(obtenerDOM('costoServicio'));

    const servicio = new Servicio(nombre,costo);
    listaServicios.insertarUltimo(servicio);

    //Actualizar la tabla de servicios
}

//Opcion editar servicios
function editarServicio() {
    //seleccionar un servicio
    //buscarlo en la lista 
    //editar sus propiedades
    let nombre = obtenerDOM('nombreServicio');
    let costo = parseFloat(obtenerDOM('costoServicio'));

    //listaServicios.Obteneren(indice).editarPropiedades(nombre,costo);

    //Actualizar la tabla de servicios
}

function verServicios() {
    //mostrar tabla de servicios
}

function verServiciosContratados() {
    //sumar costos
    

}

Trabajador.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Trabajador de Taller Mecánico</title>
</head>
<body>
    <h1>Datos del coche</h1>
    <p>
        <label for="marca">Marca del coche: </label>
        <select name="" id="marca">
            <option value="">Chevrolet</option>
            
            <option value="">Ford</option>
            
            <option value="">Toyota</option>
            
            <option value="">Nissan</option>
            
            <option value="">Volkswagen</option>
            
            <option value="">Honda</option>
            
            <option value="">Mercedes-Benz</option>
            
            <option value="">BMW</option>
            
            <option value="">Audi</option>
            
            <option value="">Hyundai</option>
            
            <option value="">Fiat</option>
            
            <option value="">Peugeot</option>
            
            <option value="">Renault</option>
            
            <option value="">Mitsubishi</option>
            
            <option value="">Subaru</option>
            
            <option value="">Kia</option>
            
            <option value="">Volvo</option>
            
            <option value="">Land Rover</option>
            
            <option value="">Jeep</option>
            
            <option value="">RAM</option>
            
            <option value="">Dodge</option>
            
            <option value="">GMC</option>
        </select>
    </p>

    <p>
        <label for="modelo">Modelo del coche: </label>
        <input type="text" id="modelo">
    </p>

    <p>
        <label for="placas">Número de Placas: </label>
        <input type="text" id="placas" maxlength="7" >
    </p>

    <p>
        <label for="descripcion">Descripción del problema: </label>
        <input type="text">
    </p>

    <label for="servicios">Servicios por realizar: </label>
    <br>
    <br> Cambio de aceite $750 <input type="checkbox" name="" id="">
    <br>
    <br> Revision y ajuste del sistema de frenos $1,500 <input type="checkbox" name="" id="">
    <br>
    <br> Rotación de neumáticos $300 <input type="checkbox" name="" id="">
    <br>
    <br> Alineación y balanceo $600 <input type="checkbox" name="" id="">
    <br>
    <br> Mantenimiento del sistema de enfriamento $1000 <input type="checkbox" name="" id="">
    <br>
    <br> Cambio de correas $500 <input type="checkbox" name="" id="">
    <br>
    <br> Mantenimieto del sistema de indiección de combustible $1,000 <input type="checkbox" name="" id="">
    <br>
    <br> Cambio de baterías $200 <input type="checkbox" name="" id="">
    <br>
    <br> Mantenimiento del sistema de suspención $1,100 <input type="checkbox" name="" id="">
    <br>
    <br> Remplazo de fluidos $500 <input type="checkbox" name="" id="">

    <p>
        <label for="servicioExt">Servicio extra: </label>
        <br>
        Tipo de servicio: <input type="text" id="servicioExt">
        <br>
        Precio: <input type="number" id="precioExtr">
    </p>






</body>
</html>

admin.html

<!DOCTYPE html>
<html lang="es">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width">
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Nunito+Sans:ital,opsz,wght@0,6..12,200..1000;1,6..12,200..1000&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="admin.css">
    <title>Administrador</title>
    <script src="main.js"></script>
</head>

<body>

  <header>
    <h1>Bienvenido Administrador</h1>
  </header>

  <main>
    
    <div class="tablas">
      
      <section class="vista-tablas">
        <h2>Servicios disponibles</h2>
        <div class="rectangulo">
          <table class="tabla">
            <tr>
              <th>Nombre del servicio</th>
              <th>Costo MXN</th>
            </tr>
            <tr>
              <td>gola</td>
              <td>Costo MXN</td>
            </tr>
            <tr>
              <td>gola</td>
              <td></td>
            </tr>
            <tr>
              <td>gola</td>
              <td></td>
            </tr>
            <tr>
              <td>gola</td>
              <td></td>
            </tr>
            <tr>
              <td>gola</td>
              <td></td>
            </tr>
            <tr>
              <td>gola</td>
              <td></td>
            </tr>
            <tr>
              <td>gola</td>
              <td></td>
            </tr>
            <tr>
              <td>gola</td>
              <td></td>
            </tr>
            <tr>
              <td>gola</td>
              <td></td>
            </tr>
            <tr>
              <td>gola</td>
              <td></td>
            </tr>
          </table>
        </div>
      </section>
      
      <section class="vista-tablas">
        <h2>Servicios del dia</h2>
        <div class="rectangulo">
          <table class="tabla">
            <tr>
              <th id="nombre">Nombre del servicio</th>
              <th id="costo">Costo MXN</th>
              <th>ID</th>
              <th>Horario</th>
            </tr>
            <tr>
              <td>hola</td>
              <td></td>
              <td></td>
              <td></td>
            </tr>
          </table>
        </div>
      </section>

    </div>

    <div class="botones">

      <section class="btns-servDispo">
        <div class="btn-izquierda">
          <button class="btnNegros">Agreagar Servicio</button>
        </div>
        <div class="btn-derecha">
          <button class="btnBlancos" id="editarServicio">Editar Servicio</button>
          <button class="btnBlancos">Eliminar Servicio</button>
        </div>   
      </section>

      <section class="btns-serDia">
        <div class="btn-izquierda">
          <button class="btnBlancos" id="moverArriba">Mover Arriba</button>
          <button class="btnBlancos">Mover Abajo</button>
        </div>
        <div class="btn-derecha">
          <button class="btnBlancos" id="cancelarServicio">Cancelar Servicio</button>
          <button class="btnNegros">Cambiar horario</button>
        </div>
      </section>

    </div>

    <div class="formularios">

      <section class="form1">
        <form action="">
          <label for="nombreServicio">Nombre del servicio: </label>
          <input type="text" id="nombreServicio" placeholder="Cambio de aceite">
          <label for="costoServicio">Costo del servicio: </label>
          <input type="number" id="costoServicio" placeholder="00.00">
          <input type="button" value="Guardar" class="btnNegros">
        </form>
      </section>

      <section class="form2">
        <form action="">
          <label for="nombreServicio">Ingrese el horario: </label>
          <input type="time" id="horario">
          <input type="button" value="Guardar" class="btnNegros">
        </form>
      </section>

    </div>

  </main>

  <footer>
    <button class="btnBlancos" id="volver">Volver</button>
  </footer>
</html>

Necesito ayuda ya que soy inexperto en este tema