workflow-data.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { fileSaver } from './helper';
  2. import Workflow from '@/models/workflow';
  3. export function importWorkflow() {
  4. const input = document.createElement('input');
  5. input.type = 'file';
  6. input.accept = 'application/json';
  7. input.onchange = (event) => {
  8. const file = event.target.files[0];
  9. if (!file || file.type !== 'application/json') {
  10. alert('Invalid file');
  11. return;
  12. }
  13. const reader = new FileReader();
  14. reader.onload = ({ target }) => {
  15. try {
  16. const workflow = JSON.parse(target.result);
  17. Workflow.insert({ data: workflow });
  18. } catch (error) {
  19. console.error(error);
  20. }
  21. };
  22. reader.readAsText(file);
  23. };
  24. input.click();
  25. }
  26. export function exportWorkflow(workflow) {
  27. const keys = ['dataColumns', 'drawflow', 'icon', 'name', 'settings'];
  28. const content = {};
  29. keys.forEach((key) => {
  30. content[key] = workflow[key];
  31. });
  32. const blob = new Blob([JSON.stringify(content)], {
  33. type: 'application/json',
  34. });
  35. const url = URL.createObjectURL(blob);
  36. fileSaver(`${workflow.name}.json`, url);
  37. }
  38. export default {
  39. export: exportWorkflow,
  40. import: importWorkflow,
  41. };