NullVoxPopuli / limber

Glimdown playground for documentation, demos, etc

Home Page:https://limber.glimdown.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

tutorial todos

NullVoxPopuli opened this issue · comments

How to do Polling with a resource:

import { resourceFactory, resource } from 'ember-resources';

class State {
  // this part I don't know, and is specific to your use case
  @tracked foo;
  @tracked bar;
}

const Status = resourceFactory((pollingInternal = 10_000) => {
  return resource(({ on }) => {
    let state = new State();
    async function getStatus() {
       // make your request here 
       state.foo = "foo";
    }

    let interval = setInterval(getStatus, pollingInterval);

    on.cleanup(() => clearInterval(interval));

    return state;
  });
});

and then in a component or something:

{{#let (Status) as |status|}}
  {{status.foo}}
{{/let}}

or in js

class {
  @use status = Status;
  
   get foo() {
    return this.status.foo;
  }
}
Wait for composition to be more widely supported in ember-resources?
const Status = resourceFactory((pollingInternal = 10_000) => {
  return resource(({ on, use }) => {
    let time = cell(0);
    let request = use(TrackedFunction(async () => {
       // ...
    }, time));

    let interval = setInterval(() => time.current++, pollingInterval);

    on.cleanup(() => clearInterval(interval));

    return () => request.current;
  });
});

but this isn't implemented yet for TrackedFunction, and I think may have some ergonomics / coherance issues when done this way -- still need to work through it.

Convert to tutorial:

Convert to tutorial:

Fancy CSS effects

If you absolutely must

Topics to cover

Convert to tutorial:

more glimmer features:

  • unbound

j/k: https://discuss.emberjs.com/t/the-status-of-unbound/11187

no one should use this

Integrations with bonkers libraries

"an" implementation for throttle here

casting:

@value={{String f.value}}
@value2={{Boolean f.value}}

Custom reactive collections that are efficient on memory
demo here

Passing the constantly-reactive value from a resource to a helper
demo here

and the short way:
demo here

From socials:

  • is @cached getters / Formulas / and/or techniques for only triggering a tracked value only if it actually has changed.
  • data loading section could use more examples: ember-data, ember-concurrency, and custom logic (a la trackedfunction). Especially highlighting footguns, entanglement of tracked state, etc

add proper <style> tutorial chapters.

hopefully one of those two libraries allows for browser-only usage

ember / framework concepts: