minicard.jade 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. template(name="minicard")
  2. .minicard(
  3. class="{{#if isLinkedCard}}linked-card{{/if}}"
  4. class="{{#if isLinkedBoard}}linked-board{{/if}}"
  5. class="{{#if colorClass}}minicard-{{colorClass}}{{/if}}")
  6. if currentUser.isAdmin
  7. if isTouchScreenOrShowDesktopDragHandles
  8. a.fa.fa-navicon.minicard-details-menu-with-handle.js-open-minicard-details-menu(title="{{_ 'cardDetailsActionsPopup-title'}}")
  9. .handle
  10. .fa.fa-arrows
  11. else
  12. a.fa.fa-navicon.minicard-details-menu.js-open-minicard-details-menu(title="{{_ 'cardDetailsActionsPopup-title'}}")
  13. if currentUser.isNormal
  14. if isTouchScreenOrShowDesktopDragHandles
  15. a.fa.fa-navicon.minicard-details-menu-with-handle.js-open-minicard-details-menu(title="{{_ 'cardDetailsActionsPopup-title'}}")
  16. .handle
  17. .fa.fa-arrows
  18. else
  19. a.fa.fa-navicon.minicard-details-menu.js-open-minicard-details-menu(title="{{_ 'cardDetailsActionsPopup-title'}}")
  20. .dates
  21. if getReceived
  22. unless getStart
  23. unless getDue
  24. unless getEnd
  25. .date
  26. +minicardReceivedDate
  27. if getStart
  28. .date
  29. +minicardStartDate
  30. if getDue
  31. .date
  32. +minicardDueDate
  33. if getEnd
  34. +minicardEndDate
  35. if getSpentTime
  36. .date
  37. +cardSpentTime
  38. if cover
  39. if currentBoard.allowsCoverAttachmentOnMinicard
  40. .minicard-cover(style="background-image: url('{{cover.link 'original'}}?dummyReloadAfterSessionEstablished={{sess}}');")
  41. .minicard-title
  42. if $eq 'prefix-with-full-path' currentBoard.presentParentTask
  43. .parent-prefix
  44. | {{ parentString ' > ' }}
  45. if $eq 'prefix-with-parent' currentBoard.presentParentTask
  46. .parent-prefix
  47. | {{ parentCardName }}
  48. if isLinkedBoard
  49. a.js-linked-link
  50. span.linked-icon.fa.fa-folder
  51. else if isLinkedCard
  52. a.js-linked-link
  53. span.linked-icon.fa.fa-id-card
  54. if getArchived
  55. span.linked-icon.linked-archived.fa.fa-archive
  56. +viewer
  57. if currentBoard.allowsCardNumber
  58. span.card-number
  59. | ##{getCardNumber}
  60. = getTitle
  61. if $eq 'subtext-with-full-path' currentBoard.presentParentTask
  62. .parent-subtext
  63. | {{ parentString ' > ' }}
  64. if $eq 'subtext-with-parent' currentBoard.presentParentTask
  65. .parent-subtext
  66. | {{ parentCardName }}
  67. if labels
  68. .minicard-labels(class="{{#if hiddenMinicardLabelText}}minicard-labels-no-text{{/if}}")
  69. each labels
  70. unless hiddenMinicardLabelText
  71. span.js-card-label.card-label(class="card-label-{{color}}" title=name)
  72. +viewer
  73. = name
  74. if hiddenMinicardLabelText
  75. .minicard-label(class="card-label-{{color}}" title="{{name}}")
  76. .minicard-custom-fields
  77. each customFieldsWD
  78. if definition.showOnCard
  79. if trueValue
  80. .minicard-custom-field
  81. // If there is custom field label, show label at left,
  82. // and value at right
  83. if definition.showLabelOnMiniCard
  84. .minicard-custom-field-item
  85. +viewer
  86. = definition.name
  87. .minicard-custom-field-item
  88. if $eq definition.type "currency"
  89. +viewer
  90. = formattedCurrencyCustomFieldValue(definition)
  91. else if $eq definition.type "date"
  92. .date
  93. +minicardCustomFieldDate
  94. else if $eq definition.type "checkbox"
  95. .materialCheckBox(class="{{#if value }}is-checked{{/if}}")
  96. else if $eq definition.type "stringtemplate"
  97. +viewer
  98. = formattedStringtemplateCustomFieldValue(definition)
  99. else
  100. +viewer
  101. = trueValue
  102. else
  103. // If there is no custom field label,
  104. // show value full width
  105. .minicard-custom-field-item-fullwidth
  106. if $eq definition.type "currency"
  107. +viewer
  108. = formattedCurrencyCustomFieldValue(definition)
  109. else if $eq definition.type "date"
  110. .date
  111. +minicardCustomFieldDate
  112. else if $eq definition.type "checkbox"
  113. .materialCheckBox(class="{{#if value }}is-checked{{/if}}")
  114. else if $eq definition.type "stringtemplate"
  115. +viewer
  116. = formattedStringtemplateCustomFieldValue(definition)
  117. else
  118. +viewer
  119. = trueValue
  120. .card-checklist-attachmentGalleries
  121. .card-checklist-attachmentGallery.card-checklists
  122. if currentBoard.allowsChecklists
  123. //hr
  124. //+checklists(cardId=_id showAtMinicard=true)
  125. if showAssignee
  126. if getAssignees
  127. .minicard-assignees.js-minicard-assignees
  128. each getAssignees
  129. +userAvatar(userId=this)
  130. if showMembers
  131. if getMembers
  132. .minicard-members.js-minicard-members
  133. each getMembers
  134. +userAvatar(userId=this)
  135. if showCreatorOnMinicard
  136. .minicard-creator
  137. +userAvatar(userId=this.userId noRemove=true)
  138. .badges
  139. unless currentUser.isNoComments
  140. if comments.length
  141. .badge(title="{{_ 'card-comments-title' comments.length }}")
  142. span.badge-icon.fa.fa-comment-o.badge-comment.badge-text
  143. = ' '
  144. = comments.length
  145. //span.badge-comment.badge-text
  146. //| {{_ 'comment'}}
  147. if getDescription
  148. unless currentBoard.allowsDescriptionTextOnMinicard
  149. .badge.badge-state-image-only(title=getDescription)
  150. span.badge-icon.fa.fa-align-left
  151. if getVoteQuestion
  152. .badge.badge-state-image-only(title=getVoteQuestion)
  153. span.badge-icon.fa.fa-thumbs-up(class="{{#if voteState}}text-green{{/if}}")
  154. span.badge-text {{ voteCountPositive }}
  155. span.badge-icon.fa.fa-thumbs-down(class="{{#if $eq voteState false}}text-red{{/if}}")
  156. span.badge-text {{ voteCountNegative }}
  157. if getPokerQuestion
  158. .badge.badge-state-image-only(title=getPokerQuestion)
  159. span.badge-icon.fa.fa-check(class="{{#if pokerState}}text-green{{/if}}")
  160. if expiredPoker
  161. span.badge-text {{ getPokerEstimation }}
  162. if attachments.length
  163. if currentBoard.allowsBadgeAttachmentOnMinicard
  164. .badge
  165. span.badge-icon.fa.fa-paperclip
  166. span.badge-text= attachments.length
  167. if checklists.length
  168. .badge(class="{{#if checklistFinished}}is-finished{{/if}}")
  169. span.badge-icon.fa.fa-check-square-o
  170. span.badge-text.check-list-text {{checklistFinishedCount}}/{{checklistItemCount}}
  171. if allSubtasks.count
  172. .badge
  173. span.badge-icon.fa.fa-sitemap
  174. span.badge-text.check-list-text {{subtasksFinishedCount}}/{{allSubtasksCount}}
  175. //{{subtasksFinishedCount}}/{{subtasksCount}} does not work because when a subtaks is archived, the count goes down
  176. if currentBoard.allowsCardSortingByNumber
  177. if currentBoard.allowsCardSortingByNumberOnMinicard
  178. .badge
  179. span.badge-icon.fa.fa-sort
  180. span.badge-text.check-list-sort {{ sort }}
  181. if currentBoard.allowsDescriptionTextOnMinicard
  182. if getDescription
  183. .minicard-description
  184. +viewer
  185. | {{ getDescription }}
  186. template(name="editCardSortOrderPopup")
  187. input.js-edit-card-sort-popup(type='text' autofocus value=sort dir="auto")
  188. .edit-controls.clearfix
  189. button.primary.confirm.js-submit-edit-card-sort-popup(type="submit") {{_ 'save'}}
  190. template(name="minicardDetailsActionsPopup")
  191. ul.pop-over-list
  192. if currentUser.isBoardAdmin
  193. li
  194. a.js-move-card
  195. i.fa.fa-arrow-right
  196. | {{_ 'moveCardPopup-title'}}
  197. unless currentUser.isWorker
  198. li
  199. a.js-copy-card
  200. i.fa.fa-copy
  201. | {{_ 'copyCardPopup-title'}}
  202. hr
  203. li
  204. a.js-archive
  205. i.fa.fa-arrow-right
  206. i.fa.fa-archive
  207. | {{_ 'archive-card'}}
  208. hr
  209. li
  210. a.js-move-card-to-top
  211. i.fa.fa-arrow-up
  212. | {{_ 'moveCardToTop-title'}}
  213. li
  214. a.js-move-card-to-bottom
  215. i.fa.fa-arrow-down
  216. | {{_ 'moveCardToBottom-title'}}
  217. hr
  218. li
  219. a.js-add-labels
  220. i.fa.fa-tags
  221. | {{_ 'card-edit-labels'}}
  222. li
  223. a.js-due-date
  224. i.fa.fa-sign-in
  225. | {{_ 'editCardDueDatePopup-title'}}
  226. li
  227. a.js-set-card-color
  228. i.fa.fa-paint-brush
  229. | {{_ 'setCardColorPopup-title'}}
  230. li
  231. a.js-link
  232. i.fa.fa-link
  233. | {{_ 'link-card'}}