(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 = {});
Как использовать R скрипт на сайте?
Здравствуйте! Собственно, у меня есть скрипт написанный в R для обработки некоторых данных. Как можно(и можно ли) использовать его для обработки некоторых данных получаемых моим сайтом?
Или же искать хостинг с поддержкой R или покупать VPS?
P.S. Скрипт нужен именно R(питон или пыха не подходят)
Заранее всем спасибо))
const request = require('request');
const url = "https://rextester.com/rundotnet/Run";
const code = "print(\"Hello, world 1234!\")\n";
const sendData = {
"LanguageChoiceWrapper": 31,
"EditorChoiceWrapper": 1,
"LayoutChoiceWrapper": 1,
"Program": code,
"IsInEditMode": "False",
"IsLive": "False"
};
request.post({
url: url,
headers: {
"X-Auth-Token":'123',
"Accept":" text/plain",
"Referer": "https://rextester.com/l/r_online_compiler",
"Access-Control-Allow-Origin": "https://rextester.com"
},
form: sendData
},
function (err, httpResponse, body) {
if (err) {
return console.error('upload failed:', err);
}
console.log('Upload successful! Server responded with:', body);
});
Upload successful! Server responded with: {"Warnings":null,"Errors":null,"Result":"[1] \"Hello, world 1234!\"\n","Stats":"Absolute running time: 0.27 sec, cpu time: 0.44 sec, memory peak: 30 Mb, absolute service time: 0,28 sec","Files":null}
HTML5 solution to upload a webcam/camera video str...
Cross-browser camera capture with getUserMedia/WebRTC