Why does my custom JavaScript conflict with WordPress theme scripts even when enqueued properly?

I’m developing a Ceiling Fan Size Calculator for my WordPress site Hampton Bay. My custom JavaScript is conflicting with the theme’s built-in JavaScript. Specifically, the calculator script either doesn’t load properly or gets overridden by the theme’s JavaScript. I see no errors in the browser console, but the custom functionality isn’t working.

I enqueued the script using the wp_enqueue_scripts function in functions.php to avoid conflicts:

function custom_enqueue_scripts() {
    wp_enqueue_script('custom-calculator', get_template_directory_uri() . '/js/custom-calculator.js', array('jquery'), '1.0', true);
}
add_action('wp_enqueue_scripts', 'custom_enqueue_scripts');

I expected this to resolve the conflict, but the issue persists. I’ve researched similar issues but haven’t found a working solution. Any ideas on how I can debug or resolve this conflict?

How to add a dice into branching scenario

I have already coded my HTML, CSS and JavaScript for school project relating to branching scenarios. I want to add a dice in a few places to make the game more interactive. However I can’t seem to make it work because whenever I try to add the dice at id: 19, 23, 29 and 34 in JS the whole thing stops working.

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Pros._VS_Cons!</title>
    <link rel="stylesheet" href="css/style.css">
    <script src="script.js" defer></script>
</head>

<body>
    <img src="img/bg_1-100.jpg" alt="retro baggrund af windows 95" aria-hidden="true" class="bg">
    <header id="header">

    </header>
    <main class="window">
        <div class="branch">
            <div id="heading">Heading</div>
            <div id="txt">Text</div>
            <div id="buttons-container">
                <button class="btn">option_1</button>
                <button class="btn">option_2</button>
                <button class="btn">option_3</button>
            </div>

        </div>
    </main>

</body>

</html>
"use strict";
const heading_element = document.getElementById('heading'); //laver en heading, relevant på nogle af objecterne
const txt_element = document.getElementById('txt'); //henter de elementer der skal kunne ændres for hver skift
const buttonsContainer = document.getElementById('buttons-container'); //henter knapperne så de kan justeres alt efter om der skal være 2 eller 3

//Array med objecter(som indeholder array)
const steps = [//et array
    {
        id: 0,//med et object
        heading: "Pros. VS Cons",
        txt: "En beslutningsrejse",
        options: [ //med et array
            { target: 1, txt: "Regler" },
            { target: 2, txt: "Start" }
        ]
    },
    {
        id: 1,
        heading: "Regler",
        txt: "Spillet bygger på princippet “Affordable loss” som omhandler entreprenørskab. I spillet skal du tage de valg som du selv føler passer bedst til dig og dine ideér, du vil undervejs skulle tage valg, som enten koster dig penge eller øger din indkomst. Alt efter hvilke valg du tager, kan du også få en ekstra chance undervejs til at tjene lidt ekstra i form af et terning kast.",
        options: [
            { target: 2, txt: "Start spil" }
        ]
    },
    {//spillet/testen starter med dette
        id: 2,
        txt: "Du skal til at starte din første virksomhed op. Din start kapital er: 100 $. Du vil blive præsenteret for forskellige scenarier, med to svar valgmuligheder, hvor du træffer valget. ",
        options: [
            { target: 3, txt: "Næste" }
        ]
    },
    {//første gren
        id: 3,
        txt: "Du har startet din virksomhed, men inden du kan komme rigtig i gang skal du beslutte dig om du vil arbejde hjemme fra eller leje et lokale.",
        options: [
            { target: 4, txt: "Du ønsker at arbejde hjemmefra." },
            { target: 5, txt: "Du ønsker at leje dig ind i et kontorfællesskab." }
        ]
    },
    {
        id: 4,
        txt: "Du har valgt at starte din virksomhed op derhjemme og har nu fået indrettet dit hjemmekontor. Dertil har du også tilmeldt dig diverse start-up forums, hvor du vil have mulighed for sparing og lignende.",
        options: [
            { target: 6, txt: "Næste" }
        ]
    },
    {
        id: 5,
        txt: "Du har valgt at leje dig ind i et kontorfællesskab med andre start-up virksomheder og får derved også udvidet dit netværk. Det koster dig -$10",
        options: [
            { target: 6, txt: "Næste" }
        ]
    },
    {
        id: 6,
        txt: "Du er nu kommet på plads og er klar til at markedsføre din virksomhed, så du kan få nogle kunder!",
        options: [
            { target: 7, txt: "Du vælger at hyre en markedsføringskonsulent til at køre kampagnen for din virksomhed." },
            { target: 8, txt: "Du vælger selv at lave din markedsføring ved at ringe rundt til diverse virksomheder og tilbyde din service, samt egen digitale kampagner osv. " }
        ]
    },
    {
        id: 7,
        txt: "Markedsføringskonsulenten har gjort et rigtig godt job og har fået spredt budskabet om din virksomhed. Du har fået en del kundekontrakter. Markedsføringen har kostet dig -$10.Du indtjener $10",
        options: [
            { target: 9, txt: "Næste" }
        ]
    },
    {
        id: 8,
        txt: "Du ringer rundt til diverse virksomheder og ender med at få enkelte kunder. Men budskabet om at du har opstartet en virksomhed er ikke nået særlig langt ud. Du indtjener $10",
        options: [
            { target: 9, txt: "Næste" }
        ]
    },
    {
        id: 9,
        txt: "Du har nu været selvstændig i noget tid, og alt ser ud til at gå godt. Du har derfor nu mulighed for at fortsætte som enkelt mands virksomhed eller ansætte en studentermedhjælper.",
        options: [
            { target: 10, txt: "Du vælger at ansætte en studentermedhjælper." },
            { target: 24, txt: "Du vælger at fortsætte alene, uden nogle medarbejder" }
        ]
    },
    { //BRANCHING MED STUDIEMEDHJAELPER
        id: 10,
        txt: "En kunde er kommet til dig og deadlinen er en smule stram. Din kunde ønsker en kampagne som sætter fokus på deres nye produkt. Dig og studiemedarbejderen deler arbejdet mellem jer.",
        options: [
            { target: 11, txt: "Næste" }
        ]
    },
    {
        id: 11,
        txt: "Kunden er tilfreds med arbejdet og anbefaler din virksomhed til andre. Studentermedhjælperen koster -$10. Du tjener på kommende kunder $30",
        options: [
            { target: 12, txt: "Næste" }
        ]
    },
    {
        id: 12,
        txt: "Din kunde var tilfreds, så du og din studentermedhjælper har travlt med at arbejde igennem den lange liste af nye tilstrømmende kunder.",
        options: [
            { target: 13, txt: "Du ansætter en mere erfaren fuldtidsmedarbejder, og begynder at tage imod større kundeopgaver." },
            { target: 14, txt: "Du tager kun imod små kundeopgaver, sammen med din studiemedhjælper." }
        ]
    },
    {
        id: 13,
        txt: "Din indtægt er steget, da du ved at have ansat endnu en medarbejder nu kan acceptere flere og større projekter. Den nye medarbejder koster -$30. Du tjener $60",
        options: [
            { target: 15, txt: "Næste" }
        ]
    },
    {
        id: 14,
        txt: "Du tjener stadig selvom du kun acceptere små kunde opgaver. Du ville dog have kunnet tjent mere hvis du havde ansat endnu en medarbejder. Du tjener $10",
        options: [
            { target: 15, txt: "Næste" }
        ]
    },
    {
        id: 15,
        txt: "Grundet de mange forskellige opgaver, som kræver forskellige programmer, begynder din computer at køre dårligere, hvilket påvirker opgaverne og skubber deadlines.",
        options: [
            { target: 16, txt: "Du vælger at vente med at skaffe en bedre computer til et senere tidspunkt" },
            { target: 17, txt: "Du vælger at skaffe en bedre computer for at kunne nå deadlines og få tilfredse kunder" }
        ]
    },
    {
        id: 16,
        txt: "Din computer er blevet markant langsommere og giver problemer med nuværende og kommende deadlines.",
        options: [
            { target: 18, txt: "Næste" }
        ]
    },
    {
        id: 17,
        txt: "Du køber en ny computer, som betydeligt forbedre dit arbejdshastighed. Den nye computer koster -$20. Du tjener $40",
        options: [
            { target: 19, txt: "Næste" }
        ]
    },
    {
        id: 18,
        txt: "Computeren bryder sammen, og du må desværre vente 2 uger før en ny kan komme. Det resultere i at du må udskyde deadlines med dine kunder. Grundet din manglende rettidig omhu vil du komme til at miste indtægt i den periode, hvor du ingen computer har.Det koster dig -$30",
        options: [
            { target: 20, txt: "Næste" }
        ]
    },
    { /*   DETTE ER CHANCE DELEN       */
        id: 19,
        heading: "Tag en chance!",
        txt: "Du har muligheden for at tjene lidt ekstra, da en klient opsøger dig og gerne vil have dig til at lave projektet. Deadlinen er kort, men du vil forsøge at finde tid til det.Du har 3 forsøg til at slå en 6'er.",
        options: [
            { target: 33, txt: "Næste" }
        ],

    },
    {
        id: 20,
        txt: "På trods af de problemer din virksomhed har stødt på, så er den kommet godt ud af dem. Da virksomheden nu har været i gang i et stykke tid, så er det også ved at være tid til at lave regnskab.",
        options: [
            { target: 21, txt: "Du vælger at fokusere på dine kunder og ikke forberede dig til den opkommende regnskab." },
            { target: 22, txt: "Du vælger at fokusere noget af din arbejdstid på at forberede dig til regnskab." }
        ]
    },
    {
        id: 21,
        txt: "Dagen er kommet for status og revisoren er kommet. Revisoren kan ikke finde det han leder efter og han ender med at bruge længere tid ved dig.Det koster $20",
        options: [
            { target: 35, txt: "Næste" }
        ]
    },
    {
        id: 22,
        txt: "Dagen er kommet for status. Da revisoren ankommer ligger alle dokumenter klar og han tager hurtigt videre til hans næste klient. Det koster $10",
        options: [
            { target: 23, txt: "Næste" }
        ]
    },
    { /*   DETTE ER CHANCE DELEN       */
        id: 23,
        heading: "Tag en chance!",
        txt: "Du har muligheden for at tjene lidt ekstra, da en klient opsøger dig og gerne vil have dig til at lave projektet. Deadlinen er kort, men du vil forsøge at finde tid til det.Du har 3 forsøg til at slå en 6'er.",
        options: [
            { target: 35, txt: "Næste" }
        ],
    },
    {//BRANCHING UDEN STUDIEMEDHJÆLPER
        id: 24,
        txt: "En kunde er kommet til dig og deadlinen er en smule stram. Din kunde ønsker en kampagne som sætter fokus på deres nye produkt.",
        options: [
            { target: 25, txt: "Næste" }
        ]
    },
    {
        id: 25,
        txt: "Kunden er ikke tilfreds med arbejdet og anbefaler dig derfor ikke til andre i deres omkreds. Du tjener $10.",
        options: [
            { target: 26, txt: "Næste" }
        ]
    },
    {
        id: 26,
        txt: "Kunden var ikke tilfreds med dit arbejde og du overvejer derfor om du burde ansætte en studentermedhjælper til at hjælpe med større opgaver, så det samme ikke sker igen.",
        options: [
            { target: 27, txt: "Du vælger ikke at ansætte en, men derimod arbejde videre alene. Du vil dog kun tage imod opgaver med længere deadlines" },
            { target: 28, txt: "Du ansætter en studentermedhjælper, så du kan tage imod flere opgaver med både korte- og lange deadlines, " }
        ]
    },
    {
        id: 27,
        txt: "Da du har valgt at fortsætte med at arbejde alene, vælger du ikke at acceptere større opgaver og mister derfor muligheden for en større økonomisk fortjeneste. Du tjener $10",
        options: [
            { target: 15, txt: "Næste" }
        ]
    },
    {
        id: 28,
        txt: "Du ansætter en studentermedhjælper, så du kan fordele arbejdspresset og varetage større arbejdsopgaver som også har større økonomiske fortjenester. Studentermedhjælperen koster - $20. Du tjener $40",
        options: [
            { target: 29, txt: "Næste" }
        ]
    },
    { /*   DETTE ER CHANCE DELEN       */
        id: 29,
        heading: "Tag en chance!",
        txt: "Du har muligheden for at tjene lidt ekstra, da en klient opsøger dig og gerne vil have dig til at lave projektet. Deadlinen er kort, men du vil forsøge at finde tid til det.Du har 3 forsøg til at slå en 6'er.",
        options: [
            { target: 30, txt: "Næste" },

        ],
    },
    {
        id: 30,
        txt: "I har taget i mod mange store opgaver, som giver et stort arbejdspres derfor har du og din medarbejder brug for en bedere computer for at kunne følge med.0",
        options: [
            { target: 31, txt: "Du venter med at skaffe en bedre computer, da den trodsalt stadig kan bruges." },
            { target: 32, txt: "Du vælger at købe en bedre computer for at sikre, at I kan nå deadlines." }
        ]
    },
    {
        id: 31,
        txt: "Din medarbejder begynder at have bøvl med computeren og det giver problemer med nuværende og kommende deadlines.",
        options: [
            { target: 20, txt: "Næste" }
        ]
    },
    {
        id: 32,
        txt: "Du køber nye computer til din medarbejder, og det gør at deres arbejdshastighed er hurtigere og de når deres deadlines. Du får endnu flere tilfredse kunder. Den nye computer koster -$20. Du tjener $40",
        options: [
            { target: 33, txt: "Næste" }
        ]
    },
    {
        id: 33,
        txt: "Det går godt for din virksomhed. Da virksomheden nu har været i gang i et stykke tid, så er det også ved at være tid til at lave regnskab.",
        options: [
            { target: 21, txt: "Du vælger at fokusere på dine kunder og ikke forberede dig til den opkommende regnskab." },
            { target: 34, txt: "Du vælger at fokusere noget af din arbejdstid på at forberede dig til regnskab." }
        ]
    },
    { /*   DETTE ER CHANCE DELEN       */
        id: 34,
        heading: "Tag en chance!",
        txt: "Du har muligheden for at tjene lidt ekstra, da en klient opsøger dig og gerne vil have dig til at lave projektet. Deadlinen er kort, men du vil forsøge at finde tid til det.Du har 3 forsøg til at slå en 6'er.",
        options: [
            { target: 35, txt: "Næste" }

        ],
    },
    { /* DETTE ER SLUTNINGEN AF SPILLET!! */
        id: 35,
        txt: "Regnskabet er ordnet, så lad os se hvordan det er gået din virksomhed indtil nu"
    },
]


function scenarieStart(stepIndex) { // denne starter scenariet
    const currentStep = steps[stepIndex]; //henter det step man er på

    heading_element.textContent = currentStep.heading;
    txt_element.textContent = currentStep.txt; //justere teksten så det passer til hvor man er/henter txt fra den step man er på

    buttonsContainer.innerHTML = ""; //fjerner knapperne i html, så de kun dukker op i det antal af targets man har, prøvede at slette dem helt i html og denne linje men så fungere det ikke. 

    currentStep.options.forEach((option, index) => { //kører de forskellige valgmuligheder igennem for hvert step
        const button = document.createElement("button");//danner knapper for hver valgmulighed der er
        button.textContent = option.txt; //indsætter txt for hver valgmulighed på knappen
        button.classList.add("btn"); //tilføjer styling på knappen

        button.addEventListener("click", () => { //tilføjer en event, så knapperne rent faktisk kan navigerer
            scenarieStart(option.target);//denne kigger efter de valgt man har taget og kører en videre til det næste step
        });

        buttonsContainer.appendChild(button);//skaber knapperne som barn af containeren/tilføjer knappen til html igen
    });
}


//denne sikre at det hele starter fra step 0
scenarieStart(0);

I have tried adding this function in the id where the dice is needed:

// Function to roll the dice
function rollDice() {
    // Generate a random number between 1 and 6
    let diceRoll = Math.floor(Math.random() * 6) + 1;
    
    // Display the result
    document.getElementById('diceResult').innerHTML = `You rolled: ${diceRoll}`;
    
    // Update the dice image (optional, if you have dice images)
    let diceImage = document.getElementById('diceImage');
    diceImage.src = `dice${diceRoll}.png`; // Assuming you have images named dice1.png, dice2.png, etc.
}

I’ve also tried adding a secondary HTML with JS in it, so it links to that when the dice is meant to be shown.

fetch with the whole url work but not when i’m setting proxy, why ? should i create constant instead?

If I try to get datas from my local server with the whole url, it works:

fetch("http://192.168.xxx.xxx:3000/members")
        .then((response) => {
            return response.json();
        })
        .then((myJson) => {
            console.log(myJson);
        })

output:

{"members": ["Members1", "Member2", "Member3"]}

but if I’m setting a proxy in my package.json, it doesn’t:

"proxy":"http://192.168.xxx.xxx:3000/",
fetch("/members")
        .then((response) => {
            return response.json();
        })
        .then((myJson) => {
            console.log(myJson);
        })

output:

TypeError: Network request failed

I have read somewhere that it’s not possible to set up a proxy in react native ?
So does the good way to do is to set a constant that I call each time?

For add some details:
I use expo and start it like this: npx expo start --dev-client --tunnel

To create fields dynamically in jQuery [closed]

I am having special requirement in jQuery. Instead of defining the HTML in jsp file, we have to create it dynamically. Field name, field type, editable, mandatory, etc. will always be dynamic based on the response we get from backend.

DUMMY JSON:

var dynamicVariables = [
        {
            colName : "ADDITIONAL_VARIABLE1",
            labelName: "Label 1",
            colType: "String",
            isEditable: "YES",
            isMandatory: "YES",
            isVisible: "YES",
            isDropDown: "YES",
            isDependent: "NO",
            dependentOn: "NA"
        },
        {
            colName : "ADDITIONAL_VARIABLE2",
            labelName: "Label 2",
            colType: "Date",
            isEditable: "NO",
            isMandatory: "No",
            isVisible: "YES",
            isDropDown: "NO",
            isDependent: "NO",
            dependentOn: "NA"
        }           
    ]

Current JSP Code Snippet:


    <div class=col-sm-6" style="margin-top:34%;">
    <div class="panel-heading" style="text-align: center; background-color: darkgray; color: white; margin-bottom: 0.5%; padding: 1px;" role="tab" id="panelsColapseOpen-headingOne">
        <div class="row panel-title">
        <div class="col-sm-12" style="font-weight: 600; margin-left:-8%">Additional Dynamic Fields</div>
        </div>
        </div>
        <div class ="row" style="margin-bottom: 0.5%">  
           // it's the place for dynamic input fields. I want one row to have 4 input fields maximum. And                   //input fields can be normal text areas, dropdowns, or datepickers.
              // CSS  should be like this:

                    //<div class="col-sm-6" style="width:50%; padding-right:0px;">
                    //<div class="col-sm-6 labelStyle">
                    //<span style="font-size: 10px">Queue : &nbsp;</span>
                    //</div>
                    //<div class="col-sm-6 inputFieldStyle">
                    //<input id="psrQueueName" class="inputBoxStyle" style="padding-left:5px;">
                    //</div>
                    //</div>
        </div>
    </div>

JS File:

We have to map through JSON, and create the dynamic fields based on number of objects it has.

dynamicVariables.map(function(item,i) {
    console.log("item", item);
    
});

I am confused on how to start with this. Can anyone please help me. Thank you in advance.

Issues with Dynamically Injecting App Insights Script After Cookie Consent

I’m attempting to load the Microsoft Azure Application Insights script dynamically into the <head> tag after a user accepts cookies. However, I’ve run into an issue where the backslashes () within the JavaScript code are being removed, causing the script to break.

Here’s the relevant code snippet:

const scripts = `
    <script type="text/javascript">
        !(function (cfg) {
            // ... 
        })( {
            src: "https://js.monitor.azure.com/scripts/b/ai.3.gbl.min.js",
            crossOrigin: "anonymous",
            cfg: {
                connectionString: "InstrumentationKey=YOUR_INSTRUMENTATION_KEY"
            }
        });
    </script>
    <script type="text/javascript" language="javascript">
        var ref = document.referrer;
        appInsights.trackTrace({ message: 'Referrer  ' + ref });
    </script>
`;

I’ve implemented the following function to append the script to the head:

function addScripts() {
    $('head').append(scripts);
};

However, when I execute this function, the backslashes are stripped out, resulting in a corrupted script. I expected the script to load properly without losing any characters.

Ignore lines of Javascript when running CodeQL

Qt have a distinct way of importing JavaScript resources from other JavaScript resources, where the syntax is:
.import "filename.js" as Qualifier

More about this syntax is found here.

The challenge with this is that it prevents CodeQL from reading our JavaScript files, as this is noted as a syntax error, with the following message:

Syntax errors prevent code from executing correctly. If a piece of code contains syntax errors, this most likely indicates that it is never run and thus is dead code that should be removed.

I have looked for any way to insert compiler directives or anything similar so that the static analysis would ignore these lines without luck.

Is there anyway to perform CodeQL analysis on JavaScript files used in Qt/QML applications where these import and pragma statements are present?

Multiply 2 sources, WebGlLayer (openlayers)

I have been struggling with this whole night. All I want to do is multiply two rasters together. I know I can do that with RasterSource, but I need better performance. When I create a layer (webgl) for each individual source, extracting the data works fine: [“band”, 1], … [“band”, 4], where the first 3 bands are the same (storing byte), and the fourth is the opacity. But if I have 2 or more sources, I can’t extract the data from more than one source (which, funnily enough, is always the the last one in the array).

import WebGLTileLayer, { Style as WebGLStyle } from 'ol/layer/WebGLTile';
const src1 = createXYZ(url1)
const src2 = createXYZ(url2)


const product = ["*", ["band", 1], ["band", 5]] // 5 since 4 + 1, this should be the red channel of src2, right?

const style: WebGLStyle = {
    color: [
        'case',
        ['<', product, 0.5],
        [0, 0, 0, 0],
        [255, 0, 0, 1]]
}
const layer = new WebGLTileLayer({
    sources: [src1, src2],
    style,

})

What I want to do is to extract the data from each source. I tried [“band”, 5], but nothing is there.Ive tried other band indexes but either I get nothing, or just the data from src2. What am I doing wrong?

How to write my own API serve github-calendar.js

I am using github-calendar.js. It is easy way to add my github calendar to single html file or markdown. The main problem is Bloggify ‘s API look like not work any more. So API can not get data from github api. You will see current state bellow.

enter image description here

My main idea is write my own js api, use cloudflare worker. But I am not familiar in them.

So, have any one was write api like that, please guide me how can I do it.
Thank advances.

react-native-nfc-card-reader working on android 13 but in android 14 is not working

i am using this library for NFC card reading text this library is working fine in this version

    buildToolsVersion = "30.0.1"
    minSdkVersion = 21
    compileSdkVersion = 33
    targetSdkVersion = 33
    ndkVersion = "21.4.7075529"
    androidXCore = "1.6.0"
    kotlinVersion = "1.6.21"

but as we update target SdkVerion 34 according to google policies, App is crashing on NFC Card Reading screen

we just want as we update compileSdkVersion = 33,targetSdkVersion = 33 to 34 then is should be worked on android verion 14

How to filter duplicate object from array of objects based on few conditions?

I am getting below response from API , i wanted to create new array based on below condition and push result into new array

I wanted to filter out all duplicate objects based on lineId and totalTime

Below Condition to filter

For ex – If lineId is same and Sum of totalTime in both the lineId is more than 744, than need to push this object into new Array.

For ex – In below response , object with lineId 333 is coming twice and their totalTime sum is more than 744,
than i want this object to be pushed into new array.

Can anyone help me to do this.

const response = [
    {  
        "lineId": "333",
        "oeeCalculations": {
            "others": {
                "totalTime": 744
            }
        }
    },
    {
        "lineId": "333",
        "oeeCalculations": {
            "others": {
                "totalTime": 744
            }
        }
    },
    {
        "lineId": "222",
        "oeeCalculations": {
            "others": {
                "totalTime": 500
            }
        }
    },
    {
        "lineId": "111",
        "oeeCalculations": {
            "others": {
                "totalTime": 500
            }
        }
    },
    {
        "lineId": "111",
        "oeeCalculations": {
            "others": {
                "totalTime": 200
            }
        }
    }
];

Expected Output

const result = [
    {  
        "lineId": "333",
        "oeeCalculations": {
            "others": {
                "totalTime": 744
            }
        }
    }
   
];

I tried below code but its not summing value of totalTime and not working as expected

const foundDuplicateName = response.find((nnn, index) => {
  return response.find((x, ind) => x.lineId === nnn.lineId && x.oeeCalculations.others.totalTime >= 744 && nnn.oeeCalculations.others.totalTime >= 744 && index !== ind)

})
console.log(foundDuplicateName)
<script>
  const response = [{
      "lineId": "333",
      "oeeCalculations": {
        "others": {
          "totalTime": 744
        }
      }
    },
    {
      "lineId": "333",
      "oeeCalculations": {
        "others": {
          "totalTime": 744
        }
      }
    },
    {
      "lineId": "222",
      "oeeCalculations": {
        "others": {
          "totalTime": 500
        }
      }
    },
    {
      "lineId": "111",
      "oeeCalculations": {
        "others": {
          "totalTime": 500
        }
      }
    },
    {
      "lineId": "111",
      "oeeCalculations": {
        "others": {
          "totalTime": 200
        }
      }
    }
  ];
</script>

Explain the synchronous and asynchronous programming language

When synchronous programming is employed and tasking is sequential, latency in the interface causes the application to hang due to demand side issues. The issue with this scenario is that the user interface frequently freezes for extended periods of time when doing tasks like file input-output or network queries, which are infrequent but very important for assessing the performance of interactive applications.

The benefit of asynchronous programming is that no blocking occurs since actions are not performed sequentially; yet, avoiding blocks in the code is not always easy. Even if they are efficient, problems like race situations and callback hell can develop and cause poor code management, maintenance, and debugging.

I am expecting details explaination regarding synchronous and asynchronousprogramming language.

A grey border is showing in Html code in Flutter Webview

I’m using Webview to display an vision360 video in flutter. The url was not looking right in webview that why Javascript is used to modify width and height of video and buttons, But in some big devices a grey line is coming along with video Here is the javascript. In Device greater or equal to 6.7 inch the grey line is visible

  <html style="width:100%; height:100%; margin:0; padding:0;  display:flex; justify-content:center;">
  <head>
 <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=0.98">
         </head>
    <body style="width:95%; height:100%; margin:0; padding:0; ">
     <div style="width:100%; height:100%; margin:0; padding:0;">
        <iframe src="https://storageweweb.blob.core.windows.net/files/INVENTORYDATA/V360Mini5/Vision360.html?d=790364830-S&autoPlay=1&z=0"
                style="width:100%; height:100%; border:none;"></iframe>
      </div>
    </body>
  </html>

This is Flutter webview code

class HtmlWebViewInterface extends StatefulWidget {
  final String url;
  final bool isB2bSparkle;
  final bool isSmallerView;
  final void Function(double)? onScaleChanged;
  String? type;

  HtmlWebViewInterface({
    super.key,
    required this.url,
    this.isSmallerView = false,
    this.isB2bSparkle = false,
    this.onScaleChanged,
    this.type = 'medium',
  });

  @override
  State<HtmlWebViewInterface> createState() => HtmlWebViewInterfaceState();
}

class HtmlWebViewInterfaceState extends State<HtmlWebViewInterface> {
  final ValueNotifier<double> _progressValueNotifier = ValueNotifier<double>(0);

  // Ranges from 0 to 1.
  late final WebViewController _webViewController = WebViewController()
    ..setJavaScriptMode(JavaScriptMode.unrestricted)
    ..loadHtmlString(widget.isSmallerView
        ? getHtmlString(widget.url,type: widget.type)
        : getHtmlStringForSmallView(widget.url, type: widget.type))
    ..setNavigationDelegate(
      NavigationDelegate(
        onProgress: (int progress) {
          _progressValueNotifier.value = progress / 100;
        },
        onPageFinished: (_) {
          _progressValueNotifier.value = 1;
        },
      ),
    );
   // ..setBackgroundColor(Colors.red);

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      padding: const EdgeInsets.only(top: 10),
      child: Stack(
        children: [
          Positioned.fill(
            child: WebViewWidget(
              controller: _webViewController,
              gestureRecognizers: {
                Factory<OneSequenceGestureRecognizer>(
                  () => EagerGestureRecognizer(),
                ),
              },
            ),
          ),
          Positioned.fill(
            child: ValueListenableBuilder(
              valueListenable: _progressValueNotifier,
              builder: (context, value, _) {
                if (value < 1) {
                  return widget.isB2bSparkle
                      ? buildProgressIndicator(context,
                          name: 'Loading B2B Sparkle Video...', showName: true)
                      : buildProgressIndicator(context,
                          name: 'Loading Video...', showName: true);
                } else {
                  return const SizedBox();
                }
              },
            ),
          ),
        ],
      ),
    );
  }

  void reloadWebView() {
    _webViewController.reload();
  }
}

I tried providing border none in html code but nothing is working,
I need video should come with without grey line in big devices

image here

Create multiple Records with same connection

i try to create multiple records in the guild model in ticket. It is a database which includes all active open tickets from a guild.

But if i want to create a second record because a second ticket was opend it only updates the already exist entry in ticket but i want to create a new one.

I dont know what in doing wrong at the moment, and looking for help please…

async function storeTicketData(guildId, ticketChannelID, ticketData) {
    try {
        
        await prisma.ticket.create({
            data: {
                guild: {
                    connect: { guildId: guildId.toString() } 
                },
                ticketId: ticketData.ticketId || 0,
                channel: BigInt(ticketChannelID),
                owner: BigInt(ticketData.ticketOwner),
                state: ticketData.state || 'open',
                claimedBy: ticketData.claimedBy || null,
                addedUsers: ticketData.addedUsers || [],
                interactions: ticketData.interactions || [],
                history: ticketData.history || [],
                timer: ticketData.timer || false,
                timerEnd: ticketData.timerEnd || null,
                transcriptPermissions: ticketData.transcriptPermissions || ["private"],
                transcriptUrl: ticketData.transcriptUrl || "",
                panelId: ticketData.ticketPanelId,
            }
        });

    } catch (error) {
        if (error.code === 'P2002') {
            console.error('Ticket with channel-id already exist in ticket database:', error);
        } else {
            console.error('Error on saving ticket to ticket database:', error);
        }
    }
}
model Guild {
    id               Int                @id @default(autoincrement())
    guildId          String             @unique
    locale           String             @default("en-US")
    createdAt        DateTime           @default(now())
    updatedAt        DateTime?          @updatedAt
    TicketModule     TicketModule[]
    Tickets          Ticket[]
    StatisticsModule StatisticsModule[]
    GuildMemberAdd   GuildMemberAdd[]
    GuildMemberLeave GuildMemberLeave[]
    GuildMemberKick  GuildMemberKick[]
    GuildMemberBan   GuildMemberBan[]
    GuildStatistics  GuildStatistics[]

    @@schema("public")
}

model Ticket {
    id       String @id @default(uuid())
    ticketId BigInt
    panelId  String
    guild    Guild  @relation(fields: [guildId], references: [id])
    guildId  Int
    owner    BigInt
    channel  BigInt @unique

    state        String @default("open")
    claimedBy    BigInt?
    addedUsers   Int[]
    interactions Json[] // buttons modals etc
    history      Json[] // messages etc

    timer    Boolean
    timerEnd DateTime?

    transcriptPermissions String[] @default(["private"]) // public, private, role, user
    transcriptUrl         String?  @default("")

    createdAt DateTime @default(now())
    updatedAt DateTime @updatedAt

    @@schema("tickets")
}

Prisma Studio View

The execution order of the promise according to the return type 2

This question is similar to the previous “The execution order of the promise according to the return type”, but it is a little different.

Why is the order of execution of caseA and caseB different?

The difference between the code is “return” or “return promise”

caseA: 914258367

<html>
<head>
<script>
var promise = Promise.resolve();    
    
promise = promise.then(function(rtnVal) {   
    console.log('1');
    var promise2 = Promise.resolve();
    promise2 = promise2.then(function(rtnVal) {
        console.log('2');
    });
    promise2 = promise2.then(function(rtnVal) {
        console.log('3');
    });
    console.log('4');
    return;
}); 
    
promise = promise.then(function(rtnVal) {   
    console.log('5');
    var promise2 = Promise.resolve();
    promise2 = promise2.then(function(rtnVal) {
        console.log('6');
    });
    promise2 = promise2.then(function(rtnVal) {
        console.log('7');
    });
    console.log('8');
    return;
}); 
    
console.log('9');   

</script>
</head>
</html>

caseB: 91423 -> 5,6,7,8 don’t even run

<html>
<head>
<script>
var promise = Promise.resolve();    
    
promise = promise.then(function(rtnVal) {   
    console.log('1');
    var promise2 = Promise.resolve();
    promise2 = promise2.then(function(rtnVal) {
        console.log('2');
    });
    promise2 = promise2.then(function(rtnVal) {
        console.log('3');
    });
    console.log('4');
    return promise;
}); 
    
promise = promise.then(function(rtnVal) {   
    console.log('5');
    var promise2 = Promise.resolve();
    promise2 = promise2.then(function(rtnVal) {
        console.log('6');
    });
    promise2 = promise2.then(function(rtnVal) {
        console.log('7');
    });
    console.log('8');
    return promise;
}); 
    
console.log('9');   

</script>
</head>
</html>

Writing Chrome NTP alternative. Can save and read data in chrome.local.storage, but can’t see it in DevTools

I’m writing an alternative for Chrome’s New Tab Page. Data stored in chrome.storage.local is correctly saved and loaded, as confirmed by logging, but it does not appear in the DevTools > Application > chrome.storage.local tab.

The extension’s permissions include “storage”, and data is being stored under individual keys (name, url).

document.addEventListener('DOMContentLoaded', () => {
    // Save data
    document.querySelector('.button-done').addEventListener('click', () => {
        const name = document.getElementById('name-field').value;
        const url = document.getElementById('web-address').value;

        chrome.storage.local.set({ name, url }, () => {
            console.log('Data saved:', { name, url });
        });
    });

    // Load data
    chrome.storage.local.get(["name", "url"], (data) => {
        if (data.name && data.url) {
            document.getElementById('name-field').value = data.name;
            document.getElementById('web-address').value = data.url;
            console.log('Data loaded:', data);
        }
    });
});

Despite successful retrieval and display in the UI, the stored data remains invisible in DevTools. I’ve tried clearing storage, reloading DevTools, and verifying extension context, but the problem persists. This happens both while running the code in Live Preview in VS Code (1.93.1) and when running the extension unpacked in Chrome’s developer mode (128.0.6613.139). Any insights?