![]() Just the physical presence and visibility of LVT’s on-site security towers outside retail locations have helped many customers reduce theft by over 65%, and theft-related shrink costs by more than 85%. With active discovery, deterrence, and defense, LVT customers see a more than 60% reduction in violent crimes on their properties. LVT customers like the Kansas City Chiefs, Marathon Oil, the City of Camden, and thousands more use its proprietary systems to ensure public, employee, customer, and facility safety. LVT will use the funds to power even more advanced product research and development, continue recruiting top technical, manufacturing, and business talent, and drive expansion into the international security market. With demand for LVT’s rapidly deployable commercial security systems increasing across both public and private sectors, the company has grown 514% from last year's valuation. LVT’s user-friendly, enterprise-grade solutions quickly secure any physical environment using intelligent automation and actionable, real-time data. Rob Rueckert, Partner at Sorenson Capital, will join LVT’s Board of Directors. Miller Group and previous investment partners, Lead Edge Capital and Pelion Venture Partners. The company’s recurring revenue has grown 133% in the last year, and averaged over 100% in the last five years. SALT LAKE CITY, J(GLOBE NEWSWIRE) - LiveView Technologies (LVT), the leader in intelligent safety and security ecosystems, today announced that it has raised $50M in Series B funding in collaboration with growth investment firm Sorenson Capital. The search component’s template uses the query and value attributes of the assignment to ensure that the correct radio button is selected and that the search form input is correctly populated with a value if one is present.Innovative video software and safety surveillance solutions demonstrated to help reduce violent crime by 60%, decrease theft more than 65% in industries plagued by $49B in theft losses annually Let’s take a look at the component’s template now in order to understand how it uses the information in the search form’s state to render appropriately. The MessageLive.SearchComponent‘s template renders with the assignment, correctly rendering the search form to reflect any selected search query type and input. The MessageLive.Index‘s template calls live_component/3, passing through the assignment The MessageLive.Index live view’s template renders with the assignment render ( RailwayUiWeb.MessageView, "index.html", assigns ) end def mount ( _session, socket ) do socket = socket |> assign ( :page, 1 ) |> assign ( :search, % Search end ![]() Our live view module responds to search form events and maintains the state of the search form, handles the search form submission and renders the template with various search and pagination params.Ī simplified version of our live view looks something like this: defmodule do def render ( assigns ) do Phoenix.View. We’re using LiveView to enact the search functionality, pagination and maintain which messages are currently being displayed in state. Our app persists these messages in the DB and exposes a UI for users to list and search such persisted messages. Let’s say we have an application that uses a message broker like RabbitMQ to publish and consume messages between systems. Let’s take a look at how we can use components to refactor some complicated LiveView code in an existing application. This makes components a great way to peel off responsibilities from an overly complex live view. While stateless components don’t do much more than render a particular leex template, stateful components implement a handle_event/3 function that allow us to update the component’s own state. Since they share a process with their parent live view, communication between the two is simple (more on that later).Ĭomponents can be stateless or stateful. –– docsĬomponents are run inside a parent live view process via a call to _component/3. …a mechanism to compartmentalize state, markup, and events in LiveView. One way to achieve this goal is to leverage the Phoenix.LiveComponent behaviour.Ĭomponents are modules that use the Phoenix.LiveComponent behaviour. How can we write live views that are easy to reason about and maintain while adhering to common design principles like SRP? If we’re not careful, this can lead to “fat controller syndrome”––live views that are jam packed with complex business logic and disparate responsibilities, just like the classic “fat Rails controller”. ![]() As LiveView becomes a more established technology, we naturally find ourselves using it to back more and more complex features.
0 Comments
Leave a Reply. |