DEV: Refactors following code review (#100)
This commit is contained in:
parent
83ff23c98e
commit
99c2c48c08
|
@ -1,8 +1,10 @@
|
||||||
import { inject as service } from "@ember/service";
|
import { inject as service } from "@ember/service";
|
||||||
import Controller, { inject as controller } from "@ember/controller";
|
import Controller, { inject as controller } from "@ember/controller";
|
||||||
|
import { action } from "@ember/object";
|
||||||
|
import { debounce } from "@ember/runloop";
|
||||||
import { ajax } from "discourse/lib/ajax";
|
import { ajax } from "discourse/lib/ajax";
|
||||||
import discourseComputed, { observes } from "discourse-common/utils/decorators";
|
import discourseComputed from "discourse-common/utils/decorators";
|
||||||
import discourseDebounce from "discourse/lib/debounce";
|
import { INPUT_DELAY } from "discourse-common/config/environment";
|
||||||
|
|
||||||
export default Controller.extend({
|
export default Controller.extend({
|
||||||
router: service(),
|
router: service(),
|
||||||
|
@ -17,30 +19,25 @@ export default Controller.extend({
|
||||||
return !mobileView;
|
return !mobileView;
|
||||||
},
|
},
|
||||||
|
|
||||||
@observes("filterName")
|
_setFilter(filter) {
|
||||||
_setFilter: discourseDebounce(function() {
|
|
||||||
this.set("filter", this.filterName);
|
|
||||||
}, 500),
|
|
||||||
|
|
||||||
@observes("filter")
|
|
||||||
_filterModel() {
|
|
||||||
this.set("loading", true);
|
this.set("loading", true);
|
||||||
this.set("offset", 0);
|
this.set("offset", 0);
|
||||||
ajax(`/assign/members/${this.group.name}`, {
|
this.set("filter", filter);
|
||||||
|
|
||||||
|
const groupName = this.group.name;
|
||||||
|
ajax(`/assign/members/${groupName}`, {
|
||||||
type: "GET",
|
type: "GET",
|
||||||
data: { filter: this.filter, offset: this.offset }
|
data: { filter: this.filter, offset: this.offset }
|
||||||
}).then(result => {
|
})
|
||||||
if (this.router.currentRoute.params.filter !== "everyone") {
|
.then(result => {
|
||||||
this.transitionToRoute("group.assigned.show", "everyone");
|
if (this.router.currentRoute.params.filter !== "everyone") {
|
||||||
}
|
this.transitionToRoute("group.assigned.show", groupName, "everyone");
|
||||||
this.set("members", result.members);
|
}
|
||||||
this.set("loading", false);
|
this.set("members", result.members);
|
||||||
});
|
})
|
||||||
},
|
.finally(() => {
|
||||||
|
this.set("loading", false);
|
||||||
@observes("model.assignment_count")
|
});
|
||||||
assignmentCountChanged() {
|
|
||||||
this.set("group.assignment_count", this.model.assignment_count);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
findMembers(refresh) {
|
findMembers(refresh) {
|
||||||
|
@ -59,16 +56,21 @@ export default Controller.extend({
|
||||||
ajax(`/assign/members/${this.group.name}`, {
|
ajax(`/assign/members/${this.group.name}`, {
|
||||||
type: "GET",
|
type: "GET",
|
||||||
data: { filter: this.filter, offset: this.offset }
|
data: { filter: this.filter, offset: this.offset }
|
||||||
}).then(result => {
|
})
|
||||||
this.members.pushObjects(result.members);
|
.then(result => {
|
||||||
this.set("loading", false);
|
this.members.pushObjects(result.members);
|
||||||
});
|
})
|
||||||
|
.finally(() => this.set("loading", false));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
actions: {
|
@action
|
||||||
loadMore: function() {
|
loadMore() {
|
||||||
this.findMembers();
|
this.findMembers();
|
||||||
}
|
},
|
||||||
|
|
||||||
|
@action
|
||||||
|
onChangeFilterName(value) {
|
||||||
|
debounce(this, this._setFilter, value, INPUT_DELAY * 2);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -12,6 +12,7 @@ export default DiscourseRoute.extend({
|
||||||
members: [],
|
members: [],
|
||||||
group: this.modelFor("group")
|
group: this.modelFor("group")
|
||||||
});
|
});
|
||||||
|
controller.group.set("assignment_count", model.assignment_count);
|
||||||
|
|
||||||
controller.findMembers(true);
|
controller.findMembers(true);
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{{#if show-avatar}}
|
{{#if show-avatar}}
|
||||||
{{#link-to "group.assigned.show" filter.username_lower}}
|
{{#link-to "group.assigned.show" filter.username_lower}}
|
||||||
<div class="assign-image">
|
<div class="assign-image">
|
||||||
<a href={{filter.userPath}} data-user-card={{filter.username}}>{{avatar filter imageSize="large"}}</a>
|
<a href={{filter.userPath}} data-user-card={{filter.username}}>{{avatar filter imageSize="large"}}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="assign-names">
|
<div class="assign-names">
|
||||||
|
@ -19,7 +19,7 @@
|
||||||
{{i18n 'discourse_assign.group_everyone'}}
|
{{i18n 'discourse_assign.group_everyone'}}
|
||||||
</div>
|
</div>
|
||||||
<div class="assign-count">
|
<div class="assign-count">
|
||||||
{{assignment_count}}
|
{{assignmentCount}}
|
||||||
</div>
|
</div>
|
||||||
{{/link-to}}
|
{{/link-to}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
|
@ -2,11 +2,17 @@
|
||||||
{{#mobile-nav class="activity-nav" desktopClass="action-list activity-list nav-stacked" currentPath=router._router.currentPath}}
|
{{#mobile-nav class="activity-nav" desktopClass="action-list activity-list nav-stacked" currentPath=router._router.currentPath}}
|
||||||
{{#if isDesktop}}
|
{{#if isDesktop}}
|
||||||
<div class="search-div">
|
<div class="search-div">
|
||||||
{{input type="text" placeholder=(i18n "discourse_assign.sidebar_name_filter_placeholder") value=filterName class="search"}}
|
{{input
|
||||||
|
type="text"
|
||||||
|
placeholder=(i18n "discourse_assign.sidebar_name_filter_placeholder")
|
||||||
|
value=filterName
|
||||||
|
class="search"
|
||||||
|
input=(action "onChangeFilterName" value="target.value")
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#load-more selector=".activity-nav li" action=(action "loadMore")}}
|
{{#load-more selector=".activity-nav li" action=(action "loadMore")}}
|
||||||
{{group-assigned-filter show-avatar=false filter="everyone" routeType=route_type assignment_count=group.assignment_count}}
|
{{group-assigned-filter show-avatar=false filter="everyone" routeType=route_type assignmentCount=group.assignment_count}}
|
||||||
{{#each members as |member|}}
|
{{#each members as |member|}}
|
||||||
{{group-assigned-filter show-avatar=true filter=member routeType=route_type}}
|
{{group-assigned-filter show-avatar=true filter=member routeType=route_type}}
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
|
Loading…
Reference in New Issue