When a new user is added, it now gives them a column -- as well as when you remove a user it deletes their column and moves all tasks to ROD

This commit is contained in:
NPS Agent
2026-05-12 09:32:56 +09:30
parent 6bcea3ee5d
commit 62d431818a
4 changed files with 24 additions and 14 deletions
+11 -11
View File
@@ -1,6 +1,6 @@
// Screens for Dashy
function LoginScreen({ onLogin }) {
function LoginScreen({ onLogin, dbUsers = [] }) {
const [pickedId, setPickedId] = React.useState('rod');
const [password, setPassword] = React.useState('');
const [error, setError] = React.useState('');
@@ -31,7 +31,7 @@ function LoginScreen({ onLogin }) {
<p className="login__sub">Sign in to your team workspace · <span className="mono">murchison-auto</span></p>
<div className="login__users">
{USERS.map(u => (
{dbUsers.map(u => (
<button
key={u.id}
className={"login__user" + (pickedId === u.id ? " is-picked" : "")}
@@ -106,7 +106,7 @@ function BrandMark({ size = 22 }) {
);
}
function TopBar({ me, isAdmin, tab, setTab, onAdd, onLogs, onLogout, onProfile, onDB }) {
function TopBar({ me, dbUsers = [], isAdmin, tab, setTab, onAdd, onLogs, onLogout, onProfile }) {
return (
<header className="topbar">
<div className="topbar__left">
@@ -117,7 +117,7 @@ function TopBar({ me, isAdmin, tab, setTab, onAdd, onLogs, onLogout, onProfile,
<nav className="tabs" role="tablist">
<Tab id="overview" label="Overview" tab={tab} setTab={setTab} />
{USERS.map(u => (
{dbUsers.map(u => (
<Tab key={u.id} id={u.id} label={u.name} tab={tab} setTab={setTab} user={u} />
))}
</nav>
@@ -189,14 +189,14 @@ function HeadsUp({ items, onDismiss, onOpenTask }) {
);
}
function OverviewScreen({ tasks, onOpen, onAddFor, density, onMoveTask }) {
const byUser = Object.fromEntries(USERS.map(u => [u.id, []]));
function OverviewScreen({ tasks, onOpen, onAddFor, density, onMoveTask, dbUsers = [] }) {
const byUser = Object.fromEntries(dbUsers.map(u => [u.id, []]));
tasks.forEach(t => { if (byUser[t.assignee] && t.status !== 'closed') byUser[t.assignee].push(t); });
const [draggingTask, setDraggingTask] = React.useState(null);
const [dragOverCol, setDragOverCol] = React.useState(null);
return (
<div className="board">
{USERS.map(u => (
{dbUsers.map(u => (
<Column
key={u.id}
user={u}
@@ -325,7 +325,7 @@ function Section({ title, sub, children }) {
);
}
function AddTaskModal({ open, onClose, onSubmit, defaultAssignee, me }) {
function AddTaskModal({ open, onClose, onSubmit, defaultAssignee, me, dbUsers = [] }) {
const [title, setTitle] = React.useState('');
const [desc, setDesc] = React.useState('');
const [assignee, setAssignee] = React.useState(defaultAssignee || 'lani');
@@ -370,7 +370,7 @@ function AddTaskModal({ open, onClose, onSubmit, defaultAssignee, me }) {
<div className="field">
<span className="field__label">Assign to</span>
<div className="picker">
{USERS.map(u => (
{dbUsers.map(u => (
<button
type="button"
key={u.id}
@@ -545,7 +545,7 @@ function TaskDetail({ task, allAudit = [], onClose, onMove, onPriority, onComple
<Field label="Assigned to">
<div className="picker">
{USERS.map(u => (
{dbUsers.map(u => (
<button key={u.id}
className={"picker__item" + (task.assignee === u.id ? " is-on" : "")}
onClick={() => onMove(task.id, u.id)}>
@@ -636,7 +636,7 @@ function AuditScreen({ entries, onOpen }) {
<div className="audit__filter">
<FilterChip on={filter==='all'} onClick={() => setFilter('all')}>All</FilterChip>
<FilterChip on={filter==='system'} onClick={() => setFilter('system')}>System</FilterChip>
{USERS.map(u => (
{dbUsers.map(u => (
<FilterChip key={u.id} on={filter===u.id} onClick={() => setFilter(u.id)}>
<Avatar user={u} size={16} /> {u.name}
</FilterChip>