mirror of
https://github.com/ansible/awx.git
synced 2026-05-23 08:37:48 -02:30
Merge pull request #9344 from mabashian/5990-translate-start-node
Mark start node for translation Reviewed-by: John Hill <johill@redhat.com> https://github.com/unlikelyzero
This commit is contained in:
@@ -79,7 +79,7 @@
|
|||||||
"theme",
|
"theme",
|
||||||
"gridColumns"
|
"gridColumns"
|
||||||
],
|
],
|
||||||
"ignore": ["Ansible", "Tower", "JSON", "YAML", "lg", "START"],
|
"ignore": ["Ansible", "Tower", "JSON", "YAML", "lg"],
|
||||||
"ignoreComponent": [
|
"ignoreComponent": [
|
||||||
"code",
|
"code",
|
||||||
"Omit",
|
"Omit",
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import {
|
|||||||
WorkflowDispatchContext,
|
WorkflowDispatchContext,
|
||||||
WorkflowStateContext,
|
WorkflowStateContext,
|
||||||
} from '../../contexts/Workflow';
|
} from '../../contexts/Workflow';
|
||||||
import { constants as wfConstants } from './WorkflowUtils';
|
|
||||||
import WorkflowActionTooltip from './WorkflowActionTooltip';
|
import WorkflowActionTooltip from './WorkflowActionTooltip';
|
||||||
import WorkflowActionTooltipItem from './WorkflowActionTooltipItem';
|
import WorkflowActionTooltipItem from './WorkflowActionTooltipItem';
|
||||||
|
|
||||||
@@ -16,8 +15,25 @@ const StartG = styled.g`
|
|||||||
pointer-events: ${props => (props.ignorePointerEvents ? 'none' : 'auto')};
|
pointer-events: ${props => (props.ignorePointerEvents ? 'none' : 'auto')};
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
const StartForeignObject = styled.foreignObject`
|
||||||
|
overflow: visible;
|
||||||
|
`;
|
||||||
|
|
||||||
|
const StartDiv = styled.div`
|
||||||
|
background-color: #0279bc;
|
||||||
|
color: white;
|
||||||
|
width: max-content;
|
||||||
|
min-width: 80px;
|
||||||
|
height: 40px;
|
||||||
|
border-radius: 0.35em;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 40px;
|
||||||
|
padding: 0px 10px;
|
||||||
|
`;
|
||||||
|
|
||||||
function WorkflowStartNode({ i18n, onUpdateHelpText, showActionTooltip }) {
|
function WorkflowStartNode({ i18n, onUpdateHelpText, showActionTooltip }) {
|
||||||
const ref = useRef(null);
|
const ref = useRef(null);
|
||||||
|
const startNodeRef = useRef(null);
|
||||||
const [hovering, setHovering] = useState(false);
|
const [hovering, setHovering] = useState(false);
|
||||||
const dispatch = useContext(WorkflowDispatchContext);
|
const dispatch = useContext(WorkflowDispatchContext);
|
||||||
const { addingLink, nodePositions } = useContext(WorkflowStateContext);
|
const { addingLink, nodePositions } = useContext(WorkflowStateContext);
|
||||||
@@ -36,18 +52,14 @@ function WorkflowStartNode({ i18n, onUpdateHelpText, showActionTooltip }) {
|
|||||||
ref={ref}
|
ref={ref}
|
||||||
transform={`translate(${nodePositions[1].x},0)`}
|
transform={`translate(${nodePositions[1].x},0)`}
|
||||||
>
|
>
|
||||||
<rect
|
<StartForeignObject
|
||||||
fill="#0279BC"
|
height="1"
|
||||||
height={wfConstants.rootH}
|
width="1"
|
||||||
rx="2"
|
|
||||||
ry="2"
|
|
||||||
width={wfConstants.rootW}
|
|
||||||
y="10"
|
y="10"
|
||||||
/>
|
style={{ overflow: 'visible' }}
|
||||||
{/* TODO: We need to be able to handle translated text here */}
|
>
|
||||||
<text x="13" y="30" dy=".35em" fill="white">
|
<StartDiv ref={startNodeRef}>{i18n._(t`START`)}</StartDiv>
|
||||||
START
|
</StartForeignObject>
|
||||||
</text>
|
|
||||||
{showActionTooltip && hovering && (
|
{showActionTooltip && hovering && (
|
||||||
<WorkflowActionTooltip
|
<WorkflowActionTooltip
|
||||||
actions={[
|
actions={[
|
||||||
@@ -65,8 +77,8 @@ function WorkflowStartNode({ i18n, onUpdateHelpText, showActionTooltip }) {
|
|||||||
<PlusIcon />
|
<PlusIcon />
|
||||||
</WorkflowActionTooltipItem>,
|
</WorkflowActionTooltipItem>,
|
||||||
]}
|
]}
|
||||||
pointX={wfConstants.rootW}
|
pointX={startNodeRef.current.offsetWidth}
|
||||||
pointY={wfConstants.rootH / 2 + 10}
|
pointY={startNodeRef.current.offsetHeight / 2 + 10}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</StartG>
|
</StartG>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { mount } from 'enzyme';
|
import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
|
||||||
import { WorkflowStateContext } from '../../contexts/Workflow';
|
import { WorkflowStateContext } from '../../contexts/Workflow';
|
||||||
import WorkflowStartNode from './WorkflowStartNode';
|
import WorkflowStartNode from './WorkflowStartNode';
|
||||||
|
|
||||||
@@ -12,7 +12,7 @@ const nodePositions = {
|
|||||||
|
|
||||||
describe('WorkflowStartNode', () => {
|
describe('WorkflowStartNode', () => {
|
||||||
test('mounts successfully', () => {
|
test('mounts successfully', () => {
|
||||||
const wrapper = mount(
|
const wrapper = mountWithContexts(
|
||||||
<svg>
|
<svg>
|
||||||
<WorkflowStateContext.Provider value={{ nodePositions }}>
|
<WorkflowStateContext.Provider value={{ nodePositions }}>
|
||||||
<WorkflowStartNode
|
<WorkflowStartNode
|
||||||
@@ -25,7 +25,7 @@ describe('WorkflowStartNode', () => {
|
|||||||
expect(wrapper).toHaveLength(1);
|
expect(wrapper).toHaveLength(1);
|
||||||
});
|
});
|
||||||
test('tooltip shown on hover', () => {
|
test('tooltip shown on hover', () => {
|
||||||
const wrapper = mount(
|
const wrapper = mountWithContexts(
|
||||||
<svg>
|
<svg>
|
||||||
<WorkflowStateContext.Provider value={{ nodePositions }}>
|
<WorkflowStateContext.Provider value={{ nodePositions }}>
|
||||||
<WorkflowStartNode nodePositions={nodePositions} showActionTooltip />
|
<WorkflowStartNode nodePositions={nodePositions} showActionTooltip />
|
||||||
|
|||||||
@@ -250,7 +250,7 @@ function VisualizerGraph({ i18n, readOnly }) {
|
|||||||
</defs>
|
</defs>
|
||||||
<rect
|
<rect
|
||||||
height="100%"
|
height="100%"
|
||||||
id="workflow-backround"
|
id="workflow-background"
|
||||||
opacity="0"
|
opacity="0"
|
||||||
width="100%"
|
width="100%"
|
||||||
{...(addingLink && {
|
{...(addingLink && {
|
||||||
@@ -267,12 +267,6 @@ function VisualizerGraph({ i18n, readOnly }) {
|
|||||||
/>
|
/>
|
||||||
<g id="workflow-g" ref={gRef}>
|
<g id="workflow-g" ref={gRef}>
|
||||||
{nodePositions && [
|
{nodePositions && [
|
||||||
<WorkflowStartNode
|
|
||||||
key="start"
|
|
||||||
showActionTooltip={!readOnly}
|
|
||||||
onUpdateHelpText={setHelpText}
|
|
||||||
readOnly={readOnly}
|
|
||||||
/>,
|
|
||||||
links.map(link => {
|
links.map(link => {
|
||||||
if (
|
if (
|
||||||
nodePositions[link.source.id] &&
|
nodePositions[link.source.id] &&
|
||||||
@@ -307,6 +301,12 @@ function VisualizerGraph({ i18n, readOnly }) {
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}),
|
}),
|
||||||
|
<WorkflowStartNode
|
||||||
|
key="start"
|
||||||
|
showActionTooltip={!readOnly}
|
||||||
|
onUpdateHelpText={setHelpText}
|
||||||
|
readOnly={readOnly}
|
||||||
|
/>,
|
||||||
]}
|
]}
|
||||||
{addingLink && (
|
{addingLink && (
|
||||||
<PotentialLink
|
<PotentialLink
|
||||||
|
|||||||
@@ -94,7 +94,8 @@ function VisualizerLink({
|
|||||||
];
|
];
|
||||||
|
|
||||||
const handleLinkMouseEnter = () => {
|
const handleLinkMouseEnter = () => {
|
||||||
ref.current.parentNode.appendChild(ref.current);
|
const startNode = document.getElementById('node-1');
|
||||||
|
ref.current.parentNode.insertBefore(ref.current, startNode);
|
||||||
setHovering(true);
|
setHovering(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user