Giter Club home page Giter Club logo

lara's People

Contributors

dependabot[bot] avatar pablocar80 avatar rachavz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

lara's Issues

Improve support for simultaneous events

When an element triggers more than one event from a unique action, the client may receive and apply the responses from the server in the wrong order. When the two actions need to be applied in the same order on the client than on the server, the client document goes out of sync.

We could improve this by making sure the client applies all responses in the same order as the server generates them. One option could be to generate sequential numbers and have the client hold responses that are out of order.

Develop web services with Lara

In order to develop web services, Lara needs to be included into an existing ASP.NET Core application with its own web services. It would be interesting to develop web services with Lara directly.

issues with event propagation

when both a child and parent element are registered with a click event, both events can fire simultaneously, with the resulting changes not applied correctly to the client DOM

Add support for long-running events

Sometimes we need to execute server events that take longer to complete and show a progress bar or some other information about progress.

crash when users opens multiple tabs concurrently

InvalidOperationException: Operations that change non-concurrent collections must have exclusive access. A concurrent update was performed on this collection and corrupted its state. The collection's state is no longer correct.

page reload when issuing event on removed element

In the following scenario:

  1. an event in the server removes an element from the document
  2. the element yields an event and sends it to the server before the event above replies
    This causes the server to receive an event from an element that cannot be found on the document, and consequently sends a page reload to the client.
    This event should be discarded instead.

Reload page after virtual connection lost

When the client "loses" its session on the server, due to server reboot, or the user reopening a previously closed tab -- the buttons and events simply don't work and the page seems broken. In these cases we should reload the page from the server.

Session storage tools

Develop methods to store and retrieve values associated with the current session Id.

Write wiki for project

The wiki page should have a quick start guide, tutorials, documentation and API reference.

add two-way binding support for input elements

For the elements that receive user input (input, textarea, select, button, option), we need a way to bind the input value and model such that the input value flows into the model.

Currently, the way to update a model with input values is to subscribe to the events that modify input values and code to update the model's properties.

add built-in support for debouncing client events

There are some events that can trigger too often, such as the "input" event. These events can generate too many messages with the server when subscribing to them. Ideally we should be able to subscribe to a "debounced" version of the event, where the developer specifies the debouncing interval in milliseconds.

client update fails when generating IDs on body children

In the case where the following conditions meet, event execution will fail:

  1. Executing an event that blocks the UI
  2. The event adds a child node to the document's body
  3. The node added in step 2 has itself child nodes

The reason has to do with the fact that the element to block the UI interferes with the engine's ability to generate IDs.

export LaraUI type definitions for TypeScript

The method LaraUI.message allows triggering custom server-side events from the client. The LaraUI class does not currently export types for writing TypeScript code that calls into it.

One workaround is to add the following code to client code:

namespace LaraUI {

    export interface MessageOptions {
        key: string;         // string that identifies the event
        data?: string;       // optional data string
        block?: boolean;     // optional: block the UI while sending?
        blockElementId?: string;    // optional: when blocking, block only a specific element
        blockHtml?: string;         // optional: override HTML shown when blocking
    }

    export declare var sendMessage: (options: MessageOptions) => void;
}

Create repository with demo desktop app

We could create a repository that runs a 'hello world' desktop app with an embedded browser, to have it as a starting point for developing desktop web apps.

Session.OnClose can take too long to trigger

The event Session.OnClose that signals when all tabs are closed, only happens when the inactive session collector executes, and this can take a long time. Sometimes we need to release resources much sooner.

Add 'ClearChildren' method to clear all child nodes

A ClearChildren method could be useful in cases where we create bootstrap alerts that are dismissed (i.e. deleted) by the client directly. Removing individual nodes is an issue in those cases because the server and client get out of sync due to local javascript changes. A ClearChildren method could help address this issue.

Add support for easily locking the UI on events

Add support for easily locking the UI on events. This is to prevent duplicate calls (e.g. user double-clicking buttons) and to prevent changes in input data while the data is being processed.

SVG tags created during events aren't rendered

SVG tags created during events aren't rendered. The reason is that the client is using the regular createElement and setAttribute instead of the methods required for SVG:

StackOverflow related question here

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.