anchor.diff:      var schema = !{JSON.stringify(project.schema)};
   
       $(function() {
  +      // Check numeric options
         $("[data-opt]").on("change", function() {
           // Elements
           var $el = $(this);
  
positive.code:         // Process form
          var formObj = {};
          // Loop over form simply (does not work on nested data)
          $("#new-optimisation").find("[id]:input").not(":submit").each(function(ind, el) {
            var $el = $(el);
            var $formGroup = $el.closest(".form-group");
            var name = $el.attr("name");
            var val = $el.val();
            var type = $formGroup.data("type");
  
            // Get all elements
            var vals = [];
            val.split(",").forEach(function(a) {
              if (type === "int" || type === "float") {
                a = parseFloat(a);
              } else if (type === "bool") {
                a = (a === "true");
              }
              vals.push(a);
            });
            formObj[name] = vals; // Set key and value
          });
  
negative.code:         $formGroup.addClass("has-success");
        });
  
        // Check optimiser options
        $("[name='_evaluations'], [name='_retry']").on("change", function() {
          var $el = $(this);
          var $formGroup = $el.closest(".form-group");
  