minicard.jade 7.2 KB

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