(ns views.__table
  (:require [coast.components :refer [form]]
            [routes :refer [url-for action-for]])
  (:refer-clojure :exclude [new]))

(defn table-row [m]
  (let [{:keys [__columns]} m]
    [:tr
      __td-columns
      [:td
        [:a {:href (url-for :members/edit m)} "Edit"]]
      [:td
        [:a {:href (url-for :members/delete m)} "Delete"]]
      [:td
        [:a {:href (url-for :members/show m)} "Show"]]]))

(defn index [request]
  (let [{:keys [__table]} request]
    [:div
      [:table
        [:thead
          [:tr
            __th-columns]]
        [:tbody
          (for [m __table]
            (table-row m))]]
      [:div
        [:a {:href (url-for :members/new)} "New __singular"]]]))

(defn show [request]
  (let [{:keys [__singular]} request
        {:keys [__columns]} __singular]
    [:div
      __div-columns
      [:div
       [:a {:href (url-for :members/delete __singular)} "Delete"]]
      [:div
        [:a {:href (url-for :members/index)} "Back"]]]))

(defn new [request]
  (let [{:keys [__singular]} request
        {:keys [__columns]} __singular]
    [:div
     (form (action-for :members/create)
       __form-columns
       [:input {:type "submit" :value "Create"}])]))

(defn edit [request]
  (let [{:keys [__singular]} request
        {:keys [__columns]} __singular]
    [:div
     (form (action-for :members/update __singular)
       __form-columns
       [:input {:type "submit" :value "Save"}])]))
