Skip to content

Instantly share code, notes, and snippets.

@gpDA
Created September 11, 2019 16:52
Show Gist options
  • Save gpDA/135c59e195cafaf29b1c799dad3e768b to your computer and use it in GitHub Desktop.
Save gpDA/135c59e195cafaf29b1c799dad3e768b to your computer and use it in GitHub Desktop.
// store/modules/base.js
// initial state
const initialState = Map({
mainData: List(... ),
originalData: List(... ),
arrowToggle: 0,
sortType: "",
sortToggle: false
});
export default handleActions(
{
[SORT_TYPE]: (state, action) => {
const { sortType } = action.payload;
const originalData = state.get("originalData").toJS();
const sortToggle = state.get("sortToggle");
const compareBy = key => {
return function(a, b) {
if (sortToggle) {
if (a[key] == null || a[key] == 0 || a[key] == "N/A") return 1;
if (b[key] == null || b[key] == 0 || b[key] == "N/A") return -1;
if (a[key] < b[key]) return -1;
if (a[key] > b[key]) return 1;
return 0;
} else {
// descneding
if (a[key] == null || a[key] == 0 || a[key] == "N/A") return 1;
if (b[key] == null || b[key] == 0 || b[key] == "N/A") return -1;
if (a[key] > b[key]) return -1;
if (a[key] < b[key]) return 1;
return 0;
}
};
};
const sortedData = originalData.sort(compareBy(sortType));
let arrowToggle;
const prevArrowToggle = state.get("arrowToggle");
if (prevArrowToggle == 0) {
arrowToggle = -1;
} else if (prevArrowToggle < 0) {
arrowToggle = Math.abs(prevArrowToggle);
} else if (prevArrowToggle > 0) {
arrowToggle = prevArrowToggle * -1;
}
return state
.set("mainData", fromJS(sortedData))
.set("sortToggle", !sortToggle)
.set("arrowToggle", arrowToggle)
.set("sortType", sortType);
}
},
initialState
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment