TimerEditor.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import { ObjectNode, NumberInput, LabelElement, Element, ButtonInput } from '../../libs/flow.module.js';
  2. import { TimerNode } from '../../renderers/nodes/Nodes.js';
  3. export class TimerEditor extends ObjectNode {
  4. constructor() {
  5. const node = new TimerNode();
  6. super( 'Timer', 1, node, 250 );
  7. this.title.setIcon( 'ti ti-clock' );
  8. const updateField = () => {
  9. field.setValue( node.value.toFixed( 3 ) );
  10. };
  11. const field = new NumberInput().onChange( () => {
  12. node.value = field.getValue();
  13. } );
  14. const scaleField = new NumberInput( 1 ).onChange( () => {
  15. node.scale = scaleField.getValue();
  16. } );
  17. const moreElement = new Element().add( new ButtonInput( 'Reset' ).onClick( () => {
  18. node.value = 0;
  19. updateField();
  20. } ) ).setSerializable( false );
  21. this.add( new LabelElement( 'Value' ).add( field ).setSerializable( false ) )
  22. .add( new LabelElement( 'Scale' ).add( scaleField ) )
  23. .add( moreElement );
  24. // extends node
  25. node._update = node.update;
  26. node.update = function ( ...params ) {
  27. this._update( ...params );
  28. updateField();
  29. };
  30. }
  31. }