Skip to content

Commit b2f97fd

Browse files
authored
Merge pull request #133 from TinkoffCreditSystems/show_hide_card_by_click_on_personal_wip_limit
Показать или скрыть карточки по клику на аватар
2 parents d34886a + 6164c9c commit b2f97fd

File tree

1 file changed

+38
-13
lines changed

1 file changed

+38
-13
lines changed

src/person-limits/PersonLimits.js

Lines changed: 38 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ export default class extends PageModification {
4848
}
4949
5050
#avatars-limits .person-avatar {
51-
position: relative;
51+
cursor: pointer;
52+
position: relative;
5253
margin-right: 4px;
5354
width: 32px;
5455
height: 32px;
@@ -104,26 +105,25 @@ export default class extends PageModification {
104105
});
105106

106107
if (!this.avatarsList || !document.body.contains(this.avatarsList)) {
107-
this.avatarsList = this.insertHTML(
108-
document.querySelector('#subnav-title'),
109-
'beforeend',
110-
`
111-
<div id="avatars-limits">
112-
${stats
108+
const html = stats
113109
.map(
114110
personLimit => `
115111
<div class="person-avatar">
116112
<img src="${personLimit.person.avatar}" title="${personLimit.person.displayName}" class="jira-tooltip" />
117113
<div class="limit-stats">
118114
<span class="stats-current"></span>/<span>${personLimit.limit}</span>
119115
</div>
120-
</div>
121-
`
116+
</div>`
122117
)
123-
.join('')}
124-
</div>
125-
`
126-
);
118+
.join('');
119+
120+
this.avatarsList = document.createElement('div');
121+
122+
this.avatarsList.id = 'avatars-limits';
123+
this.avatarsList.innerHTML = html;
124+
125+
this.addEventListener(this.avatarsList, 'click', this.onClickAvatar);
126+
document.querySelector('#subnav-title').insertBefore(this.avatarsList, null);
127127
}
128128

129129
this.avatarsList.querySelectorAll('.limit-stats').forEach((stat, index) => {
@@ -135,6 +135,31 @@ export default class extends PageModification {
135135
});
136136
}
137137

138+
onClickAvatar(event) {
139+
const name = event.target.title;
140+
const cardsNodeList = document.querySelectorAll('.ghx-issue');
141+
const cards = Array.from(cardsNodeList);
142+
let cardsVisibility = event.target.getAttribute('view-my-cards');
143+
144+
if (cardsVisibility !== 'none') {
145+
cardsVisibility = 'none';
146+
event.target.setAttribute('view-my-cards', cardsVisibility);
147+
event.target.style.border = 'solid 1px red';
148+
} else {
149+
cardsVisibility = 'block';
150+
event.target.setAttribute('view-my-cards', cardsVisibility);
151+
event.target.style.border = 'none';
152+
}
153+
154+
cards
155+
.filter(n => !n.querySelector(`[data-tooltip="Assignee: ${name}"]`))
156+
.forEach(n => {
157+
if (n instanceof HTMLElement) {
158+
n.style.display = cardsVisibility;
159+
}
160+
});
161+
}
162+
138163
hasCustomSwimlines() {
139164
const someSwimline = document.querySelector(DOM.swimlaneHeaderContainer);
140165

0 commit comments

Comments
 (0)