DataSlotsView.html 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. <ul class="list fields slots" role="list" tabindex="-1">
  2. {{
  3. var index = 0;
  4. }}
  5. {{~it.datasets :value}}
  6. {{
  7. var layer = value.name;
  8. var slots = it.groupedSlotsByDataset[layer];
  9. var layerText = value.caption;
  10. var showLayerLabel = it.datasets.length > 1 && layerText !== undefined;
  11. var state = !showLayerLabel || it.underscore.contains(it.visibleLayers,layer);
  12. var stateLabel = state ? it.collapseLabel : it.expandLabel;
  13. }}
  14. <div class="{{=layer}} completeLayer {{?state}}expanded{{??}}collapsed{{?}}" role="list" aria-expanded="{{=state}}">
  15. {{?showLayerLabel}}
  16. <div class="{{=layer}} layerTitle" title="{{=layerText}}">
  17. <div class="{{=layer}} layerExpanderButton" id="{{=layer}}" role="button" tabindex="0" title="{{=stateLabel}}">
  18. <svg class="svgIcon" style="height:12px; width:12px; pointer-events:none;" aria-label="{{=stateLabel}}" title="{{=stateLabel}}">
  19. <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#{{!it.chevronRightIcon}}"></use>
  20. </svg>
  21. </div>
  22. <div class="layerText">{{=layerText}}</div>
  23. </div>
  24. {{?}}
  25. <div class="{{=layer}} {{?!showLayerLabel}}singleLayer{{??}}multiLayer{{?}} layerSlots">
  26. {{~slots :slot}}
  27. {{? !slot.hidden }}
  28. <li class="slot columnItem {{=slot.noMapping}}" mappedItems="{{=slot.mappings.length}}"
  29. data-slot-id="{{=slot.id}}" slot-index="{{=index}}" map-index="-1" role="listitem">
  30. <div class="title" title="{{!slot.caption}}">
  31. {{? slot.iconUrl }}
  32. <img alt="{{!slot.caption}}" class="svgIcon columnIcon" role="img" src="{{!slot.iconUrl}}" aria-label="{{!slot.caption}}" focusable=false></img>
  33. {{?? slot.icon }}
  34. <svg class="svgIcon columnIcon" role="img" aria-label="{{!slot.caption}}" title="{{!slot.caption}}">
  35. <use style="pointer-events: none;" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#{{!slot.icon.id}}">
  36. <title>
  37. {{!slot.caption}}
  38. </title>
  39. </use>
  40. </svg>
  41. {{?}}
  42. <div class="columnLabel">{{!slot.caption}}{{? !slot.optional && slot.showRequiredMarker}} <span class="optionalSign">*</span>{{?}}</div>
  43. <div class="dropfirst" tabindex="0" aria-required="{{=!slot.optional}}">
  44. <div class="line"></div>
  45. </div>
  46. </div>
  47. <div class="slotContainer {{?slot.shapable}}infographicZone{{?}}">
  48. {{~slot.mappings :mapping:mapIndex}}
  49. <div class="dropafter" tabindex="0" mappedItems="{{=slot.mappings.length}}"
  50. data-slot-id="{{=slot.id}}" map-index="{{=mapIndex}}">
  51. <div class="line"></div>
  52. </div>
  53. <div class="listitem columnName {{=slot.noMapping}} {{? mapping.unavailable === true}}unavailable{{?}}" tabindex="0" data-slot-id="{{=slot.id}}"
  54. {{? mapping.mappingId !== undefined }} data-mapping-id="{{=mapping.mappingId}}"{{?}}
  55. {{? mapping.columnId !== undefined }} data-column-id="{{=mapping.columnId}}"{{?}}
  56. {{? slot.optional !== undefined }} data-optional="{{=slot.optional}}"{{?}}
  57. map-index ="{{=mapIndex}}" aria-label="{{!mapping.name}}"
  58. {{? it.maxWidth !== undefined }} style="max-width: {{=it.maxWidth}};"{{?}}>
  59. <div class="infoRegion">
  60. <div class="slotInfo">
  61. <div title="{{!mapping.name}}" class="mappingLabel">
  62. {{!mapping.name}}
  63. </div>
  64. <div class='graphic'>
  65. {{? it.graphic.length}}
  66. {{it.graphic.content}}
  67. {{?}}
  68. {{? slot.shapeDropEnabled && it.graphic.length === 0}}
  69. <span class="webfont wfg_shape" title='{{=it.infographicShapeLabel}}' role="img"></span>
  70. {{?}}
  71. </div>
  72. </div>
  73. {{? mapping.configurable }}
  74. <div class="menuoverflow">
  75. <svg class="svgIcon columnIcon" role="img" aria-label="" focusable=false>
  76. <use style="pointer-events: none;" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#{{!it.menuOverflowIcon}}">
  77. </use>
  78. </svg>
  79. </div>
  80. {{?}}
  81. </div>
  82. {{?mapping.filterString}}
  83. <div class="filterRegion">
  84. <div title="{{!mapping.filterString}}" class="filterLabel" {{?it.filterStringMaxWidth}}style="max-width: {{=it.filterStringMaxWidth}};"{{?}}>
  85. {{!mapping.filterString}}
  86. </div>
  87. {{?mapping.numberOfFilters}}
  88. <div class="circleBg">
  89. <div class="numberOfFilters">
  90. {{!mapping.numberOfFilters}}
  91. </div>
  92. </div>
  93. {{?}}
  94. </div>
  95. {{?}}
  96. </div>
  97. {{~}}
  98. {{? slot.mappings.length > 0}}
  99. <div class="dropafter" tabindex="0" mappedItems="{{=slot.mappings.length}}"
  100. data-slot-id="{{=slot.id}}" map-index="{{=slot.mappings.length}}">
  101. <div class="line"></div>
  102. </div>
  103. {{?}}
  104. </div>
  105. </li>
  106. {{
  107. index++;
  108. }}
  109. {{?}}
  110. {{~}}
  111. </div>
  112. </div>
  113. {{~}}
  114. {{?it.missingFilters.length >0}}
  115. <li class="columnName missingFilterLabel">
  116. <svg class="svgIcon error" role="img" focusable="false"><use style="pointer-events: none; " xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#{{!it.errorIcon}}"></use></svg>
  117. {{=it.missingFiltersLabel}}
  118. <svg class="svgIcon removeMissingFilters" role="img" tabindex="0" aria-label="{{!it.deleteLabel}}" title="{{!it.deleteLabel}}">
  119. <use style="pointer-events: none;" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#{{!it.closeIcon}}"></use>
  120. </svg>
  121. </li>
  122. {{~it.missingFilters :value:index}}
  123. <li class="listitem columnName missingFilter {{?index == it.missingFilters.length -1}}bottom{{?}}" role="listitem">
  124. <div tabindex="0">{{=value}}</div>
  125. </li>
  126. {{~}}
  127. {{?}}
  128. <li class="localFilter columnItem{{?it.filters.length === 0}} noMapping {{?}}" role="listitem" slot-index="{{=it.slots.length+1}}">
  129. <div class="title" title="{{!it.ContextFiltersLabel}}">
  130. <svg class="svgIcon columnIcon" role="img" aria-label="{{!it.ContextFiltersLabel}}" focusable=false>
  131. <use style="pointer-events: none;" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#{{!it.filterIcon}}">
  132. {{!it.ContextFiltersLabel}}
  133. <title>
  134. {{!it.ContextFiltersLabel}}
  135. </title>
  136. </use>
  137. </svg>
  138. <div class="columnLabel">{{!it.ContextFiltersLabel}}</div>
  139. <div class="dropfirst" tabindex="0">
  140. <div class="line"></div>
  141. </div>
  142. </div>
  143. <div class="slotContainer">
  144. {{~it.filters :filter:index}}
  145. <div class="listitem columnName" data-filter-id="{{=filter.id}}"
  146. {{? filter.columnId !== undefined }} data-column-id="{{=filter.columnId}}"{{?}}
  147. {{? it.maxWidth !== undefined }} style="max-width: {{=it.maxWidth}};"{{?}}
  148. aria-label="{{!filter.name}}" tabindex="0">
  149. <div class="infoRegion">
  150. <div class="slotInfo">
  151. <div title="{{!filter.name}}" class="mappingLabel">
  152. {{!filter.name}}
  153. </div>
  154. </div>
  155. <div class="menuoverflow">
  156. <svg class="svgIcon columnIcon" role="img" aria-label="" focusable=false>
  157. <use style="pointer-events: none;" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#{{!it.menuOverflowIcon}}">
  158. </use>
  159. </svg>
  160. </div>
  161. </div>
  162. {{?filter.filterString}}
  163. <div class="filterRegion">
  164. <div title="{{!filter.filterString}}" class="filterLabel" {{?it.filterStringMaxWidth}}style="max-width: {{=it.filterStringMaxWidth}};"{{?}}>
  165. {{!filter.filterString}}
  166. </div>
  167. {{?filter.numberOfFilters}}
  168. <div class="circleBg">
  169. <div class="numberOfFilters">
  170. {{!filter.numberOfFilters}}
  171. </div>
  172. </div>
  173. {{?}}
  174. </div>
  175. {{?}}
  176. </div>
  177. {{~}}
  178. </div>
  179. </li>
  180. <li class="hintItem columnItem">
  181. {{= it.requiredFieldsDescription }}
  182. </li>
  183. <li class="hintItem columnItem">
  184. <svg class="svgIcon columnIcon" role="img">
  185. <use style="pointer-events: none;" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#{{!it.informationIcon}}"></use>
  186. </svg>
  187. <div>{{= it.dragAndDropDescription }}</div>
  188. </li>
  189. </ul>
  190. {{? it.heatByItem !== undefined }}
  191. <div class="columnHeader">{{=it.heatByLabel}}</div>
  192. <ul class="heatByZone" role="list" tabindex="0">
  193. {{~it.heatByItem :slot:index}}
  194. <li class="columnItem" role="listitem">
  195. <div class="listitem columnName" tabindex="0"
  196. data-column-id="{{=slot.columnId}}"
  197. data-column-label="{{=slot.columnLabel}}"
  198. data-slot-id="{{=slot.id}}"
  199. aria-label="{{!slot.columnLabel}}">
  200. <button class="wfg_remove" title="{{!it.deleteLabel}}"></button>
  201. {{!slot.columnLabel}}
  202. </div>
  203. </li>
  204. {{~}}
  205. </ul>
  206. {{?}}