Skip to content
Snippets Groups Projects
Unverified Commit 94a6b53f authored by Sean Tsai's avatar Sean Tsai Committed by GitHub
Browse files

Delete table navigator from rules page (#1342)

parent 1d60635e
No related branches found
No related tags found
No related merge requests found
...@@ -40,15 +40,7 @@ import { ...@@ -40,15 +40,7 @@ import {
Input, Input,
LinkButton, LinkButton,
} from './common'; } from './common';
import { import { SelectCell, Row, Field, Cell, CellButton, TableHeader } from './table';
SelectCell,
Row,
Field,
Cell,
CellButton,
TableHeader,
useTableNavigator,
} from './table';
let SchedulesQuery = liveQueryContext(q('schedules').select('*')); let SchedulesQuery = liveQueryContext(q('schedules').select('*'));
...@@ -298,130 +290,105 @@ function ActionExpression({ field, op, value, options, style }) { ...@@ -298,130 +290,105 @@ function ActionExpression({ field, op, value, options, style }) {
); );
} }
let Rule = memo( let Rule = memo(({ rule, hovered, selected, onHover, onEditRule }) => {
({ let dispatchSelected = useSelectedDispatch();
rule, let borderColor = selected ? colors.b8 : colors.border;
hovered, let backgroundFocus = hovered;
selected,
editing,
focusedField,
onHover,
onEdit,
onEditRule,
}) => {
let dispatchSelected = useSelectedDispatch();
let borderColor = selected ? colors.b8 : colors.border;
let backgroundFocus = hovered || focusedField === 'select';
return ( return (
<Row <Row
height="auto" height="auto"
borderColor={borderColor} borderColor={borderColor}
backgroundColor={ backgroundColor={
selected ? colors.selected : backgroundFocus ? colors.hover : 'white' selected ? colors.selected : backgroundFocus ? colors.hover : 'white'
} }
style={{ fontSize: 13, zIndex: editing || selected ? 101 : 'auto' }} style={{ fontSize: 13, zIndex: selected ? 101 : 'auto' }}
collapsed="true" collapsed="true"
onMouseEnter={() => onHover && onHover(rule.id)} onMouseEnter={() => onHover && onHover(rule.id)}
onMouseLeave={() => onHover && onHover(null)} onMouseLeave={() => onHover && onHover(null)}
> >
<SelectCell <SelectCell
exposed={hovered || selected || editing} exposed={hovered || selected}
focused={focusedField === 'select'} focused={true}
onSelect={e => { onSelect={e => {
dispatchSelected({ type: 'select', id: rule.id, event: e }); dispatchSelected({ type: 'select', id: rule.id, event: e });
}} }}
onEdit={() => onEdit(rule.id, 'select')} selected={selected}
selected={selected} />
/>
<Cell name="stage" width={50} plain style={{ color: colors.n5 }}>
{rule.stage && (
<View
style={{
alignSelf: 'flex-start',
margin: 5,
backgroundColor: colors.b10,
color: colors.b1,
borderRadius: 4,
padding: '3px 5px',
}}
>
{rule.stage}
</View>
)}
</Cell>
<Field width="flex" style={{ padding: '15px 0' }} truncate={false}>
<Stack direction="row" align="center">
<View
style={{ flex: 1, alignItems: 'flex-start' }}
data-testid="conditions"
>
{rule.conditions.map((cond, i) => (
<ConditionExpression
key={i}
field={cond.field}
op={cond.op}
inline={true}
value={cond.value}
options={cond.options}
prefix={i > 0 ? friendlyOp(rule.conditionsOp) : null}
style={i !== 0 && { marginTop: 3 }}
/>
))}
</View>
<Text> <Cell name="stage" width={50} plain style={{ color: colors.n5 }}>
<ArrowRight color={colors.n4} style={{ width: 12, height: 12 }} /> {rule.stage && (
</Text> <View
style={{
alignSelf: 'flex-start',
margin: 5,
backgroundColor: colors.b10,
color: colors.b1,
borderRadius: 4,
padding: '3px 5px',
}}
>
{rule.stage}
</View>
)}
</Cell>
<View <Field width="flex" style={{ padding: '15px 0' }} truncate={false}>
style={{ flex: 1, alignItems: 'flex-start' }} <Stack direction="row" align="center">
data-testid="actions" <View
> style={{ flex: 1, alignItems: 'flex-start' }}
{rule.actions.map((action, i) => ( data-testid="conditions"
<ActionExpression >
key={i} {rule.conditions.map((cond, i) => (
field={action.field} <ConditionExpression
op={action.op} key={i}
value={action.value} field={cond.field}
options={action.options} op={cond.op}
style={i !== 0 && { marginTop: 3 }} inline={true}
/> value={cond.value}
))} options={cond.options}
</View> prefix={i > 0 ? friendlyOp(rule.conditionsOp) : null}
</Stack> style={i !== 0 && { marginTop: 3 }}
</Field> />
))}
</View>
<Cell <Text>
name="edit" <ArrowRight color={colors.n4} style={{ width: 12, height: 12 }} />
focused={focusedField === 'edit'} </Text>
plain
style={{ padding: '0 15px', paddingLeft: 5 }} <View
> style={{ flex: 1, alignItems: 'flex-start' }}
<Button data-testid="actions"
as={CellButton}
onSelect={() => onEditRule(rule)}
onEdit={() => onEdit(rule.id, 'edit')}
> >
Edit {rule.actions.map((action, i) => (
</Button> <ActionExpression
</Cell> key={i}
</Row> field={action.field}
); op={action.op}
}, value={action.value}
); options={action.options}
style={i !== 0 && { marginTop: 3 }}
/>
))}
</View>
</Stack>
</Field>
<Cell name="edit" plain style={{ padding: '0 15px', paddingLeft: 5 }}>
<Button as={CellButton} onSelect={() => onEditRule(rule)}>
Edit
</Button>
</Cell>
</Row>
);
});
let SimpleTable = forwardRef( let SimpleTable = forwardRef(
( ({ data, loadMore, style, onHoverLeave, children, ...props }, ref) => {
{ data, navigator, loadMore, style, onHoverLeave, children, ...props },
ref,
) => {
let contentRef = useRef(); let contentRef = useRef();
let contentHeight = useRef(); let contentHeight = useRef();
let scrollRef = useRef(); let scrollRef = useRef();
let { getNavigatorProps } = navigator;
function onScroll(e) { function onScroll(e) {
if (contentHeight.current != null) { if (contentHeight.current != null) {
...@@ -452,7 +419,6 @@ let SimpleTable = forwardRef( ...@@ -452,7 +419,6 @@ let SimpleTable = forwardRef(
]} ]}
tabIndex="1" tabIndex="1"
data-testid="table" data-testid="table"
{...getNavigatorProps(props)}
> >
<View <View
innerRef={scrollRef} innerRef={scrollRef}
...@@ -489,7 +455,6 @@ function RulesHeader() { ...@@ -489,7 +455,6 @@ function RulesHeader() {
function RulesList({ function RulesList({
rules, rules,
selectedItems, selectedItems,
navigator,
hoveredRule, hoveredRule,
collapsed: borderCollapsed, collapsed: borderCollapsed,
onHover, onHover,
...@@ -505,7 +470,6 @@ function RulesList({ ...@@ -505,7 +470,6 @@ function RulesList({
{rules.map(rule => { {rules.map(rule => {
let hovered = hoveredRule === rule.id; let hovered = hoveredRule === rule.id;
let selected = selectedItems.has(rule.id); let selected = selectedItems.has(rule.id);
let editing = navigator.editingId === rule.id;
return ( return (
<Rule <Rule
...@@ -513,10 +477,7 @@ function RulesList({ ...@@ -513,10 +477,7 @@ function RulesList({
rule={rule} rule={rule}
hovered={hovered} hovered={hovered}
selected={selected} selected={selected}
editing={editing}
focusedField={editing && navigator.focusedField}
onHover={onHover} onHover={onHover}
onEdit={navigator.onEdit}
onEditRule={onEditRule} onEditRule={onEditRule}
/> />
); );
...@@ -583,7 +544,6 @@ function ManageRulesContent({ isModal, payeeId, setLoading }) { ...@@ -583,7 +544,6 @@ function ManageRulesContent({ isModal, payeeId, setLoading }) {
let [rules, setRules] = useState(null); let [rules, setRules] = useState(null);
let [filter, setFilter] = useState(''); let [filter, setFilter] = useState('');
let dispatch = useDispatch(); let dispatch = useDispatch();
let navigator = useTableNavigator(rules, ['select', 'edit']);
let { data: schedules } = SchedulesQuery.useQuery(); let { data: schedules } = SchedulesQuery.useQuery();
let filterData = useSelector(state => ({ let filterData = useSelector(state => ({
...@@ -715,8 +675,6 @@ function ManageRulesContent({ isModal, payeeId, setLoading }) { ...@@ -715,8 +675,6 @@ function ManageRulesContent({ isModal, payeeId, setLoading }) {
onSave: async newRule => { onSave: async newRule => {
let newRules = await loadRules(); let newRules = await loadRules();
navigator.onEdit(newRule.id, 'edit');
setRules(rules => { setRules(rules => {
let newIdx = newRules.findIndex(rule => rule.id === newRule.id); let newIdx = newRules.findIndex(rule => rule.id === newRule.id);
return newRules.slice(0, newIdx + 75); return newRules.slice(0, newIdx + 75);
...@@ -771,7 +729,6 @@ function ManageRulesContent({ isModal, payeeId, setLoading }) { ...@@ -771,7 +729,6 @@ function ManageRulesContent({ isModal, payeeId, setLoading }) {
value={filter} value={filter}
onChange={e => { onChange={e => {
setFilter(e.target.value); setFilter(e.target.value);
navigator.onEdit(null);
}} }}
style={{ style={{
width: 350, width: 350,
...@@ -791,7 +748,6 @@ function ManageRulesContent({ isModal, payeeId, setLoading }) { ...@@ -791,7 +748,6 @@ function ManageRulesContent({ isModal, payeeId, setLoading }) {
<SimpleTable <SimpleTable
ref={tableRef} ref={tableRef}
data={filteredRules} data={filteredRules}
navigator={navigator}
loadMore={loadMore} loadMore={loadMore}
// Hide the last border of the item in the table // Hide the last border of the item in the table
style={{ marginBottom: -1 }} style={{ marginBottom: -1 }}
...@@ -799,7 +755,6 @@ function ManageRulesContent({ isModal, payeeId, setLoading }) { ...@@ -799,7 +755,6 @@ function ManageRulesContent({ isModal, payeeId, setLoading }) {
<RulesList <RulesList
rules={filteredRules} rules={filteredRules}
selectedItems={selectedInst.items} selectedItems={selectedInst.items}
navigator={navigator}
hoveredRule={hoveredRule} hoveredRule={hoveredRule}
onHover={onHover} onHover={onHover}
onEditRule={onEditRule} onEditRule={onEditRule}
......
---
category: Maintenance
authors: [aleetsaiya]
---
Remove table navigator from rules page
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment