Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Более наглядная иллюстрация исполнения бизнес процессов в диаграмме #18

Open
leonpolak opened this issue Jul 18, 2022 · 2 comments

Comments

@leonpolak
Copy link
Contributor

Это довольно непростой кусок, в ходе которого придётся разбираться с Joint.js, но я там подскажу что-куда.

В разделе server есть файл flows/Store.md, который показывает соурс код файла и диаграмму построенную на его основе, справа вверху есть кнопка Run запускающая бизнес процесс на сервере и показывающая его поэтапное исполнение. Прямо сейчас, этапы процесс показываются интерактивными формами и примитивным alert. Это надо переделать таким образом, чтобы этапы процесса обозначались на самой диаграмме, как здесь (выделите справа вверху Scenario 2, выберите "move", отодвиньте подальше "Scenario End", выберите "run" и кликните на "Scenario Start"). Примерный код для такой функциональности я дам.

@Volchinskiy
Copy link

10.08.2022 взял это ишью.

@leonpolak
Copy link
Contributor Author

Здесь можно посмотреть на демо с перемещающимися шариками
Они делаются примерно так:

paper.on('element:pointerdown', this.elementPointerdownHandler);
elementPointerdownHandler(cellView, evt, x, y){
const element = cellView.model;

                if (this.modes.run){
                    element.trigger('signal', element);
                }
}

Вот образец кода для анимации прерывистых линий

if (this.animatedLinks.on){
                    this.animatedLinks.on = false;
                    for (let link of this.links){
                        link.attr(['line', 'strokeDasharray'], null);
                        link.attr(['line', 'strokeDashoffset'], 0);
                    }
                    if (this.animatedLinks.interval) {
                        clearInterval(this.animatedLinks.interval);
                        this.animatedLinks.interval = null;
                    }
                }
                else {
                    this.animatedLinks.on = true;
                    for (let link of this.links){
                        link.attr(['line', 'strokeDasharray'], '3 5');
                        link.attr(['line', 'strokeDashoffset'], 0);// link.animate();
                    }
                    this.animatedLinks.interval = setInterval(()=>{
                        for (let link of this.links){
                            link.attr(['line', 'strokeDashoffset'], link.attr(['line', 'strokeDashoffset']) + 5);
                        }
                    }, 100)
                }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants