ui(admin): add "working" React admin ui
This commit is contained in:
parent
d1c7494933
commit
5402584508
199 changed files with 13387 additions and 151 deletions
29
resources/scripts/state/admin/allocations.ts
Normal file
29
resources/scripts/state/admin/allocations.ts
Normal file
|
@ -0,0 +1,29 @@
|
|||
import type { Action } from 'easy-peasy';
|
||||
import { action } from 'easy-peasy';
|
||||
|
||||
interface AdminAllocationStore {
|
||||
selectedAllocations: number[];
|
||||
|
||||
setSelectedAllocations: Action<AdminAllocationStore, number[]>;
|
||||
appendSelectedAllocation: Action<AdminAllocationStore, number>;
|
||||
removeSelectedAllocation: Action<AdminAllocationStore, number>;
|
||||
}
|
||||
|
||||
const allocations: AdminAllocationStore = {
|
||||
selectedAllocations: [],
|
||||
|
||||
setSelectedAllocations: action((state, payload) => {
|
||||
state.selectedAllocations = payload;
|
||||
}),
|
||||
|
||||
appendSelectedAllocation: action((state, payload) => {
|
||||
state.selectedAllocations = state.selectedAllocations.filter(id => id !== payload).concat(payload);
|
||||
}),
|
||||
|
||||
removeSelectedAllocation: action((state, payload) => {
|
||||
state.selectedAllocations = state.selectedAllocations.filter(id => id !== payload);
|
||||
}),
|
||||
};
|
||||
|
||||
export type { AdminAllocationStore };
|
||||
export default allocations;
|
29
resources/scripts/state/admin/databases.ts
Normal file
29
resources/scripts/state/admin/databases.ts
Normal file
|
@ -0,0 +1,29 @@
|
|||
import type { Action } from 'easy-peasy';
|
||||
import { action } from 'easy-peasy';
|
||||
|
||||
interface AdminDatabaseStore {
|
||||
selectedDatabases: number[];
|
||||
|
||||
setSelectedDatabases: Action<AdminDatabaseStore, number[]>;
|
||||
appendSelectedDatabase: Action<AdminDatabaseStore, number>;
|
||||
removeSelectedDatabase: Action<AdminDatabaseStore, number>;
|
||||
}
|
||||
|
||||
const databases: AdminDatabaseStore = {
|
||||
selectedDatabases: [],
|
||||
|
||||
setSelectedDatabases: action((state, payload) => {
|
||||
state.selectedDatabases = payload;
|
||||
}),
|
||||
|
||||
appendSelectedDatabase: action((state, payload) => {
|
||||
state.selectedDatabases = state.selectedDatabases.filter(id => id !== payload).concat(payload);
|
||||
}),
|
||||
|
||||
removeSelectedDatabase: action((state, payload) => {
|
||||
state.selectedDatabases = state.selectedDatabases.filter(id => id !== payload);
|
||||
}),
|
||||
};
|
||||
|
||||
export type { AdminDatabaseStore };
|
||||
export default databases;
|
44
resources/scripts/state/admin/index.ts
Normal file
44
resources/scripts/state/admin/index.ts
Normal file
|
@ -0,0 +1,44 @@
|
|||
import { createContextStore } from 'easy-peasy';
|
||||
|
||||
import type { AdminAllocationStore } from '@/state/admin/allocations';
|
||||
import allocations from '@/state/admin/allocations';
|
||||
import type { AdminDatabaseStore } from '@/state/admin/databases';
|
||||
import databases from '@/state/admin/databases';
|
||||
import type { AdminLocationStore } from '@/state/admin/locations';
|
||||
import locations from '@/state/admin/locations';
|
||||
import type { AdminMountStore } from '@/state/admin/mounts';
|
||||
import mounts from '@/state/admin/mounts';
|
||||
import type { AdminNestStore } from '@/state/admin/nests';
|
||||
import nests from '@/state/admin/nests';
|
||||
import type { AdminNodeStore } from '@/state/admin/nodes';
|
||||
import nodes from '@/state/admin/nodes';
|
||||
import type { AdminRoleStore } from '@/state/admin/roles';
|
||||
import roles from '@/state/admin/roles';
|
||||
import type { AdminServerStore } from '@/state/admin/servers';
|
||||
import servers from '@/state/admin/servers';
|
||||
import type { AdminUserStore } from '@/state/admin/users';
|
||||
import users from '@/state/admin/users';
|
||||
|
||||
interface AdminStore {
|
||||
allocations: AdminAllocationStore;
|
||||
databases: AdminDatabaseStore;
|
||||
locations: AdminLocationStore;
|
||||
mounts: AdminMountStore;
|
||||
nests: AdminNestStore;
|
||||
nodes: AdminNodeStore;
|
||||
roles: AdminRoleStore;
|
||||
servers: AdminServerStore;
|
||||
users: AdminUserStore;
|
||||
}
|
||||
|
||||
export const AdminContext = createContextStore<AdminStore>({
|
||||
allocations,
|
||||
databases,
|
||||
locations,
|
||||
mounts,
|
||||
nests,
|
||||
nodes,
|
||||
roles,
|
||||
servers,
|
||||
users,
|
||||
});
|
29
resources/scripts/state/admin/locations.ts
Normal file
29
resources/scripts/state/admin/locations.ts
Normal file
|
@ -0,0 +1,29 @@
|
|||
import type { Action } from 'easy-peasy';
|
||||
import { action } from 'easy-peasy';
|
||||
|
||||
interface AdminLocationStore {
|
||||
selectedLocations: number[];
|
||||
|
||||
setSelectedLocations: Action<AdminLocationStore, number[]>;
|
||||
appendSelectedLocation: Action<AdminLocationStore, number>;
|
||||
removeSelectedLocation: Action<AdminLocationStore, number>;
|
||||
}
|
||||
|
||||
const locations: AdminLocationStore = {
|
||||
selectedLocations: [],
|
||||
|
||||
setSelectedLocations: action((state, payload) => {
|
||||
state.selectedLocations = payload;
|
||||
}),
|
||||
|
||||
appendSelectedLocation: action((state, payload) => {
|
||||
state.selectedLocations = state.selectedLocations.filter(id => id !== payload).concat(payload);
|
||||
}),
|
||||
|
||||
removeSelectedLocation: action((state, payload) => {
|
||||
state.selectedLocations = state.selectedLocations.filter(id => id !== payload);
|
||||
}),
|
||||
};
|
||||
|
||||
export type { AdminLocationStore };
|
||||
export default locations;
|
29
resources/scripts/state/admin/mounts.ts
Normal file
29
resources/scripts/state/admin/mounts.ts
Normal file
|
@ -0,0 +1,29 @@
|
|||
import type { Action } from 'easy-peasy';
|
||||
import { action } from 'easy-peasy';
|
||||
|
||||
interface AdminMountStore {
|
||||
selectedMounts: number[];
|
||||
|
||||
setSelectedMounts: Action<AdminMountStore, number[]>;
|
||||
appendSelectedMount: Action<AdminMountStore, number>;
|
||||
removeSelectedMount: Action<AdminMountStore, number>;
|
||||
}
|
||||
|
||||
const mounts: AdminMountStore = {
|
||||
selectedMounts: [],
|
||||
|
||||
setSelectedMounts: action((state, payload) => {
|
||||
state.selectedMounts = payload;
|
||||
}),
|
||||
|
||||
appendSelectedMount: action((state, payload) => {
|
||||
state.selectedMounts = state.selectedMounts.filter(id => id !== payload).concat(payload);
|
||||
}),
|
||||
|
||||
removeSelectedMount: action((state, payload) => {
|
||||
state.selectedMounts = state.selectedMounts.filter(id => id !== payload);
|
||||
}),
|
||||
};
|
||||
|
||||
export type { AdminMountStore };
|
||||
export default mounts;
|
29
resources/scripts/state/admin/nests.ts
Normal file
29
resources/scripts/state/admin/nests.ts
Normal file
|
@ -0,0 +1,29 @@
|
|||
import type { Action } from 'easy-peasy';
|
||||
import { action } from 'easy-peasy';
|
||||
|
||||
interface AdminNestStore {
|
||||
selectedNests: number[];
|
||||
|
||||
setSelectedNests: Action<AdminNestStore, number[]>;
|
||||
appendSelectedNest: Action<AdminNestStore, number>;
|
||||
removeSelectedNest: Action<AdminNestStore, number>;
|
||||
}
|
||||
|
||||
const nests: AdminNestStore = {
|
||||
selectedNests: [],
|
||||
|
||||
setSelectedNests: action((state, payload) => {
|
||||
state.selectedNests = payload;
|
||||
}),
|
||||
|
||||
appendSelectedNest: action((state, payload) => {
|
||||
state.selectedNests = state.selectedNests.filter(id => id !== payload).concat(payload);
|
||||
}),
|
||||
|
||||
removeSelectedNest: action((state, payload) => {
|
||||
state.selectedNests = state.selectedNests.filter(id => id !== payload);
|
||||
}),
|
||||
};
|
||||
|
||||
export type { AdminNestStore };
|
||||
export default nests;
|
29
resources/scripts/state/admin/nodes.ts
Normal file
29
resources/scripts/state/admin/nodes.ts
Normal file
|
@ -0,0 +1,29 @@
|
|||
import type { Action } from 'easy-peasy';
|
||||
import { action } from 'easy-peasy';
|
||||
|
||||
interface AdminNodeStore {
|
||||
selectedNodes: number[];
|
||||
|
||||
setSelectedNodes: Action<AdminNodeStore, number[]>;
|
||||
appendSelectedNode: Action<AdminNodeStore, number>;
|
||||
removeSelectedNode: Action<AdminNodeStore, number>;
|
||||
}
|
||||
|
||||
const nodes: AdminNodeStore = {
|
||||
selectedNodes: [],
|
||||
|
||||
setSelectedNodes: action((state, payload) => {
|
||||
state.selectedNodes = payload;
|
||||
}),
|
||||
|
||||
appendSelectedNode: action((state, payload) => {
|
||||
state.selectedNodes = state.selectedNodes.filter(id => id !== payload).concat(payload);
|
||||
}),
|
||||
|
||||
removeSelectedNode: action((state, payload) => {
|
||||
state.selectedNodes = state.selectedNodes.filter(id => id !== payload);
|
||||
}),
|
||||
};
|
||||
|
||||
export type { AdminNodeStore };
|
||||
export default nodes;
|
29
resources/scripts/state/admin/roles.ts
Normal file
29
resources/scripts/state/admin/roles.ts
Normal file
|
@ -0,0 +1,29 @@
|
|||
import type { Action } from 'easy-peasy';
|
||||
import { action } from 'easy-peasy';
|
||||
|
||||
interface AdminRoleStore {
|
||||
selectedRoles: number[];
|
||||
|
||||
setSelectedRoles: Action<AdminRoleStore, number[]>;
|
||||
appendSelectedRole: Action<AdminRoleStore, number>;
|
||||
removeSelectedRole: Action<AdminRoleStore, number>;
|
||||
}
|
||||
|
||||
const roles: AdminRoleStore = {
|
||||
selectedRoles: [],
|
||||
|
||||
setSelectedRoles: action((state, payload) => {
|
||||
state.selectedRoles = payload;
|
||||
}),
|
||||
|
||||
appendSelectedRole: action((state, payload) => {
|
||||
state.selectedRoles = state.selectedRoles.filter(id => id !== payload).concat(payload);
|
||||
}),
|
||||
|
||||
removeSelectedRole: action((state, payload) => {
|
||||
state.selectedRoles = state.selectedRoles.filter(id => id !== payload);
|
||||
}),
|
||||
};
|
||||
|
||||
export type { AdminRoleStore };
|
||||
export default roles;
|
29
resources/scripts/state/admin/servers.ts
Normal file
29
resources/scripts/state/admin/servers.ts
Normal file
|
@ -0,0 +1,29 @@
|
|||
import type { Action } from 'easy-peasy';
|
||||
import { action } from 'easy-peasy';
|
||||
|
||||
interface AdminServerStore {
|
||||
selectedServers: number[];
|
||||
|
||||
setSelectedServers: Action<AdminServerStore, number[]>;
|
||||
appendSelectedServer: Action<AdminServerStore, number>;
|
||||
removeSelectedServer: Action<AdminServerStore, number>;
|
||||
}
|
||||
|
||||
const servers: AdminServerStore = {
|
||||
selectedServers: [],
|
||||
|
||||
setSelectedServers: action((state, payload) => {
|
||||
state.selectedServers = payload;
|
||||
}),
|
||||
|
||||
appendSelectedServer: action((state, payload) => {
|
||||
state.selectedServers = state.selectedServers.filter(id => id !== payload).concat(payload);
|
||||
}),
|
||||
|
||||
removeSelectedServer: action((state, payload) => {
|
||||
state.selectedServers = state.selectedServers.filter(id => id !== payload);
|
||||
}),
|
||||
};
|
||||
|
||||
export type { AdminServerStore };
|
||||
export default servers;
|
29
resources/scripts/state/admin/users.ts
Normal file
29
resources/scripts/state/admin/users.ts
Normal file
|
@ -0,0 +1,29 @@
|
|||
import type { Action } from 'easy-peasy';
|
||||
import { action } from 'easy-peasy';
|
||||
|
||||
interface AdminUserStore {
|
||||
selectedUsers: number[];
|
||||
|
||||
setSelectedUsers: Action<AdminUserStore, number[]>;
|
||||
appendSelectedUser: Action<AdminUserStore, number>;
|
||||
removeSelectedUser: Action<AdminUserStore, number>;
|
||||
}
|
||||
|
||||
const users: AdminUserStore = {
|
||||
selectedUsers: [],
|
||||
|
||||
setSelectedUsers: action((state, payload) => {
|
||||
state.selectedUsers = payload;
|
||||
}),
|
||||
|
||||
appendSelectedUser: action((state, payload) => {
|
||||
state.selectedUsers = state.selectedUsers.filter(id => id !== payload).concat(payload);
|
||||
}),
|
||||
|
||||
removeSelectedUser: action((state, payload) => {
|
||||
state.selectedUsers = state.selectedUsers.filter(id => id !== payload);
|
||||
}),
|
||||
};
|
||||
|
||||
export type { AdminUserStore };
|
||||
export default users;
|
Loading…
Add table
Add a link
Reference in a new issue