aboutsummaryrefslogtreecommitdiffhomepage
path: root/explore.lisp
blob: 1774a2d9e43569f17889b1958463a8756f6907f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
;;; explore.lisp

(in-package :vampire)

(defun create-media-search-area (parent)
  (with-clog-create parent
      (p (:content "media search area"))))

(defun create-playlist-explore-card (parent pl)
  (with-clog-create parent
      (div (:bind card)
           (a (:link (url-to-playlist pl) )
              (img (:bind thumb))
              (br ())
              (span (:content (playlist-title pl)))
              (span (:content " -- "))
              (span (:content (secs-to-hms (playlist-duration pl))))))
    (setf (maximum-width thumb) "180px"
          (width card) "200px")
    (when-let (track (first (playlist-tracks pl)))
      (setf (url-src thumb) (or (track-thumb-url track) "")))))

(defun create-recent-playlists-area (parent)
  (let* ((container (create-div parent :class "row")))
    (dolist (pl (recent-playlists 100))
      (create-playlist-explore-card container pl))))

(defun create-user-list (parent)
  (with-clog-create parent
      (unordered-list (:bind user-container))
    (dolist (user (store-objects-with-class 'user))
      (with-clog-create user-container 
          (list-item () 
                     (a (:link (url-to-user user)
                         :content (format nil " ~a " (user-name user)))))))))

(defun explore-page (body)
  (include-style body)
  (with-clog-create body
      (div ()
           (navigation-header ())
           (div (:class "row")
                (div (:bind playlist-area)
                     (section (:h2 :content "Recent Playlists" :class "center"))
                     (recent-playlists-area ()))
                (div ()
                     (section (:h3 :content "Who uses this?" :class "center"))
                     (user-list ()))))
    (setf (maximum-width playlist-area) "80%"
          (minimum-width playlist-area) "500px")))