(function(exports) {
"use strict";
const calculatedata = {
staticsize: {
min: 150,
max: 200
},
staticmass: {
min: 9.0,
max: 10.0
},
dynamicsize: {
min: 50,
max: 100
},
dynamicmass: {
min: 0.1,
max: 0.5
},
step: 0.0001,
distancemultipler: 1,
showemitters: true,
showtailes: true,
showgrid: true,
emmitspeed: 66,
speedcount:0,
gravityconstant: 0.6674484 //0.00000000006674484
};
exports.data = calculatedata;
exports.init = init;
function init(data){
const sheet_settings = {
header: "Настройки листа",
body: {
rows: [
{
id: "sheetclick",
view: "switch",
value: 1,
labelWidth: 200,
label:"клик на листе ставит объекты"
},
{ type: "section", template: "тип объектов выставляемых по клику"},
{
view:"segmented",
value:"dynamic",
id: "itemtype",
options:[
{ id:"static", value:"статические"},
{ id:"dynamic", value:"динамические"},
{ id:"emitter", value:"источники"}
],
align:"center"
}
]
}
};
const show_settings = {
header: "Параметры отображения",
body: {
rows: [
{
id: "gridshow",
view: "switch",
value: 1,
labelWidth: 200,
label:"отображать сетку",
on:{
onChange: function(newv, oldv){
calculatedata.showgrid = newv;
}
}
},
{
id: "emittershow",
view: "switch",
value: 1,
labelWidth: 200,
//labelRight:"клик ставит объекты"
label:"отображать источники",
on:{
onChange: function(newv, oldv){
calculatedata.showemitters = newv;
}
}
},
{
id: "tailshow",
view: "switch",
value: 1,
labelWidth: 200,
label:"отображать шлейф",
on:{
onChange: function(newv, oldv){
calculatedata.showtailes = newv;
}
}
}
]
}
};
const phisical_settings = {
header: "Настройки физических величин",
body: {
rows: [
{
view:"rangeslider", id: "staticsize", label:"размер статичных", labelWidth: 130,
value:"150,200", title: webix.template("#value#"),
min: 1, max: 500,
on:{
onChange: function(value){
calculatedata.staticsize.min = parseInt(value[0]);
calculatedata.staticsize.max = parseInt(value[1]);
}
}
},
{
view:"rangeslider", id: "dynamicsize", label:"размер динамических", labelWidth: 130,
value:"50,100", title: webix.template("#value#"),
min: 1, max: 500,
on:{
onChange: function(value){
calculatedata.dynamicsize.min = parseInt(value[0]);
calculatedata.dynamicsize.max = parseInt(value[1]);
}
}
},
{
view:"rangeslider", id: "staticmass", label:"плотность статичных", labelWidth: 130,
value:"8.0,10.0", title: v=>{
return parseFloat(v.value).toFixed(1);
},
min: 0.1, max: 10.0, step:0.1,
on:{
onChange: function(value){
calculatedata.staticmass.min = parseFloat(value[0]).toFixed(1);
calculatedata.staticmass.max = parseFloat(value[1]).toFixed(1);
}
}
},
{
view:"rangeslider", id: "dynamicmass", label:"плотность динамических", labelWidth: 130,
value:"0.5,1.5", title: v=>{
return parseFloat(v.value).toFixed(1);
},
min: 0.1, max: 10.0, step:0.1,
on:{
onChange: function(value){
calculatedata.dynamicmass.min = parseFloat(value[0]).toFixed(1);
calculatedata.dynamicmass.max = parseFloat(value[1]).toFixed(1);
}
}
}
]
}
};
const preset_settings = {
header: "Предустановленные варианты",
body: {
rows: [
]
}
};
const simulate_settings = {
header: "Управление симуляцией",
body: {
rows: [
{
view:"slider", id: "step", label:"шаг симуляции", labelWidth: 130,
value: 10, title: webix.template("#value#"),
min: 0, max: 100,
on:{
onChange: function(value){
calculatedata.step = 0.00001*(1+parseInt(value));
}
}
},
{
view:"slider", id: "emitterspeed", label:"скорость источников", labelWidth: 130,
value: 66, title: webix.template("#value#"),
min: 0, max: 100,
on:{
onChange: function(value){
const q = (100-parseInt(value))/100;
calculatedata.emmitspeed = 25+q*75;
}
}
},
{
id: "itememitter",
view: "switch",
value: 0,
labelWidth: 200,
label:"включить источники",
on:{
onChange: function(newv, oldv){
if(newv) calculatedata.isEmitt = true;
else calculatedata.isEmitt = false;
}
}
},
{
id: "simulate",
view: "switch",
value: 0,
labelWidth: 200,
label:"включить симуляцию",
on:{
onChange: function(newv, oldv){
if(!newv ){
calculatedata.isSimulate = false;
return;
}
if( calculatedata.isSimulate ) return;
calculatedata.isSimulate = true;
play();
}
}
}
]
}
};
/* панель инструментов */
const view_tools = {
id: "view_tools",
multi:true,
view:"accordion",
height: "100%",
width: 300,
rows:[
sheet_settings,
show_settings,
phisical_settings,
preset_settings,
simulate_settings,
{}
]
};
const header_view = {
id:"header_view",
height: 32,
css: "tool_bar"
};
const main_view = {
rows:[
header_view,
{
type: "space",
cols:[
{
view: "flow",
adjust:true,
fillspace: true,
drag: "target",
id: "view_sheet",
type: "line",
sheet: {
_offsetx: -3000,
_offsety: -2000,
scale: 0.2
},
on: {
click: mouseclick
}
},
{ view: "resizer"},
view_tools
]
},
{
template:"footer",
height: 22
}
]
};
webix.ui(main_view);
function play(){
if( !calculatedata.isSimulate ) return;
if( calculatedata.isEmitt ) emmitItems();
calcItemStep();
flow.planedReDraw();
flow.reDraw();
setTimeout(play,20);
}
const flow = $$("view_sheet");
const tools = flow.flow.t;
createItem( {x: 0, y: 0}, "static");
flow.reDraw();
....
})(this.Interface = {});
автоматом и с html сайта невозможно спарсить
Достаточно эмулировать действия пользователя в браузереименно про это и имел ввиду, с той лишь разницей, что предлагал брать данные из отрендеренного представления а вы непосредственно брать их из ответовна запросы.