Subquery returning different results when written as a function in TypeORM

I have a huge query that consists of 2 subqueries. Since I intend to use the subqueries at multiple places, I wanted to extract it as a function.

Here is the original query that works perfectly fine and returns expected results:

  public async findUsers(): Promise<UserEntity[]> {
    return this.createQueryBuilder('users')
        .andWhere('users.user_type = :userType', { userType: UserType.Parent })
        .andWhere(qb => {
          const subquery = qb
              .subQuery()
              .select('COUNT(*)')
              .from(EventEntity, 'e')
              .where('e.object_id = users.member_id')
              .andWhere('e.event_type = :eventType', { eventType: EventType.LOGIN })
              .getQuery();
          return subquery + '= 0';
        })
        .andWhere(qb => {
          const subquery = qb
              .subQuery()
              .select('COUNT(*)')
              .from(UserEntity, 'u1')
              .where('u1.primary_Id = users.member_id')
              .andWhere('u1.user_type = :userTypeChild', { userTypeChild: UserType.Child })
              .getQuery();
          return subquery + '= 0';
        })
        .getMany();
  }

However, when I try to put the subquery inside a function, it returns different results. Here is the query:

  public async findUsers(): Promise<UserEntity[]> {
    return this.createQueryBuilder('users')
        .andWhere('users.user_type = :userType', { userType: UserType.Parent })
        .andWhere(`(${this.subquerysql()}) > 0`)
        .andWhere(qb => {
          const subquery = qb
              .subQuery()
              .select('COUNT(*)')
              .from(UserEntity, 'u1')
              .where('u1.primary_Id = users.member_id')
              .andWhere('u1.user_type = :userTypeChild', { userTypeChild: UserType.Child })
              .getQuery();
          return subquery + '= 0';
        })
        .getMany();
  }

  private subquerysql(): string {
    const query = getConnection()
        .createQueryBuilder()
        .select('COUNT(*)')
        .from(EventEntity, 'e')
        .innerJoin('users', 'u','e.object_id = u.member_id')
        .andWhere(`e.event_type = 'LOGIN'`)
        .getSql();
    return query;
  }

Here is the error that I am getting:

I can’t seem to figure why the query isn’t working(when I put subquery inside a function). I am writing this inside userRepository

How to decide when to rerender in React

I’m creating a small project with the mern stack. In the homepage of this project, you can see the things that the current user has. THe problem is that the list can change in every moment, because other user can happend to that list other stuff. SO, to make it refresh, I put it in the useEffect hook. The problem now is that my server is reciving a tons of request, and always the same one. I don’t know if is the case to set a timer that rerender after x second, to make the work of my server lighter, or there is a way to remake the request to the server in some case. Here is the small code that manage the request:

    const [file, setFile] = useState([]);
    useEffect(() => {
        axios.post("http://127.0.0.1:5050/file/getfilesbycreator",{creator:localStorage.getItem('user')})
        .then(res => {
            setFile(res.data);
        })
        .catch(err => console.log(err))
    })

If someone has any suggestion, please tell me. I read something about rerender react, but I didn’t found out better way then a timer, or something similar.Thanks

Contact form 7 Ajax without JQuery

For optimization purposes, we have removed the use of jQuery. But we continue to use the Contact Form 7 to collect contacts. The form submits fine, but it does reload the page. How to make a custom Ajax dispatch for this form without using JQuery?

Reder only specific key value based on another key value with Javascript in React component

In my React application I need to grep the url with "type": "Three"?

How to find and return only specific key value based on another key value with Javascript?

From the api I get an array of images:

   "images": [
        {
          "url": "https:example/c18336d6-61ee-4c7c-be6b-397352b6fd63",
          "type": "One"
        },
        {
          "url": "https://example/c18336d6-61ee-4c7c-be6b-397352b6fd63",
          "type": "Two"
        },
        {
          "url": "https://example/c18336d6-61ee-4c7c-be6b-397352b6fd63",
          "type": "Three"
        },
      ]
    },

Then in my React component I want to use this value:

    const MyComponent = () => {

      const items =
        nodes.map((item) => {
            return {
              myImage: // Here I need e.g. the url value of the images array with type = Three.
            };
          }) || [];

   return <Slides items={items} />

  export default MyComponent;

How to expect the date to contain another date in Cypress?

This would be silliest question which I am asking here. I was going through Cypress automation and was working on one of the scenario.

I wanted to verify whether the date is matching or containing the date or not.

System date – 11/30/2021 06:18:33 PM and derived application date – 11/30/2021 6:18:38

How can I match and assert this using Cypress?

expect('11/30/2021 06:18:33 PM').to.have.string('11/30/2021 6:18:38');

I am getting below error :-

AssertionError

expected '11/30/2021 06:18:33 PM' to contain '11/30/2021 6:18:38'

MDC Web Textfield component outline disappearing

I am having an issue with MDC web textfield component. The issue is that the outline does not stay when I click on the textfield to type in an input. See below for the pug and javascript code :

div.mdc-layout-grid__cell--span-4.mdc-layout-grid__cell--span-12-phone.mdc-layout-grid__cell--span-12-tablet
  label.mdc-text-field.mdc-text-field--filled
    span.mdc-text-field__ripple
    span.mdc-floating-label(id="first_name") First Name :
    input.mdc-text-field__input(type="text" aria-labelledby="first_name")
    span.mdc-line-ripple
div.mdc-layout-grid__cell--span-4.mdc-layout-grid__cell--span-12-phone.mdc-layout-grid__cell--span-12-tablet
  label.mdc-text-field.mdc-text-field--outlined
    span.mdc-notched-outline
    span.mdc-notched-outline__leading
    span.mdc-notched-outline__notch
      span.mdc-floating-label(id="last_name") Surname :
    span.mdc-notched-outline__trailing
  input.mdc-text-field__input(type="text" aria-labelledby="last_name")
const textFields = [].map.call(document.querySelectorAll('.mdc-text-field'), function (el) {
    return new mdc.textField.MDCTextField(el);
});

const notchedOutline = [].map.call(document.querySelectorAll('.mdc-notched-outline'), function (el) {
    return new mdc.notchedOutline.MDCNotchedOutline(el);

});

const floatingLabel = [].map.call(document.querySelectorAll('.mdc-floating-label'), function (el) {
    return new mdc.floatingLabel.MDCFloatingLabel(el);

});

const lineRipple = [].map.call(document.querySelectorAll('.mdc-line-ripple'), function (el) {
    return new mdc.lineRipple.MDCLineRipple(el);

});
```[![enter image description here][1]][1]


  [1]: https://i.stack.imgur.com/E8t9g.png

Type ‘string’ is not assignable to type ‘ undefined’

I have one React Component in which I am using useState hook.
I tried to set value to general onClick of menu item.

const [value,setValue]= useState("");

<Menu.Item onClick={()=>setValue("general"))>

</Menu.Item>

In another file I am passing that value.

<ChannelForm
   value={value}
/>

I am using TypeScript. Have declared prop type definition as

value?: "general" | "competitive" | "social" | "podcast";

But while passing value as a props I am getting above error.

Passing a variable to python using Ajax method

I want to pass a variable using Ajax from a JS function to a python function in my Django project.
I am able to call the python function. Using the ajax method, I know this because the print function in the python function runs.
However how to I pass my variable through this ajax call? I just want to pass the local variable so it can be printed by the python function.

JS

function calling (){
    var local = 25
    
    $.ajax({
        type:'GET',
        url:'printsome/',
        success: function(response){
            console.log('success');
            console.log(local);
        },
        error: function (response){
            console.log('error');
        }
    });

}

python

def print_some(request):
    from django.http import JsonResponse
    print('this python function was called')
    return JsonResponse({})

existe t-il un moyen de filtrer une table dynamiquement avec le nombre d’enregistrement a l’appuie

bonjour!!!
j’aimerais filtrer les elements de ma table et afficher dynamiquement le resultat. Je m’explique j”ai une table voiture avec 100 enregistrement qui contient les champs “couleur” “marque” “annee”. dans ma vue il a trois input et en dessous une div qui montre le nombre total d’enregistrement. S’il choisit couleur rouge par example alors il aura dans la div 48 enregistrement.a chaque fois qu’il selectionne un element.on lui retourne le nombre d’enregistrement correspondant. svp aidez moi

Calculate duration startDate & endDate from an HTML form

Im wondering if anyone can point me to some documentation on how to solve my issue.
Still new at native JS, and looking to do some date calculations.

Basically I need to calculate the duration between X and Y dates from and HTML forms input type date.

I have a rough sketch of my HTML and JS..
but still I cannot solve the issue without propper guidance and documentation.

       <div>
          <form>
              <label for="start-date"></label>
              <input type="date" id="start-date">

              <label for="end-date"></label>
              <input type="date" id="end-date">

              <label for="duration"></label>
              <input type="text" id="duration">
         </form>
       </div>

    const startDate = document.getElementById("start-date").value
    const endDate = document.getElementById("end-date").value
    let duration_from_form = document.getElementById("duration").value

    let duration = endDate - startDate;


    if (duration_from_form === ""){
        duration_from_form = duration;
    }
}

I know both of them a rough mockups and not ideal, but I’d love some help finding propper documentation on this matter.
Kind regards

How to optimize router in nodejs koa?

I use koa to create a nodejs application, and I try to optimize.

app.js

'use strict';
const Koa = require("koa");
const Router = require("koa-router");
const router = new Router();

const stuff = require("./router/stuff.js");
router.use("/stuff", stuff.routes());
//more routers like above
const home = require("./router/home.js");
router.use(home.routes());

app.use(router.routes(), router.allowedMethods());
app.listen(port);

There’re some router files in folder router, such as stuff.js, home.js, client.js

stuff.js

'use strict';
const router = require("koa-router")();
router
    .get("/", async (ctx) => {
        await ctx.render("stuff", {

        });
    })
module.exports = router;

home.js

'use strict';
const router = require("koa-router")();
router
    .get("/", async (ctx) => {
        await ctx.render("home", {

        });
    })
module.exports = router;

client.js

'use strict';
const router = require("koa-router")();
router
    .get("/", async (ctx) => {
        await ctx.render("client", {

        });
    })
module.exports = router;

I think the way I wrote is still very amateurish, how to optimize it? Thank you.

Animating grid layout using CSS variables

I’m trying to animate a grid layout using transitions. As far as I can tell, this should be implemented: https://ishoudinireadyyet.com/

I even found a demo of this working: https://codepen.io/matuzo/post/animating-css-grid-layout-properties

But I cannot get it to work myself. What am I doing wrong? https://stackblitz.com/edit/gridlayout-animation?file=index.html

const toggleSidebar = () => {
  const layoutEl = document.querySelector('.layoutEl');
  const currentWidth = getComputedStyle(layoutEl).getPropertyValue('--collapse-panel-width');
  const isOpen = currentWidth == '30rem';
  layoutEl.style.setProperty('--collapse-panel-width', !isOpen ? '30rem' : '2rem');
};
@property --collapse-panel-width {
  syntax: '<length>';
  initial-value: 2rem;
  inherits: true;
}

.layoutEl {
  --collapse-panel-width: 2rem;
  display: grid;
  overflow: hidden;
  grid-template: 
    'header   header' auto 
    'content sidebar' 1fr 
    'footer   footer' auto 
    / 1fr var(--collapse-panel-width);
  gap: 0.3rem;
  height: 100vh;
  transition-property: all;
  transition-duration: 0.5s;
  transition-timing-function: ease-in-out;
}

header {
  grid-area: header;
  background-color: #0055ff;
  color: white;
}

main {
  grid-area: content;
}

aside {
  grid-area: sidebar;
  background-color: #0055ff;
  color: white;
}

footer {
  grid-area: footer;
  background-color: #0055ff;
  color: white;
}
<html>

<head>
  <meta charset="UTF-8" />
</head>

<body class="layoutEl">
  <header>Header</header>
  <main>
    <h1>Main content</h1>
    <button type="button" onclick="toggleSidebar()">Toggle sidebar</button>
  </main>
  <aside>Sidebar</aside>
  <footer>Footer</footer>
</body>

</html>

Javascript Determine if page was redirected by tag or window.location.href?

The question is pretty much the same as the title.

Is there a way in Javascript to determine whether the page has been redirected by < a href > HTML tag or by window.location.href?

I need conditions for clearing saved states of data-table:

on reload

and

on redirected via < a href > tag.

I don’t want to clear saved states for a redirection via window.location.href.

I got one on reload:

if (performance.navigation.type == 1){
      var table = $('#categoryList').DataTable();
      table.state.clear();
      table.search("").draw(); 
      table.column( '0:visible' ).order( 'asc' ).draw();
      table.page.len(10).draw();
    }

I’m looking for another one on redirected via < a href >.

Google Apps Script (Javascript) function won’t apply itself to the last worksheet

I am using Google Apps Script (which uses JavaScript) on a Google Sheet doc to carry out a data collection, cleanse and extraction process (to CSV). The whole script runs well apart from one of the functions (see code below).

For some reason it doesn’t seem to apply itself to the very last worksheet in the Google Sheet or the last item stored in the sheets array.

Once it gets to the last item in the sheets array, it will insert the two new columns (client_id and client_name) but not actually set the respective values for these two columns. For example, if client_id = 6 and client_name = "Amazon", these two values will be inserted per row of data in the respective columns for that worksheet.

It will then continue the rest of the code, creating the CSV files and then removing the newly added columns as it should.


Work-around (not ideal) #1: if I insert a blank worksheet and place it at the end, it will actually apply itself to all the useful worksheets before it – which does resolve the issue – however its not an efficient solution.


Work-around #2: I was thinking to rewrite the code as below:

from this (original): for (let i = 0; i < sheets.length; i++) { ... }

to this (new): for (let i = 0; i <= sheets.length; i++) { ... } with a nested if statement which says something along the lines of “if i = sheets.length, do nothing — else, do the usual”

I still need to test this one but yet again feels inefficient.


Current Code:

/* Adds in two columns, one for client id and one for client name to each row.
Columns will be inserted just before the data extraction process and then removed after. */

function insertClientIDsAndNames(client_id, client_name, spreadsheet_id) {
  // all the worksheets this function will apply itself to
  var spreadsheet = SpreadsheetApp.openById(spreadsheet_id);
  var sheets = [];
  
  // collects all the sheets
  for (let i = 0; i < spreadsheet.getSheets().length; i++) {
    sheets.push(spreadsheet.getSheets()[i].getSheetName());
  }

  for (let i = 0; i < sheets.length; i++) {
    var sheet = spreadsheet.getSheetByName(sheets[i]);
    
    // inserts two new columns at the start of the sheet
    sheet.insertColumns(1, 2);

    // insert column header names
    sheet.getRange(1, 1).setValue("client_id");
    sheet.getRange(1, 2).setValue("client_name");

    // returns the position of the last row/column that has content
    var lastRow = sheet.getLastRow();

    var range = sheet.getRange(2, 1, lastRow, 2);
    var values = range.getValues();

    // formats the range to plain text
    range.setNumberFormat('@STRING@');

    // sets the client id
    for (let i = 1; i < values.length; i++) {
      sheet.getRange(i + 1, 1).setValue(client_id);
    }

    // sets the client name
    for (let i = 1; i < values.length; i++) {
      sheet.getRange(i + 1, 2).setValue(client_name);
    }
  }
  
  // creates the csv files
  dataExtractAll(spreadsheet_id);

  // deletes the two new columns that were just created
  for (let i = 0; i < sheets.length; i++) {
    var sheet = spreadsheet.getSheetByName(sheets[i]);
    sheet.deleteColumns(1, 2);
  }
};

Any help would be great as I feel it is a simple solution and I can’t quite see it for some reason!

Cheers.