forked from shibao/cannery
		
	add inital_key and initial_sort_mode to table component
This commit is contained in:
		@@ -36,18 +36,38 @@ defmodule CanneryWeb.Components.TableComponent do
 | 
			
		||||
              list(%{
 | 
			
		||||
                (key :: atom()) => any() | {custom_sort_value :: String.t(), value :: any()}
 | 
			
		||||
              }),
 | 
			
		||||
            optional(:inital_key) => atom(),
 | 
			
		||||
            optional(:initial_sort_mode) => atom(),
 | 
			
		||||
            optional(any()) => any()
 | 
			
		||||
          },
 | 
			
		||||
          Socket.t()
 | 
			
		||||
        ) :: {:ok, Socket.t()}
 | 
			
		||||
  def update(%{columns: columns, rows: rows} = assigns, socket) do
 | 
			
		||||
    initial_key = columns |> List.first() |> Map.get(:key)
 | 
			
		||||
    rows = rows |> Enum.sort_by(fn row -> row |> Map.get(initial_key) end, :asc)
 | 
			
		||||
    initial_key =
 | 
			
		||||
      if assigns |> Map.has_key?(:initial_key) do
 | 
			
		||||
        assigns.initial_key
 | 
			
		||||
      else
 | 
			
		||||
        columns |> List.first() |> Map.get(:key)
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
    initial_sort_mode =
 | 
			
		||||
      if assigns |> Map.has_key?(:initial_sort_mode) do
 | 
			
		||||
        assigns.initial_sort_mode
 | 
			
		||||
      else
 | 
			
		||||
        :asc
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
    rows = rows |> Enum.sort_by(fn row -> row |> Map.get(initial_key) end, initial_sort_mode)
 | 
			
		||||
 | 
			
		||||
    socket =
 | 
			
		||||
      socket
 | 
			
		||||
      |> assign(assigns)
 | 
			
		||||
      |> assign(columns: columns, rows: rows, last_sort_key: initial_key, sort_mode: :asc)
 | 
			
		||||
      |> assign(
 | 
			
		||||
        columns: columns,
 | 
			
		||||
        rows: rows,
 | 
			
		||||
        last_sort_key: initial_key,
 | 
			
		||||
        sort_mode: initial_sort_mode
 | 
			
		||||
      )
 | 
			
		||||
 | 
			
		||||
    {:ok, socket}
 | 
			
		||||
  end
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user