Hirdetés

Keresés

Új hozzászólás Aktív témák

  • _ak_
    addikt

    Így már világos, hogy mi volt a szándék. Szerintem így sokkal egyszerűbb.
    Ez a kényszeres dekonstruktorozás, amit csináltál, szerintem bőven rontja az olvashatóságot, de persze ez szubjektív.

    [link]

    Köszi, ez így nekem is szimpatikusabb. Alapvetően én szeretem a destructure-t, de itt valóban sok értelme nem volt, csak az én megoldásommal, anélkül már kész kód tömböt hánytam össze, amin a TS-se segített.

  • _ak_
    addikt

    jsfiddle, codepen működő példát ha küldenél nekünk, talán nagyobb kedvvel nézne rá bárki is.

    Működni működik, csak nem tudom, hogy nem csinálok-e felesleges loopokat. [link]

    Átírtam sima JS-re, nem tudom pontosan, hogy hogy működik a jsfiddle TS/Babel.

    @inf3rno: :K Optional Chaning (?.) MDN

  • _ak_
    addikt

    Előre is elnézést az auto-correctes felig ékezetes, felig magyar, felig angol kommentert.

    Mivel magamtol nem jöttem ra ezért osszelegoztam a megoldást, ti ezt értitek? Úgy érzem, hogy feleslegesen toltam túl a dolgot:

    const onlySelectable = allOptions
      ?.filter((e: { etype: string }) => e === 'SELECTABLE')
      .map(({ eorder, eid }) => ({ eorder, eid }));

    const filterAndAddOrderNum = (
      selectionHistory: { eid: string, selectedOption: string }[],
     onlySelectable: { eorder: number; eid: string }[]
    ) => {
      const map = new Map();
      const filteredSelectionHistory = selectionHistory?.selections?.filter(({ eid: id1 }) =>
       onlySelectable.some(({ eid: id2 }) => id1 === id2)
      );
     filteredSelectionHistory.forEach((item) => map.set(item.eid, item));
     onlySelectable.forEach((item) =>
        map.set(item.eid, { ...map.get(item.eid), ...item })
      );

      return Array.from(map.values());
    };


    Lényegében van egy forrás JSON ami mindig a friss adatokat tartalmazza, az eorder változhat es nekem az alapján kell sorrendben megjelentetni az adatokat, illetve van egy history JSON ahol eddig csak az id es a user opciója volt elmentve. A feladat, hogy miután megkaptam a forrást es a history-t szinkronizáljam azokat. Tehát a redux state-ben a history-bol kinyert eid-hoz csatoljam eorder-t, igy a frissen megjelenített adatok es a history-bol jövő adatok is szinkronban lennének, mert időközben a sorrend es a tartalom is változhat. Az esetleg (user által) ujra elküldött adatoknak is tukrozniuk kell a forrásban történt változást.

    Nem feltétlen 1 liner megoldást keresek sõt, de egy másod véleménynek örülnék, hogy lehet-e ezt egyszerűbben is.

  • _ak_
    addikt

    Nem biztos, hogy kimondottan JS kérdés, de React appbanan i18n-t használok, ahol a doksi szerint importálni kell az egész config fájlt, hogy bekerüljön a bundlebe. Közben létrehoztam benne egy functiont is és azt később külön is importáltam:

    import "./i18n";
    import { getTranslations } from "./i18n";

    Szükségem van az eredeti importra ebben az esetben?

    Jó ez hülye kérdés volt, mentségemre szóljon, hogy előszőr kerültem ilyen helyzet elé.
    Persze hogy anélkül is működik, nem is tudom hol jártam...

  • _ak_
    addikt

    Nem biztos, hogy kimondottan JS kérdés, de React appbanan i18n-t használok, ahol a doksi szerint importálni kell az egész config fájlt, hogy bekerüljön a bundlebe. Közben létrehoztam benne egy functiont is és azt később külön is importáltam:

    import "./i18n";
    import { getTranslations } from "./i18n";

    Szükségem van az eredeti importra ebben az esetben?

  • _ak_
    addikt

    Igen, mivel a hook visszatérési típusa nem IAccount, hanem IAccount | null union, ezért csak siman IAccount típus nem lehet a tároló konstans típusa. Az account konstans típusa legyen ugyanúgy IAccount | null és úgy már jó lesz (a ?. le fogja kezelni, ha ott null van (de azt is kezeli, ha undefined), olyankor a string konstans értéke is undefined lesz)

    Köszi, végül ez lett belőle:

    const account: IAccount | null = useAccount(accounts[0] || {});
    const customProp: string | undefined =
      account?.idTokenClaims?.extension_customProp;

    Ahogy mondtad az AccountInfo lehet null is, emiatt a customProp lehet undefined is), amit használata előtt ellenőrzök, így a helyére került minden. :R

    Jim-Y:

    Kipróbáltam ezt is, de ugyan az maradt a figyelmeztetés.

    coco2:

    Távol álljon tőlem, hogy megmondjam a frankót, de ha engem kérdezne valaki, hogy érdemes-e a TS-el foglalkozni, akkor azt tanácsolnám, hogy ne is kezdjen bele semmibe anélkül, legalábbis, ha programozásból akar megélni és JS vonalon mozog.

  • _ak_
    addikt

    Szerintem: Az useAccount visszatérhet sima objecttel is (én erre következtetek a paraméterben átadott üres object miatt)? Akkor viszont a TS jogosan reklamál, hiszen ott az account típusa nem IAccount lesz, hanem IAccount | object “union”, az objecten pedig nem fogja megtalálni az adott propot.

    Illetve az az IAccount típusdeklaráció sincs szerintem jó helyen, annak az account konstanson kene legyen, a customProp az interface szerint string típusú

    Valóban, figyelmetlen voltam a customProp egy string a végére és rossz helyen deklaráltam.

    const account: IAccount = useAccount(accounts[0] || {});
    const customProp: string = account?.idTokenClaims?.extension_customProp;

    Így megoldódik a customProp kérdése, de az accountra ezt kapom:

    TS2322: Type 'AccountInfo | null' is not assignable to type 'IAccount'. Type 'null' is not assignable to type 'IAccount'.

    A useAccount:
    // Given 1 or more accountIdentifiers, returns the Account object if the user is signed-in
    export declare function useAccount(accountIdentifiers: AccountIdentifiers): AccountInfo | null;

  • _ak_
    addikt

    Ugy lehet felkesziteni hogy nem irsz egy sor JS kodot sem

    Azt nem különösebben nagy ügy elintézni, hogy legyen nagyon kevés számú legfelső szintű div, azokon alapból display: none, és az js-ből legyen átállítva block / inline vagy akármire. Ha js nem fut, nem fog látszani semmi, csak egy üzenet, hogy kedves felhasználó, leszel szíves engedélyezni a js-t.

    De különben csatlakoznék azokhoz, akik tojnak rá. Aki letiltja a js-t, csak ignore, és nem foglalkozni vele, mi lesz az oldallal. Aki egy hulladék vacakot akar böngészőnek hívni, had büfögjön, amit csak akar, de ha az oldalt is akarja, lesz szíves letölteni egy böngészőt - chrome.

    Én például bele írtam a user guide-ba, hogy figyi felhasználó, nincs itt semmi ördöngösség, de ha valami mégsem megy, légyszi töltsd le ezt a böngészőt, és oda adtam egy chrome linket.

    Nekem erről egyből a Modernizr jutott eszembe, de nem tudom, hogy mennyire divatos még használni.

    Más.

    Ugyan csak lassacskán, de ismerkedem a TypeScripttel és van valami ami nem tudom, hogy miért nem működik. Az MS Authentication Libraryban adott egy type definition:

    export declare type AccountInfo = {
        homeAccountId: string;
        environment: string;
        tenantId: string;
        username: string;
        localAccountId: string;
        name?: string;
        idTokenClaims?: object;
    };

    AzA React komponensemben szeretnék hozzáférni egy custom idTokenClaimshez:

    const { accounts } = useMsal();
    const account = useAccount(accounts[0] || {});
    const customProp: IAccount = account?.idTokenClaims?.extension_customProp;

    Az account definíciója az AccountInfo. Az IAccount egy általam létrehozott interface, ahol az AccountInfo-t próbálom kibővíteni, lovasítom alapján ennek működnie kellene:

    interface IAccount extends AccountInfo {
      idTokenClaims: {
       extension_customProp: string;
      };
    }

    De akárhogy csavarom a dolgot az .extension_customProp-ra mindig azt kapom, hogy
    TS2339: Property 'extension_customProp' does not exist on type 'object'.

    Hol rontom el?

  • _ak_
    addikt

    Sziasztok,

    nem kimondottan JS téma, de azért kapcsolódik. 2 React app között szeretnék valós idejű kapcsolatot létrehozni. Az egyik egy kliens app, a másik egy manager app.
    Leegyszerűsítve chat és szavazás lebonyolítása a cél. A manager appból kellene indítani a szavazást ami a kliensen jelenik meg egy modal ablakban, illetve amikor kezdődik az esemény akkor átirányítani a usert a megfelelő oldalra.

    Mivel Azure környezetben vagyunk így adta volna magát a SignalR és mivel a consumption plan a cél, abból is a serverless változat upstreammel megfűszerezve...de itt teljesen összekuszálódik minden. MS doksik meglehetősen foghíjasak.
    Most gyakorlatilag ott tartok, hogy azt sem tudom, hogy mit lehet megcsinálni és mit nem ebben a felállásban.

    Van aki foglalkozott signalR-el és valamelyest nyomonköveti a fejlesztését? Érdemes tovább erőltetni a serverless megközelítést, ki tudja váltani a 'default' signalR-t?

    Ami most lelőtte a biztosítékot, hogy a manager appban tudni kellene ki csatlakoztak. Simán a serverless nem tudja, de az upstream tud onConnected eventet küldeni, dokisk írják is, hogy hogyan lehet az upstreamet 'beállítani'. De itt el is fogy a segítség, a function appban lehet egyáltalán ilyenkor JS-t használni vagy ez még CSHARP kiváltság? Ráadásul a serverless példák sima POST-ok, de úgy tűnik, hogy külön vannak bind-ok is az upstreamhez...

    Ha kesze-kuszának tűnik amit írtam, akkor elnézést, de jól tükrözi a jelenlegi állapotomat.

  • _ak_
    addikt

    Sziasztok!

    Nem nagyon értek a javascripthez, de azt nagyjából sejtem milyen irányban kell keresgélnem.

    Van ez a csodálatos honlap, hogy mno.hu. Ennek megvan az a jó szokása, amit rettenetesen utálok, hogy ha órákig meg van nyitva, akkor automatikusan lefrissül és ha pl. cikket olvastam és mondjuk elkattintottam máshová vagy vmi elterelte a figyelmem, mire visszatérek már le is frissült.

    Van egy olyan sejtésem, hogy a millió js fájl egyikében rejtőzik az a settimeout függvény, amit keresek, csak kérdés, hogy melyikben. Az időtartamra sem tudok rájönni.

    Régen ezt megoldották egy meta refresh taggel, aztán kész, ahhoz volt meta refresh blocker, de gondolom javascriptnél nem ilyen egyszerű a helyzet.

    Ha valaki esetleg tud segíteni, megköszönöm.

    Nem igazán js, de hátha: [link]

  • _ak_
    addikt

    Utólag is köszönöm mindenkinek a segítséget, bevallom eszembe sem jutott a SPA gondolata, pedig, magam is akartam barkácsolni gyakorlásképp, de ezek szerint annó nem sikerült az alapvető koncepcióját felfognom.

    Pechemre most egyedül vagyok webes, úgy hogy erősen csillagközi invázió állapot van, de így legalább tudom, hogy az esetleges szabadidőmben érdemes foglalkozni a kérdéssel és nem akartam hülyeséget. :R

  • _ak_
    addikt

    Sziasztok!

    A következőben szeretnék tőletek egy kis iránymutatást kérni.
    Egy olyan "weboldalra" lenne szükség, amit 99%-ban mobilról vagy tabletről használnának. Nálunk jelenleg, válogatás nélkül, mindent drupallal oldanak meg, amit Zurb Foundation-el alakítok mobil készre. Általában ennyi elég is, de jelen esetben úgy érzem, hogy nem a legjobb megoldás.
    Véleményem szerint remek választás lenne a Foundation for Apps keretrendszer használata és a drupal csak a backend részét töltené be, ami JSON adatokat küld, tehát utóbbi tényleg csak tartalomkezelésre lenne használva, míg előbbinek csak meg kell jelenítenie azt.

    A gondom az, hogy eddig nem dolgoztam még ilyen formában sem javascriptel, sem JSON adattal. Nem tudom, hogy hogyan lehetne a kettőt összehozni.

    Egyrészt nektek erről mi a véleményetek, másrészről pedig találkoztatok-e ilyen vagy ilyesmi párosítással? Én sajnos elbuktam a google teszten és nem is tudom, hogy merre induljak, hogy ez működjön, így ha jó az ötlet, akkor szükségem lenne egy pár kulcsszóra, vagy jó tutorialra, amin el tudnék indulni. :R

  • _ak_
    addikt

    "Egyszerű és nagyszerű, meg sem fordult a fejemben, hogy 'id'-ra tegyem a formázást..."
    Még jó is, hogy nem fordult meg a fejedben, mert illik sokkal általánosabban megoldani az ilyesmit, nem pedig id-vel szórakozni, és ezzel kb. örökre rögzíteni, hogy melyik elemet is fogod buzerálni. Vannak esetek, amikor ez nem számít, de többnyire mégis.

    Amúgy örülök, hogy nálad működik a "javított" demó, mert nálam konkrétan semmit nem csinál, igaz, összesen 5 másodpercnyi időt töltöttem a kipróbálásával, nem próbáltam elgondolkozni, mit csinál és mit kellene csinálnia. :D

    Ez most nem téma, mert ez csak egyszerű landing page, szóval belefér, bár ez az egyetlen -id lesz rajta. ;]

  • _ak_
    addikt

    Én lehet valami olyasmi módot választanék rá, ami nem background-image-t használ hanem, olyasmi mint a carousel. Ott akár lehetne slideUp(), slideDown() effektet használni akár. Vagy show('slow'), hide('slow') effektet. Nem tudom milyen most az oldal felépítése.

    Az sem rossz ötlet, ahogy nézem többségében inkább az opacity-t használják, teszek egy próbát először azzal. Minél egyszerűbb a megoldás, annál jobb. :R

  • _ak_
    addikt

    [link], css-el meg adsz neki animációt.

    Köszi! Egyszerű és nagyszerű, meg sem fordult a fejemben, hogy 'id'-ra tegyem a formázást...

    Már csak azon töprengek, hogy hogyan kerüljem meg a firefox background-image transition hiányát, de chrome alatt szépen működik. :R

  • _ak_
    addikt

    Sziasztok!

    Egy kis segítségre lenne szükségem, hogy merre induljak el.

    Vagy egy divem, aminek a hátterét szeretném változtatni, másik thumbnail div-re való kattintástól függően.
    Addig eljutottam, hogy jó lenne a div class-t változtatni és annak függvényében, más css töltődik be rá. De ez a toggleClass nem épp úgy csinálja , ráadásul jó lenne, ha esetleg valami átmeneti animáció is lenne képváltogatás közben.

    Ilyen, de ugye ez így nem vállalható, csak nem tudom, hogy mit lenne érdemes még megnézni.

  • _ak_
    addikt

    Sziasztok!

    Egy apró technikai kkérdésem lenne. Node.js-el ismerkedem jelenleg és nodemon-t használok, mindezt windows alatt. Akinek van ezzel tapasztalata meg tudná osztani, hogy mennyi idő alatt frissíti a módosításokat?
    Nálam 20-40ms kell neki, vagrant box alatt még több és csak legacy módban fut, de neten található tutorialnál sok 3-5ms-t látok. Page refresh esetén 1-2 ms-t, ami nálam megint csak inkább 3 ms átlagba.

    Arra lennék kíváncsi, hogy ez a win miatt "lassú" vagy csak a gépem lassabb ennyivel.

Új hozzászólás Aktív témák

Hirdetés