mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FIX: don't rerender whole users page while typing on input.
This commit is contained in:
parent
2acec4370b
commit
ef5320dd47
@ -2,6 +2,7 @@ import { equal } from "@ember/object/computed";
|
|||||||
import Controller, { inject as controller } from "@ember/controller";
|
import Controller, { inject as controller } from "@ember/controller";
|
||||||
import discourseDebounce from "discourse/lib/debounce";
|
import discourseDebounce from "discourse/lib/debounce";
|
||||||
import { observes } from "discourse-common/utils/decorators";
|
import { observes } from "discourse-common/utils/decorators";
|
||||||
|
import { longDate } from "discourse/lib/formatter";
|
||||||
|
|
||||||
export default Controller.extend({
|
export default Controller.extend({
|
||||||
application: controller(),
|
application: controller(),
|
||||||
@ -12,9 +13,29 @@ export default Controller.extend({
|
|||||||
name: "",
|
name: "",
|
||||||
group: null,
|
group: null,
|
||||||
exclude_usernames: null,
|
exclude_usernames: null,
|
||||||
|
isLoading: false,
|
||||||
|
|
||||||
showTimeRead: equal("period", "all"),
|
showTimeRead: equal("period", "all"),
|
||||||
|
|
||||||
|
loadUsers(params) {
|
||||||
|
this.set("isLoading", true);
|
||||||
|
|
||||||
|
this.store
|
||||||
|
.find("directoryItem", params)
|
||||||
|
.then(model => {
|
||||||
|
const lastUpdatedAt = model.get("resultSetMeta.last_updated_at");
|
||||||
|
this.setProperties({
|
||||||
|
model,
|
||||||
|
lastUpdatedAt: lastUpdatedAt ? longDate(lastUpdatedAt) : null,
|
||||||
|
period: params.period,
|
||||||
|
nameInput: params.name
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
this.set("isLoading", false);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
@observes("nameInput")
|
@observes("nameInput")
|
||||||
_setName: discourseDebounce(function() {
|
_setName: discourseDebounce(function() {
|
||||||
this.set("name", this.nameInput);
|
this.set("name", this.nameInput);
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import I18n from "I18n";
|
import I18n from "I18n";
|
||||||
import DiscourseRoute from "discourse/routes/discourse";
|
import DiscourseRoute from "discourse/routes/discourse";
|
||||||
import { longDate } from "discourse/lib/formatter";
|
|
||||||
|
|
||||||
export default DiscourseRoute.extend({
|
export default DiscourseRoute.extend({
|
||||||
queryParams: {
|
queryParams: {
|
||||||
@ -37,20 +36,11 @@ export default DiscourseRoute.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
model(params) {
|
model(params) {
|
||||||
// If we refresh via `refreshModel` set the old model to loading
|
return params;
|
||||||
this._params = params;
|
|
||||||
return this.store.find("directoryItem", params);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
setupController(controller, model) {
|
setupController(controller, params) {
|
||||||
const params = this._params;
|
controller.loadUsers(params);
|
||||||
const lastUpdatedAt = model.get("resultSetMeta.last_updated_at");
|
|
||||||
controller.setProperties({
|
|
||||||
model,
|
|
||||||
lastUpdatedAt: lastUpdatedAt ? longDate(lastUpdatedAt) : null,
|
|
||||||
period: params.period,
|
|
||||||
nameInput: params.name
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
{{text-field value=nameInput placeholderKey="directory.filter_name" class="filter-name no-blur"}}
|
{{text-field value=nameInput placeholderKey="directory.filter_name" class="filter-name no-blur"}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{#conditional-loading-spinner condition=model.loading}}
|
{{#conditional-loading-spinner condition=isLoading}}
|
||||||
{{#if model.length}}
|
{{#if model.length}}
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
|
Loading…
Reference in New Issue
Block a user