Skip to content

Commit 7e3a130

Browse files
author
lvargas
committed
feat: added flow to js
1 parent 65bdb91 commit 7e3a130

File tree

3 files changed

+34
-3
lines changed

3 files changed

+34
-3
lines changed

src/app/shared/components/tool-bar/ToolBar.tsx

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@ import { useHistory } from 'react-router-dom';
55

66
import { PropertiesTab } from '../../../pages/editor/properties-tab/PropertiesTab';
77
import { tabListStore } from '../../stores';
8-
import { DownloadService, openContextMenu, ProjectsStorage } from '../../services';
8+
import { DownloadService, FlowToJs, openContextMenu, ProjectsStorage } from '../../services';
99
import { useEditorContext } from '../../hooks';
1010
import { TabButtonSimple } from '../tabs';
1111
import { TabList } from '../tab-list';
1212
import { Modal } from '../modal';
1313
import './ToolBar.css';
14+
import { ProjectParser } from '../../models';
15+
import { EComponentType } from '../../enuns';
1416

1517
export const ToolBar: React.FC = memo(() => {
1618
const [isOpenModalProps, setIsOpenModalProps] = useState(false);
@@ -58,8 +60,27 @@ export const ToolBar: React.FC = memo(() => {
5860
}, []);
5961

6062
const handleExport = useCallback(() => {
61-
DownloadService.downloadFilesAsZip([{ name: 'src', isFolder: true, children: [] }]);
62-
}, []);
63+
DownloadService.downloadFilesAsZip([
64+
{ name: '.codeeasy', isFolder: true, children: [{ name: 'config', type: 'json', isFolder: false, content: ProjectParser.stringify(project) }] },
65+
{ name: 'package', type: 'json', isFolder: false, content: '{}' },
66+
{ name: 'Routes', type: 'js', isFolder: false, content: '' },
67+
{ name: 'index', type: 'js', isFolder: false, content: '' },
68+
{
69+
name: 'src',
70+
isFolder: true,
71+
children: project.tabs.value.map(tab => ({
72+
name: tab.label.value,
73+
isFolder: true,
74+
children: tab.items.value.map(treeItem => ({
75+
isFolder: treeItem.type.value === EComponentType.grouper,
76+
content: FlowToJs(treeItem, treeItem.items.value),
77+
name: treeItem.label.value,
78+
type: 'js',
79+
}))
80+
}))
81+
},
82+
]);
83+
}, [project]);
6384

6485
const openMoreOption = useCallback((e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
6586
openContextMenu(e.clientX, 35, [
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { IFlowItemComponent, ITreeItemComponent } from "../../interfaces";
2+
3+
export const FlowToJs = (treeItem: ITreeItemComponent, flowItems: IFlowItemComponent[]) => {
4+
let result = `export const ${treeItem.label.value} = () => {\n`;
5+
6+
result = result + flowItems.map(flowItem => `// ${flowItem.name.value}${flowItem.label.value} - - ${flowItem.type.value} - ${flowItem.flowItemType.value} - `).join('\n');
7+
8+
return result + '\n}\n';
9+
}

src/app/shared/services/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@ export * from './storage/IdeConfigStorage';
55
export * from './storage/ProjectsStorage';
66
export * from './helpers/ProblemsHelper';
77
export * from './helpers/OutputHelper';
8+
export * from './flow-to-js/FlowToJs';
89
export * from './text-conversion';
910
export * from './AssetsService';

0 commit comments

Comments
 (0)