瀏覽代碼

Set favicon to documentation icon on open

Jasper van Merle 6 年之前
父節點
當前提交
d640a8ee22
共有 1 個文件被更改,包括 25 次插入0 次删除
  1. 25 0
      assets/javascripts/views/sidebar/doc_list.coffee

+ 25 - 0
assets/javascripts/views/sidebar/doc_list.coffee

@@ -94,6 +94,8 @@ class app.views.DocList extends app.View
     $.stopEvent(event)
     doc = app.docs.findBy 'slug', event.target.getAttribute('data-slug')
 
+    @setFaviconForDoc(doc)
+
     if doc and not @lists[doc.slug]
       @lists[doc.slug] = if doc.types.isEmpty()
         new app.views.EntryList doc.entries.all()
@@ -111,6 +113,29 @@ class app.views.DocList extends app.View
       delete @lists[doc.slug]
     return
 
+  setFaviconForDoc: (doc) ->
+    link = $("a._list-item[data-slug='#{doc.slug}']")
+    styles = window.getComputedStyle(link, ':before')
+
+    bgUrl = styles['background-image'].slice(5, -2)
+    bgSize = if bgUrl.includes('@2x') then 32 else 16
+    bgPositions = styles['background-position'].split(' ')
+    bgX = parseInt(bgPositions[0].slice(0, -2))
+    bgY = parseInt(bgPositions[1].slice(0, -2))
+
+    img = new Image()
+    img.src = bgUrl
+    img.onload = () =>
+      canvas = document.createElement('canvas')
+
+      canvas.width = bgSize
+      canvas.height = bgSize
+      canvas.getContext('2d').drawImage(img, bgX, bgY)
+
+      $('link[rel="icon"]').href = canvas.toDataURL()
+      return
+    return
+
   select: (model) ->
     @listSelect.selectByHref model?.fullPath()
     return