+
+
+ } onClick={this.handleAddPlugin} n={this.props.n} tips={"Add a new "+this.props.data.Name}/>
+
+
+
+
+
-
+
-
+
-
-
-
+
-
+
{makeinfo(this.props.keys,this.props.selected,this.props.Cdata,this.props.n)}
{this.props.comments}
-
-
-
);
}
}
class ManagePlugins extends React.Component{
constructor(props) {
super(props);
this.handleCostChange = this.handleCostChange.bind(this);
this.handleAddPlugin = this.handleAddPlugin.bind(this);
this.handleRemovePlugin = this.handleRemovePlugin.bind(this);
this.state={
n:1,
'varsum':{}
};
}
handleRemovePlugin(key){
const n=this.state.n+1;
this.setState({n:n});
}
handleAddPlugin(key){
const n=this.state.n+1;
this.setState({n:n});
}
handleCostChange(name,e) {
this.state.varsum[name]=e;
this.props.handleCostChange(this.props.n,sum(this.state.varsum));
}
render() {
return(
{(index) => }
);}
}
class PluginsMain extends React.Component {
constructor(props) {
super(props);
this.handleCostChange = this.handleCostChange.bind(this);
this.state={'varsum':{}};
}
handleCostChange(name,e) {
// console.log("name"+name);
this.state.varsum[name]=e;
this.props.TotalCost(sum(this.state.varsum));
}
render() {
return(
{(index) => }
);
}
}
// ---------------------
// ---------------------
class Main extends React.Component {
constructor(props) {
super(props);
this.handleCostChange = this.handleCostChange.bind(this);
this.state={'total':0,'prevtotal':0};
}
handleCostChange(total) {
// console.log("there total : "+total )
if (this.state.prevtotal != total){
// console.log("updated :"+total);
// console.log("prev :"+this.state.prevtotal);
this.setState({'total':total});
this.setState({'prevtotal':total});
}
}
render() {
return(
);
}
}
// ---------------------
// ---------------------
ReactDOM.render(
,document.getElementById('root'));
$(function () {
$('[data-toggle="tooltip"]').tooltip()
})
\ No newline at end of file
diff --git a/js/data.js b/js/data.js
index ff68ec9..d065bb4 100644
--- a/js/data.js
+++ b/js/data.js
@@ -1,332 +1,333 @@
// Providers
// ----------------------------------------------------
// ----------------------------------------------------
// Storage
const NasEpfl = {
- style: "AmountRatesCost",
- provider : "EPFL-VPSI",
- name:'NAS',
- url : [
- {name:'VPSI-Website',url:'https://support.epfl.ch/help/epfl?id=epfl_service_status&service=49a363acdb34c700ef64731b8c96191f'}
+ Style: "AmountRatesCost",
+ Provider : "EPFL-VPSI",
+ Name:'NAS',
+ Url : [
+ {Name:'VPSI-Website',Url:'https://support.epfl.ch/help/epfl?id=epfl_service_status&service=49a363acdb34c700ef64731b8c96191f'}
],
AmountName: "Amount",
AmountUnit: "TB",
AmountMin : 1,
AmountMax : 100,
AmountStep : 1,
AmountFree:1,
AmountFreeCumulative:false,
RateVar : true,
RateName : 'Performance',
Rates : {
'Collaborative': 165,
'On-line archive': 110,
'Raw': 55
},
RateUnit : "CHF / TB"
};
const SwitchEpfl = {
- style : 'CategoryCost',
- provider : "Switch-EPFL",
- name:'Online Storage',
- url : [
- {name:'Switch Website',url:'https://drive.switch.ch/'}
+ Style : 'CategoryCost',
+ Provider : "Switch-EPFL",
+ Name:'Online Storage',
+ Url : [
+ {Name:'Switch Website',Url:'https://drive.switch.ch/'}
],
CatName:'Options',
Cat:{
'Cloud Based max 50GB':0,
},
CatUnit:'CHF',
};
const GoogleDriveEdu = {
- style : 'CategoryCost',
- provider : "Google Drive Educ",
- name:'Online Storage',
- url : [
- {name :'Google Education Page',url:'https://edu.google.com/?modal_active=none'}
+ Style : 'CategoryCost',
+ Provider : "Google Drive Educ",
+ Name:'Online Storage',
+ Url : [
+ {Name :'Google Education Page',Url:'https://edu.google.com/?modal_active=none'}
],
CatName:'Options',
Cat:{
'Cloud Based illimited':0,
},
CatUnit:'CHF',
};
// ELN
const SLIMSEpfl = {
- style:'CategoryAmountRatesCost',
- provider : "EPFL-LSIS",
- name:'SLIMS',
- url : [
- {name:'SLIMS on LSIS Website',url:'https://lsis.epfl.ch/page-140284-en.html'},
- {name:'SLIMS Cost on LSIS Website',url:'https://lsis.epfl.ch/cms/site/lsis/lang/en/lims'},
- {name: 'Genohm (SLIMS Company)',url:'https://www.genohm.com/'}
+ Style:'CategoryAmountRatesCost',
+ Provider : "EPFL-LSIS",
+ Name:'SLIMS',
+ Url : [
+ {Name:'SLIMS on LSIS Website',Url:'https://lsis.epfl.ch/page-140284-en.html'},
+ {Name:'SLIMS Cost on LSIS Website',Url:'https://lsis.epfl.ch/cms/site/lsis/lang/en/lims'},
+ {Name: 'Genohm (SLIMS Company)',Url:'https://www.genohm.com/'}
],
CatName:'PI Status',
Cat:{
'Full Professor':3000,
'Associate Professor':2000,
'Tenure Track Assistant Professor or Core Facility':1000
},
CatUnit:'CHF',
AmountName: "Storage",
AmountUnit: "TB",
AmountMin : 1,
AmountMax : 100,
AmountStep : 1,
AmountFree:0,
AmountFreeCumulative:false,
RateVar : true,
RateName: 'ELN Storage',
Rates : {
'Stored on EPFL Server': 300,
},
RateUnit : "CHF / TB"
};
// Database
const MysqlEpfl = {
- style : 'CategoryCost',
- provider : "EPFL-VPSI",
- name:'MySql',
- url : [
- {name:'EPFL VPSI ',url:'https://support.epfl.ch/epfl?id=epfl_service_status&service=eb026fa0db34c700ef64731b8c96198e'}
+ Style : 'CategoryCost',
+ Provider : "EPFL-VPSI",
+ Name:'MySql',
+ Url : [
+ {Name:'EPFL VPSI ',Url:'https://support.epfl.ch/epfl?id=epfl_service_status&service=eb026fa0db34c700ef64731b8c96198e'}
],
CatName:'Options',
Cat:{
'MySQL max 2GB':0,
},
CatUnit:'CHF',
};
// Repository
const Zenodo = {
- style : 'CategoryCost',
- provider : "Zenodo-CERN",
- name:'Zenodo',
- url : [
- {name:'Zenodo Website',url:'https://www.zenodo.org/'},
- {name:'About Zenodo',url:'http://about.zenodo.org/'},
+ Style : 'CategoryCost',
+ Provider : "Zenodo-CERN",
+ Name:'Zenodo',
+ Url : [
+ {Name:'Zenodo Website',Url:'https://www.zenodo.org/'},
+ {Name:'About Zenodo',Url:'http://about.zenodo.org/'},
],
CatName:'Options',
Cat:{
- 'Max 50GB per dataset':0,
+ 'Max 50GB per Dataset':0,
},
CatUnit:'CHF',
};
const C4science = {
- style : 'CategoryCost',
- provider : "EPFL-SCITAS",
- name:'C4Science',
- url : [
- {name:'C4Science Website',url:'https://www.c4science.ch/'}
+ Style : 'CategoryCost',
+ Provider : "EPFL-SCITAS",
+ Name:'C4Science',
+ Url : [
+ {Name:'C4Science Website',Url:'https://www.c4science.ch/'}
],
CatName:'Options',
Cat:{
'Free for text file':0,
},
CatUnit:'CHF',
};
const Github = {
- style: "AmountRatesCost",
- provider : "GitHub",
- name:'GitHub',
- url : [
- {name:'Github Website Pricing',url:'https://github.com/pricing'}
+ Style: "AmountRatesCost",
+ Provider : "GitHub",
+ Name:'GitHub',
+ Url : [
+ {Name:'Github Website Pricing',Url:'https://github.com/pricing'}
],
AmountName: "Number of user",
AmountUnit: "User(s)",
AmountMin : 1,
AmountMax : 100,
AmountStep : 1,
AmountFree:0,
AmountFreeCumulative:false,
RateVar : true,
RateName:'Plan',
Rates:{
'OpenSource project':0,
'Developer (for one user)':81.6,
'Team (min 5 users)':104.9,
'Business Cloud':244.7
},
RateUnit:'CHF / Users',
};
const Bitbucket= {
- style: "AmountRatesCost",
- provider : "Bitbucket",
- name:'BitBucket',
- url : [
- {name:'Bitbucket Website Pricing',url:'https://bitbucket.org/product/pricing'}
+ Style: "AmountRatesCost",
+ Provider : "Bitbucket",
+ Name:'BitBucket',
+ Url : [
+ {Name:'Bitbucket Website Pricing',Url:'https://bitbucket.org/product/pricing'}
],
AmountName: "Number of user",
AmountUnit: "User(s)",
AmountMin : 1,
AmountMax : 100,
AmountStep : 1,
AmountFree:0,
AmountFreeCumulative:false,
RateVar : true,
RateName:'Plan',
Rates:{
'Free (up to 5 users)':0,
'Standard for growing teams (min 5 users)':24,
'Premium for large teams (min 5 users)':60,
},
RateUnit:'CHF / Users',
};
const Gitlab= {
- style: "AmountRatesCost",
- provider : "Gitlab",
- name:'Gitlab',
- url : [
- {name:'Gitlab Website Pricing',url:'https://about.gitlab.com/pricing/'}
+ Style: "AmountRatesCost",
+ Provider : "Gitlab",
+ Name:'Gitlab',
+ Url : [
+ {Name:'Gitlab Website Pricing',Url:'https://about.gitlab.com/pricing/'}
],
AmountName: "Number of user",
AmountUnit: "User(s)",
AmountMin : 1,
AmountMax : 100,
AmountStep : 1,
AmountFree:0,
AmountFreeCumulative:false,
RateVar : true,
RateName:'Plan',
Rates:{
'Core Self Hosted':0,
'Free Cloud Based' : 0,
'Starter Self Hosted':48,
'Bronze Cloud based':48,
'Premium Self Hosted':228,
'Silver Cloud Based':228
},
RateUnit:'CHF / Users',
};
const Figshare = {
- style : 'CategoryCost',
- provider : "FigShare",
- name:'Figshare',
- url : [
- {name:'Figshare website',url:'https://figshare.com/'},
- {name:'Figshare Pricing',url:'https://www.g2crowd.com/products/figshare/pricing'}
+ Style : 'CategoryCost',
+ Provider : "FigShare",
+ Name:'Figshare',
+ Url : [
+ {Name:'Figshare website',Url:'https://figshare.com/'},
+ {Name:'Figshare Pricing',Url:'https://www.g2crowd.com/products/figshare/pricing'}
],
CatName:'Options',
Cat:{
'Free 1GB':0,
'10GB':96,
'15GB':132,
'20GB':180
},
CatUnit:'CHF',
};
const Dryad = {
- style : 'CategoryAmountRatesCost',
- provider : "Dryad",
- name:'Dyrad',
- url : [
- {name:'Dryad Website Pricing',url:'https://datadryad.org/pages/payment'}
+ Style : 'CategoryAmountRatesCost',
+ Provider : "Dryad",
+ Name:'Dyrad',
+ Url : [
+ {Name:'Dryad Website Pricing',Url:'https://Datadryad.org/pages/payment'}
],
CatName:'Options',
Cat:{
'up to 20GB if DPC covered':0,
'up to 20GB if no DPC covered':120
},
CatUnit:'CHF',
AmountName: "Extra - Storage",
AmountUnit: "GB",
AmountMin : 0,
AmountMax : 100,
AmountStep : 10,
AmountFree:0,
AmountFreeCumulative:false,
RateVar : true,
RateName: 'ELN Storage',
Rates : {
'Extra Storage': 50,
},
RateUnit : "CHF / GB"
};
// Categories definition
// ----------------------------------------------------
// ----------------------------------------------------
const NoneSelected={
- style: 'NoneSelect',
- provider:'None',
- name:'Select a Provider',
- url:'',
+ Style: 'NoneSelect',
+ Provider:'None',
+ Name:'Select a Provider',
+ Url:'',
};
const storage={
- name : 'Active Storage',
- icon : 'storage.png',
- url : [
- {name:'EPFL RDM',url:'https://researchdata.epfl.ch/work-with-data/storage/'}
+ Name : 'Active Storage',
+ Icon : 'storage.png',
+ Url : [
+ {Name:'EPFL RDM',Url:'https://researchData.epfl.ch/work-with-Data/storage/'}
],
- intro :'',
- data :[NoneSelected,
+ Intro :'',
+ Data :[NoneSelected,
NasEpfl,
SwitchEpfl,
GoogleDriveEdu
]
};
const ELN={
- name : 'Electronic LabBook',
- icon : 'eln.png',
- url : [
- {name: 'EPFL RDM',url:'https://researchdata.epfl.ch/work-with-data/active-data-management/'}
+ Name : 'Electronic LabBook',
+ Icon : 'eln.png',
+ Url : [
+ {Name: 'EPFL RDM',Url:'https://researchData.epfl.ch/work-with-Data/active-Data-management/'}
],
- intro :'',
- data :[NoneSelected,
+ Intro :'',
+ Data :[NoneSelected,
SLIMSEpfl,
]
};
-const database={
- name : 'Database',
- icon : 'database.png',
- url : '',
- intro :'',
- data :[NoneSelected,
+const Database={
+ Name : 'Database',
+ Icon : 'Database.png',
+ Url : '',
+ Intro :'',
+ Data :[NoneSelected,
MysqlEpfl,
]
};
const repository={
- name : 'Repository',
- icon : 'repos.png',
- url : [
- {name:'EPFL RDM WebPage',url:'https://researchdata.epfl.ch/publish-preserve/'}
+ Name : 'Repository',
+ Icon : 'repos.png',
+ Url : [
+ {Name:'EPFL RDM WebPage',Url:'https://researchData.epfl.ch/publish-preserve/'}
],
- intro :'',
- data :[
+ Intro :'',
+ Data :[
NoneSelected,
Zenodo,
C4science,
Github,
Bitbucket,
Gitlab,
Figshare,
Dryad,
]
};
// Combine Categories
// ----------------------------------------------------
// ----------------------------------------------------
-const maincat={
- data:[storage,ELN,database,repository]
+const MainData={
+ Currency:'CHF',
+ Data:[storage,ELN,Database,repository]
};