import { getRoot, types } from "mobx-state-tree";
|
import { TabColumn } from "./tab_column";
|
|
const ColumnsList = types.maybeNull(types.array(types.late(() => types.reference(TabColumn))));
|
|
export const TabHiddenColumns = types
|
.model("TabHiddenColumns", {
|
explore: types.optional(ColumnsList, []),
|
labeling: types.optional(ColumnsList, []),
|
})
|
.views((self) => ({
|
get length() {
|
return self.explore.length + self.labeling.length;
|
},
|
|
get activeList() {
|
return getRoot(self).isLabeling ? self.labeling : self.explore;
|
},
|
|
set activeList(list) {
|
if (getRoot(self).isLabeling) {
|
self.labeling = list;
|
} else {
|
self.explore = list;
|
}
|
self.activeList;
|
},
|
|
hasColumn(column) {
|
return self.activeList.indexOf(column) >= 0;
|
},
|
}))
|
.actions((self) => ({
|
add(column) {
|
const set = new Set(self.activeList);
|
|
set.add(column);
|
self.activeList = Array.from(set);
|
},
|
|
remove(column) {
|
const set = new Set(self.activeList);
|
|
set.delete(column);
|
self.activeList = Array.from(set);
|
},
|
}))
|
.preProcessSnapshot((sn) => {
|
return {
|
explore: sn?.explore ?? [],
|
labeling: sn?.labeling ?? [],
|
};
|
});
|