(name, value, probability)
| 765 | } |
| 766 | |
| 767 | startExperiment (name, value, probability) { |
| 768 | let left |
| 769 | const experiments = (left = this.get('experiments')) != null ? left : [] |
| 770 | if (_.find(experiments, { name })) { return console.error(`Already started experiment ${name}`) } |
| 771 | if (!/^[a-z][\-a-z0-9]*$/.test(name)) { return console.error(`Invalid experiment name: ${name}`) } // eslint-disable-line no-useless-escape |
| 772 | if (value == null) { return console.error('No experiment value provided') } |
| 773 | if ((probability != null) && !(probability >= 0 && probability <= 1)) { return console.error(`Probability should be between 0-1 if set - ${name} - ${value} - ${probability}`) } |
| 774 | $.ajax({ |
| 775 | method: 'POST', |
| 776 | url: `/db/user/${this.id}/start-experiment`, |
| 777 | data: { name, value, probability }, |
| 778 | success: attributes => { |
| 779 | return this.set(attributes) |
| 780 | }, |
| 781 | error (jqxhr) { |
| 782 | return console.error(`Couldn't start experiment ${name}:`, jqxhr.responseJSON) |
| 783 | }, |
| 784 | }) |
| 785 | const experiment = { name, value, startDate: new Date() } // Server date/save will be authoritative |
| 786 | if (probability != null) { experiment.probability = probability } |
| 787 | experiments.push(experiment) |
| 788 | this.set('experiments', experiments) |
| 789 | return experiment |
| 790 | } |
| 791 | |
| 792 | updateExperimentValue (experimentName, newValue = null) { |
| 793 | let left |
no test coverage detected