mirror of
https://github.com/getredash/redash.git
synced 2025-12-19 17:37:19 -05:00
* Prettier all the JS files * Add GitHub Action to autoformat code pushed to master * Fix eslint violation due to formatting. * Remove GitHub actions for styling * Add restyled.io config
58 lines
1.6 KiB
JavaScript
58 lines
1.6 KiB
JavaScript
import { defaults } from "lodash";
|
|
import { clientConfig } from "@/services/auth";
|
|
import { $location } from "@/services/ng";
|
|
import { parse as parseOrderBy, compile as compileOrderBy } from "./Sorter";
|
|
|
|
export class StateStorage {
|
|
constructor(state = {}) {
|
|
this._state = { ...state };
|
|
}
|
|
|
|
getState() {
|
|
return defaults(this._state, {
|
|
page: 1,
|
|
itemsPerPage: clientConfig.pageSize,
|
|
orderByField: "created_at",
|
|
orderByReverse: false,
|
|
searchTerm: "",
|
|
tags: [],
|
|
});
|
|
}
|
|
|
|
// eslint-disable-next-line class-methods-use-this
|
|
setState() {}
|
|
}
|
|
|
|
export class UrlStateStorage extends StateStorage {
|
|
getState() {
|
|
const defaultState = super.getState();
|
|
const params = $location.search();
|
|
|
|
const searchTerm = params.q || "";
|
|
|
|
// in search mode order by should be explicitly specified in url, otherwise use default
|
|
const defaultOrderBy =
|
|
searchTerm !== "" ? "" : compileOrderBy(defaultState.orderByField, defaultState.orderByReverse);
|
|
|
|
const { field: orderByField, reverse: orderByReverse } = parseOrderBy(params.order || defaultOrderBy);
|
|
|
|
return {
|
|
page: parseInt(params.page, 10) || defaultState.page,
|
|
itemsPerPage: parseInt(params.page_size, 10) || defaultState.itemsPerPage,
|
|
orderByField,
|
|
orderByReverse,
|
|
searchTerm,
|
|
};
|
|
}
|
|
|
|
// eslint-disable-next-line class-methods-use-this
|
|
setState({ page, itemsPerPage, orderByField, orderByReverse, searchTerm }) {
|
|
$location.search({
|
|
page,
|
|
page_size: itemsPerPage,
|
|
order: compileOrderBy(orderByField, orderByReverse),
|
|
q: searchTerm !== "" ? searchTerm : null,
|
|
});
|
|
}
|
|
}
|