fix all eslint violations in user_tabs.js
This commit is contained in:
parent
a6732f59e4
commit
ffa4cedab6
1 changed files with 73 additions and 80 deletions
|
@ -1,66 +1,59 @@
|
||||||
/* eslint-disable max-len, space-before-function-paren, no-underscore-dangle, consistent-return, comma-dangle, no-unused-vars, dot-notation, no-new, no-return-assign, camelcase, no-param-reassign, class-methods-use-this */
|
|
||||||
|
|
||||||
import ActivityCalendar from './activity_calendar';
|
import ActivityCalendar from './activity_calendar';
|
||||||
|
|
||||||
/*
|
/**
|
||||||
UserTabs
|
* UserTabs
|
||||||
|
*
|
||||||
Handles persisting and restoring the current tab selection and lazily-loading
|
* Handles persisting and restoring the current tab selection and lazily-loading
|
||||||
content on the Users#show page.
|
* content on the Users#show page.
|
||||||
|
*
|
||||||
### Example Markup
|
* ### Example Markup
|
||||||
|
*
|
||||||
<ul class="nav-links">
|
* <ul class="nav-links">
|
||||||
<li class="activity-tab active">
|
* <li class="activity-tab active">
|
||||||
<a data-action="activity" data-target="#activity" data-toggle="tab" href="/u/username">
|
* <a data-action="activity" data-target="#activity" data-toggle="tab" href="/u/username">
|
||||||
Activity
|
* Activity
|
||||||
</a>
|
* </a>
|
||||||
</li>
|
* </li>
|
||||||
<li class="groups-tab">
|
* <li class="groups-tab">
|
||||||
<a data-action="groups" data-target="#groups" data-toggle="tab" href="/u/username/groups">
|
* <a data-action="groups" data-target="#groups" data-toggle="tab" href="/u/username/groups">
|
||||||
Groups
|
* Groups
|
||||||
</a>
|
* </a>
|
||||||
</li>
|
* </li>
|
||||||
<li class="contributed-tab">
|
* <li class="contributed-tab">
|
||||||
<a data-action="contributed" data-target="#contributed" data-toggle="tab" href="/u/username/contributed">
|
* ...
|
||||||
Contributed projects
|
* </li>
|
||||||
</a>
|
* <li class="projects-tab">
|
||||||
</li>
|
* ...
|
||||||
<li class="projects-tab">
|
* </li>
|
||||||
<a data-action="projects" data-target="#projects" data-toggle="tab" href="/u/username/projects">
|
* <li class="snippets-tab">
|
||||||
Personal projects
|
* ...
|
||||||
</a>
|
* </li>
|
||||||
</li>
|
* </ul>
|
||||||
<li class="snippets-tab">
|
*
|
||||||
<a data-action="snippets" data-target="#snippets" data-toggle="tab" href="/u/username/snippets">
|
* <div class="tab-content">
|
||||||
</a>
|
* <div class="tab-pane" id="activity">
|
||||||
</li>
|
* Activity Content
|
||||||
</ul>
|
* </div>
|
||||||
|
* <div class="tab-pane" id="groups">
|
||||||
<div class="tab-content">
|
* Groups Content
|
||||||
<div class="tab-pane" id="activity">
|
* </div>
|
||||||
Activity Content
|
* <div class="tab-pane" id="contributed">
|
||||||
</div>
|
* Contributed projects content
|
||||||
<div class="tab-pane" id="groups">
|
* </div>
|
||||||
Groups Content
|
* <div class="tab-pane" id="projects">
|
||||||
</div>
|
* Projects content
|
||||||
<div class="tab-pane" id="contributed">
|
* </div>
|
||||||
Contributed projects content
|
* <div class="tab-pane" id="snippets">
|
||||||
</div>
|
* Snippets content
|
||||||
<div class="tab-pane" id="projects">
|
* </div>
|
||||||
Projects content
|
* </div>
|
||||||
</div>
|
*
|
||||||
<div class="tab-pane" id="snippets">
|
* <div class="loading-status">
|
||||||
Snippets content
|
* <div class="loading">
|
||||||
</div>
|
* Loading Animation
|
||||||
</div>
|
* </div>
|
||||||
|
* </div>
|
||||||
<div class="loading-status">
|
*/
|
||||||
<div class="loading">
|
|
||||||
Loading Animation
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
*/
|
|
||||||
|
|
||||||
const CALENDAR_TEMPLATE = `
|
const CALENDAR_TEMPLATE = `
|
||||||
<div class="clearfix calendar">
|
<div class="clearfix calendar">
|
||||||
|
@ -72,12 +65,12 @@ const CALENDAR_TEMPLATE = `
|
||||||
`;
|
`;
|
||||||
|
|
||||||
export default class UserTabs {
|
export default class UserTabs {
|
||||||
constructor ({ defaultAction, action, parentEl }) {
|
constructor({ defaultAction, action, parentEl }) {
|
||||||
this.loaded = {};
|
this.loaded = {};
|
||||||
this.defaultAction = defaultAction || 'activity';
|
this.defaultAction = defaultAction || 'activity';
|
||||||
this.action = action || this.defaultAction;
|
this.action = action || this.defaultAction;
|
||||||
this.$parentEl = $(parentEl) || $(document);
|
this.$parentEl = $(parentEl) || $(document);
|
||||||
this._location = window.location;
|
this.windowLocation = window.location;
|
||||||
this.$parentEl.find('.nav-links a')
|
this.$parentEl.find('.nav-links a')
|
||||||
.each((i, navLink) => {
|
.each((i, navLink) => {
|
||||||
this.loaded[$(navLink).attr('data-action')] = false;
|
this.loaded[$(navLink).attr('data-action')] = false;
|
||||||
|
@ -93,12 +86,10 @@ export default class UserTabs {
|
||||||
}
|
}
|
||||||
|
|
||||||
bindEvents() {
|
bindEvents() {
|
||||||
this.changeProjectsPageWrapper = this.changeProjectsPage.bind(this);
|
this.$parentEl
|
||||||
|
.off('shown.bs.tab', '.nav-links a[data-toggle="tab"]')
|
||||||
this.$parentEl.off('shown.bs.tab', '.nav-links a[data-toggle="tab"]')
|
.on('shown.bs.tab', '.nav-links a[data-toggle="tab"]', event => this.tabShown(event))
|
||||||
.on('shown.bs.tab', '.nav-links a[data-toggle="tab"]', event => this.tabShown(event));
|
.on('click', '.gl-pagination a', event => this.changeProjectsPage(event));
|
||||||
|
|
||||||
this.$parentEl.on('click', '.gl-pagination a', this.changeProjectsPageWrapper);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
changeProjectsPage(e) {
|
changeProjectsPage(e) {
|
||||||
|
@ -133,7 +124,7 @@ export default class UserTabs {
|
||||||
|
|
||||||
const loadableActions = ['groups', 'contributed', 'projects', 'snippets'];
|
const loadableActions = ['groups', 'contributed', 'projects', 'snippets'];
|
||||||
if (loadableActions.indexOf(action) > -1) {
|
if (loadableActions.indexOf(action) > -1) {
|
||||||
return this.loadTab(action, endpoint);
|
this.loadTab(action, endpoint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -142,14 +133,13 @@ export default class UserTabs {
|
||||||
beforeSend: () => this.toggleLoading(true),
|
beforeSend: () => this.toggleLoading(true),
|
||||||
complete: () => this.toggleLoading(false),
|
complete: () => this.toggleLoading(false),
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
type: 'GET',
|
|
||||||
url: endpoint,
|
url: endpoint,
|
||||||
success: (data) => {
|
success: (data) => {
|
||||||
const tabSelector = `div#${action}`;
|
const tabSelector = `div#${action}`;
|
||||||
this.$parentEl.find(tabSelector).html(data.html);
|
this.$parentEl.find(tabSelector).html(data.html);
|
||||||
this.loaded[action] = true;
|
this.loaded[action] = true;
|
||||||
return gl.utils.localTimeAgo($('.js-timeago', tabSelector));
|
gl.utils.localTimeAgo($('.js-timeago', tabSelector));
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -166,10 +156,13 @@ export default class UserTabs {
|
||||||
url: calendarPath,
|
url: calendarPath,
|
||||||
success: (activityData) => {
|
success: (activityData) => {
|
||||||
$calendarWrap.html(CALENDAR_TEMPLATE);
|
$calendarWrap.html(CALENDAR_TEMPLATE);
|
||||||
|
|
||||||
|
// eslint-disable-next-line no-new
|
||||||
new ActivityCalendar(activityData, calendarActivitiesPath);
|
new ActivityCalendar(activityData, calendarActivitiesPath);
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// eslint-disable-next-line no-new
|
||||||
new gl.Activities();
|
new gl.Activities();
|
||||||
this.loaded.activity = true;
|
this.loaded.activity = true;
|
||||||
}
|
}
|
||||||
|
@ -180,13 +173,13 @@ export default class UserTabs {
|
||||||
}
|
}
|
||||||
|
|
||||||
setCurrentAction(source) {
|
setCurrentAction(source) {
|
||||||
let new_state = source;
|
let newState = source;
|
||||||
new_state = new_state.replace(/\/+$/, '');
|
newState = newState.replace(/\/+$/, '');
|
||||||
new_state += this._location.search + this._location.hash;
|
newState += this.windowLocation.search + this.windowLocation.hash;
|
||||||
history.replaceState({
|
history.replaceState({
|
||||||
url: new_state
|
url: newState,
|
||||||
}, document.title, new_state);
|
}, document.title, newState);
|
||||||
return new_state;
|
return newState;
|
||||||
}
|
}
|
||||||
|
|
||||||
getCurrentAction() {
|
getCurrentAction() {
|
||||||
|
|
Loading…
Reference in a new issue