# j-Flow

> j-Flow: τα αναγνωριστικά δεν μπορούν να περιέχουν φορτίο; NEW onpause {String} μια διαδρομή προς τη μέθοδο fn(δρόμος, είναι), εκτελείται όταν η έξοδο / εισαγωγή παύεται

Framework: jcomponent20
Product: jComponent 20 (jcomponent@20)
Language: el
Content-SHA256: 8c23a5aba761082d63e8bc446d1860f24ecc1c2865c9a1fb96fec46b9a046b7a
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: components@910ed1a86f6e72b4f031d3ad0dc7844f9fc5cb8e
Review: not-recorded

- Οι αναγνωριστές δεν μπορούν να περιέχουν φάρμακα `__`

__ΕΠΙΤΡΟΦΗ__:

- `width {Number}` ένα πλάτος του σχεδιαστή ροής, προεπιλογή: `6000`
- `height {Number}` ένα ύψος του σχεδιαστή ροής, προεπιλογή: `6000`
- `grid {Number}` ένα μέγεθος του φόντου, προεπιλεγμένο: `25`
- `paddingX {Number}` εσωτερική πατίνωση, προεπιλεγμένη: `6`
- Το `curvedlines {Boolean}` επιτρέπει γραμμές καμπύλης, προεπιλογή: `false`
- `infopath {String}` ένα μονοπάτι προς μεταβλητή/μέθοδο, απάντηση: `{ zoom: Number, selected: Object }`
- `undopath {String}`: Ο δρόμος προς την μεταβλητή/μέθοδο, η απάντηση είναι το αντικείμενο
- `redopath {String}`: Ο δρόμος προς την μεταβλητή/μέθοδο, η απάντηση είναι το αντικείμενο
- `ondrop {String}` Ο δρόμος προς τη μέθοδο `fn(dropmeta, grid)`
- `onmake {String}` ένα μονοπάτι προς τη μέθοδο `fn(el, com)`, εκτελείται όταν το συστατικό δημιουργείται
- `ondone {String}` ένα μονοπάτι προς τη μέθοδο `fn(el, com)`, εκτελείται όταν δημιουργείται το συστατικό
- Το `onmove {String}` είναι ο δρόμος προς τη μέθοδο `fn(el, com/group, type)`, εκτελείται όταν το στοιχείο/ομάδα κινείται
- `onremove {String}` ένα μονοπάτι προς τη μέθοδο `fn(el, com)`, εκτελείται όταν το συστατικό αφαιρείται
- Το `onconnect {String}` είναι μια πορεία προς τη μέθοδο `fn(meta)`, εκτελείται όταν συνδέονται τα δύο συστατικά.
- Το `ondisconnect {String}` είναι ένα μονοπάτι προς τη μέθοδο `fn(meta)`, εκτελείται όταν τα δύο συστατικά αποσυνδέονται
- __NEW__ `onpause {String}` ένα μονοπάτι προς τη μέθοδο `fn(path, is)`, εκτελείται όταν η έξοδο / εισαγωγή παύεται
- Το `steplines {Boolean}` επιτρέπει γραμμές βήματος (προεπιλεγμένο: `false`)
- `animationradius {Number}` ραδιόφωνο σε pixels (προεπιλεγμένο: `5`)
- `contextmenu {String}` ένα μονοπάτι για το `function(e, type, component/meta)` (τυπός μπορεί να είναι `map`, `component`, `connection`, `group`)
- `dblclick {String}` Ο δρόμος για `function(component)`
- `outputoffsetX {Number}` ένα προεπιλεγμένο X offset για το σημείο εξόδου (προεπιλογή: `10`)
- `outputoffsetY {Number}` μια προεπιλεγμένη αποζημίωση Y για το σημείο εξόδου (προεπιλογή: `12`)
- `inputoffsetX {Number}` ένα προεπιλεγμένο X offset για το σημείο εισόδου (προεπιλογή: `10`)
- `inputoffsetY {Number}` μια προεπιλεγμένη αποζημίωση Y για το σημείο εισόδου (προεπιλογή: `12`)
- `snapping {Number}` σε pixels (προεπιλεγμένο: `0` = απενεργοποιημένο)
- Το `multiple {Boolean}` επιτρέπει την πολλαπλή επιλογή του συστατικού (προεπιλεγμένο: `true`)
- `history {Number}` ένας αριθμός βημάτων στην ιστορία undo/redo (προεπιλογή: `100`)
- `animationlimit {Number}`: Ο μέγιστος αριθμός σημείων για όλες τις κινούμενες εκπομπές (προεπιλογή: `100`)
- `animationlimitconnection {Number}` ο μέγιστος αριθμός σημείων ανά σύνδεση (προεπιλογή: `5`)
- Το `allowpause {Boolean}` επιτρέπει τη διακοπή των εξόδων/εισαγωγών (προσδιορισμός: `true`)
- Το `markers {Boolean}` προσθέτει σήματα στο σύνδεσμο (προεπιλεγμένο: `true`)

__Η εντολή__:

- `flow.refresh` Επαναμέτρηση θέσεων
- Το `flow.selected.disconnect` αποκλείει την επιλεγμένη σύνδεση
- Το `flow.selected.remove` αφαιρεί το επιλεγμένο συστατικό
- Το `flow.selected.clear` αφαιρεί το επιλεγμένο συστατικό ή τη σύνδεση
- `flow.zoom` Το ζόμ, το επιχείρημα: `type` (Μπορεί να είναι : `in`, `out`, `reset` ή `percentage {Number}`Το δεύτερο επιλεκτικό επιχείρημα: `percentage`
- Το `flow.undo` εκτελεί βήμα
- Το `flow.redo` είναι έτοιμο
- Επαναστατικό `flow.reset`
- `flow.components.add` προσθέτει ένα νέο συστατικό, το επιχείρημα: `component_declaration`
- `flow.components.find` βρει ένα συστατικό, το επιχείρημα: `component_id`
- `flow.clean` καθαρίζει τα δεδομένα και τις μη υπάρχουσες συνδέσεις
- Φωτογραφία `flow.traffic(componentid__outputid, { count: 3, speed: 3, limit: 20, delay: 50, reverse: false })`
	- Η αναμόρφωση `reverse` μπορεί να ενεργοποιηθεί προσθέτοντας το `_` ως ένα ξεκίνημα του αναγνωριστή `_componentid__outputid`.
- __NEW__ `flow.groups.find` βρίσκει μια ομάδα, επιχείρηση: `group_id`
- __NEW__ `flow.check` μια νέα ταχύτερη εναλλακτική λύση στην εντολή `flow.refresh`
- __NEW__ `flow.find` βρίσκει ένα στοιχείο ή ομάδα, το επιχείρημα: `component_id` ή `group_id`

__Προσθέτοντας ένα νέο συστατικό__:

- Το στοιχείο δημιουργεί αυτόματα το ID του στοιχείου
- `connections` Είναι `{Object}`

```js
// Component declaration
var component = {
	x: 100,
	y: 50,
	html: 'Component test',

	outputs: ['1 output name', '2 output name'],
	// or
	// outputs: [{ id: 'A', name: 'A output name' }, { id: 'B', name: 'B output name', color: '#FF8E37' }],

	connections: { '0': [{ id: '0002', index: '2', disabled: false }] }, // Look to the connection object below
	// or
	// connections: { 'A': [{ id: '0002', index: 'B', disabled: false }] },

	actions: { select: true, move: true, disabled: false, remove: true, connect: true }
};

// Appends component
CMD('flow.components.add', component);
```

```js
// Connection object
// connections: { '0': [CONNECTION_OBJECT1, CONNECTION_OBJECT2, CONNECTION_OBJECT3] }
{
	id: 'TARGET_ID_COMPONENT',
	index: '0', // An input index or index id, must be string!!!
	disabled: false // Optional, it's the connection disabled? Disabled connection can't be removed
}
```

__Πλημμύρες εξόδου__:

- επιστρέφει το `Object` που είναι τα κλειδιά του `ID` των συστατικών

```js
{
	'F1562743923216': { x: 1, y: 1, connections: [], ... },
	'F1562743965303': { x: 1, y: 1, connections: [], ... },

	// Contains paused endpoints
	paused: { 'input__COMPONENTID__INDEXID': 1, 'output__COMPONENTID__INDEXID': 1 },

	// Contains groups
	groups: [{ id: 'GroupID', name: 'Name', x: 100, y: 100, width: 100, height: 100, background: 'rgba(0,0,0,0.1)', color: '#000', border: 'rgba(0,0,0,0.1)' }, ...];
}
```

__Καλό να ξέρεις__:

- Κάθε συστατικό (στην ροή) περιέχει κλάση `f-COMPONENTNAME`
- Η τάξη `selectable` στο στοιχείο επιτρέπει την αντιγραφή κειμένου και απαγορεύει τη μετακίνηση
- Το `connections` υποστηρίζει το `type:"transform"`

Χρησιμοποιήστε το με `<ui-component name="flow">`Όταν το στοιχείο δεν έχει φορτωθεί ακόμα, jComponent Κατεβάστε το για πρώτη φορά από τη διεύθυνση `DEF.fallback` (Η Componentator Συγγραφέας: Peter Širka. πηγή: το Componentator Ετικέτες Αξιολόγηση, MIT άδεια.

```html example.html
<style>
	.toolbar { margin-bottom: 10px; }
	.toolbar button { min-width: 26px; height: 24px; background-color: transparent; border: 0; font-size: 12px; color: gray; }
	.toolbar button span { margin-left: 3px; }
	.toolbar button[name="remove"] { color: red !important; }
	.toolbar button:disabled { color: #C0C0C0 !important; cursor: not-allowed; }
	.toolbar button:hover { color: black; }
	.toolbar button:first-child { border-left: 0; }
</style>

<div class="toolbar">
	<button is="is-button" path="floweditor.undo" config="enabled:value && value.length > 0;click:floweditor_undo" disabled="disabled"><i class="ti ti-undo"></i></button>
	<button is="is-button" path="floweditor.redo" config="enabled:value && value.length > 0;click:floweditor_redo" disabled="disabled"><i class="ti ti-redo"></i></button>
	<button is="is-button" path="floweditor.info.selected" config="enabled;click:floweditor_remove" name="remove" disabled="disabled"><i class="ti ti-trash"></i></button>
</div>

<ui-component name="flow" path="flowmodel" config="width:6000;height:6000;grid:26;infopath:floweditor.info;undopath:floweditor.undo;redopath:floweditor.redo"></ui-component>

<script>

	var flowmodel = {
		groups: [{ id: 'G12345', name: 'My group', x: 50, y: 50, width: 300, height: 300 }],
		'F1562743923216': { x: 100, y: 150, html: 'Component 1', outputs: ['Done', 'Error'], connections: { '0': [{ id: 'F1562743965303', index: '2', disabled: false }] }},
		'F1562743965303': { x: 500, y: 250, html: 'Component 2', inputs: ['1', '2', '3'] }
	};

	var floweditor = {};

	function floweditor_undo() {
		CMD('flow.undo');
	}

	function floweditor_redo() {
		CMD('flow.redo');
	}

	function floweditor_remove() {
		CMD('flow.selected.clear');
	}

	// Extend buttons for using Web components
	customElements.define('is-button', class extends HTMLButtonElement {
		constructor() {
			super();
			setTimeout(NEWUIBIND, 2, this);
		}
	}, { extends: 'button' });

</script>
```
