具有插件chartjs-plugin-dragdata的chartjs我可以设置修复下拉值吗

时间:2019-10-02 13:11:02

标签: javascript jquery chart.js

我有以下问题: 我将dragdata插件用于chartjs。现在,我要检查该下降是否是允许的值;当不跳到最接近的允许值时。有人知道我该怎么做吗?

这些是我图表的选择:

var optionsDesktop = {
  responsive: false,
  dragData: true,
  dragDataRound: 0,
  onDragStart: function(e, datasetIndex, index, value) {
    console.log(e)
  },
  onDrag: function(e, datasetIndex, index, value) {
    console.log(datasetIndex, index, value)
    if (datasetIndex === 0) {
      switch (index) {
        case 0:
          console.log('hier ist 0');
          if ((value === 33) || (value === 67) || (value === 100)) {
            e.preventDefault();
          } else {
            e.preventDefault(none);
            console.log("now allowed");
          }
          break;
        case 1:
          console.log('hier ist 1');
          break;
        case 2:
          console.log('hier ist 2');
          break;
        case 3:
          console.log('hier ist 3');
          break;
        case 4:
          console.log('hier ist 4');
          break;
        case 5:
          console.log('hier ist 5');
          break;
        case 6:
          console.log('hier ist 6');
          break;
      }
    }
  },
  onDragEnd: function(e, datasetIndex, index, value) {},
}

1 个答案:

答案 0 :(得分:0)

我使用此解决方案,在此项目和条件下效果很好

  onDragEnd: function(e, datasetIndex, index, value) {
    if (datasetIndex === 0) {
      switch (index) {
        //case for 1 chart axis
        case 0:
          if (value >= 0 && value <= 33) {
            if ($('#value-level3').is(':checked')) {
            } else {
              $('#value-level3').prop('checked', 'checked');
              var changeAnswer = $('#value-level3')
                .next('label')
                .text();
              answerData.splice(0, 1, changeAnswer);
            }
            chartData.splice(0, 1, '33');
            reloadChart();
          } else if (value >= 34 && value <= 67) {
            if ($('#value-level2').is(':checked')) {
            } else {
              $('#value-level2').prop('checked', 'checked');
              var changeAnswer = $('#value-level2')
                .next('label')
                .text();
              answerData.splice(0, 1, changeAnswer);
            }
            chartData.splice(0, 1, '67');
            reloadChart();
          } else {
            if ($('#value-level1').is(':checked')) {
            } else {
              $('#value-level1').prop('checked', 'checked');
              var changeAnswer = $('#value-level1')
                .next('label')
                .text();
              answerData.splice(0, 1, changeAnswer);
            }
            chartData.splice(0, 1, '100');
            reloadChart();
          }
          break;
        //case for 2 chart axis
        case 1:
          if (value >= 0 && value <= 20) {
            if ($('#value-level5-2').is(':checked')) {
            } else {
              $('#value-level5-2').prop('checked', 'checked');
              var changeAnswer = $('#value-level5-2')
                .next('label')
                .text();
              answerData.splice(1, 1, changeAnswer);
            }
            chartData.splice(1, 1, '20');
            reloadChart();
          } else if (value >= 21 && value <= 40) {
            if ($('#value-level4-2').is(':checked')) {
            } else {
              $('#value-level4-2').prop('checked', 'checked');
              var changeAnswer = $('#value-level4-2')
                .next('label')
                .text();
              answerData.splice(1, 1, changeAnswer);
            }
            chartData.splice(1, 1, '40');
            reloadChart();
          } else if (value >= 41 && value <= 60) {
            if ($('#value-level3-2').is(':checked')) {
            } else {
              $('#value-level3-2').prop('checked', 'checked');
              var changeAnswer = $('#value-level3-2')
                .next('label')
                .text();
              answerData.splice(1, 1, changeAnswer);
            }
            chartData.splice(1, 1, '60');
            reloadChart();
          } else if (value >= 61 && value <= 80) {
            if ($('#value-level2-2').is(':checked')) {
            } else {
              $('#value-level2-2').prop('checked', 'checked');
              var changeAnswer = $('#value-level2-2')
                .next('label')
                .text();
              answerData.splice(1, 1, changeAnswer);
            }
            chartData.splice(1, 1, '80');
            reloadChart();
          } else {
            if ($('#value-level1-2').is(':checked')) {
            } else {
              $('#value-level1-2').prop('checked', 'checked');
              var changeAnswer = $('#value-level1-2')
                .next('label')
                .text();
              answerData.splice(1, 1, changeAnswer);
            }
            chartData.splice(1, 1, '100');
            reloadChart();
          }
          break;
        //case for 3 chart axis
        case 2:
          if (value >= 0 && value <= 25) {
            if ($('#value-level4-3').is(':checked')) {
            } else {
              $('#value-level4-3').prop('checked', 'checked');
              var changeAnswer = $('#value-level4-3')
                .next('label')
                .text();
              answerData.splice(2, 1, changeAnswer);
            }
            chartData.splice(2, 1, '25');
            reloadChart();
          } else if (value >= 25 && value <= 50) {
            if ($('#value-level3-3').is(':checked')) {
            } else {
              $('#value-level3-3').prop('checked', 'checked');
              var changeAnswer = $('#value-level3-3')
                .next('label')
                .text();
              answerData.splice(2, 1, changeAnswer);
            }
            chartData.splice(2, 1, '50');
            reloadChart();
          } else if (value >= 51 && value <= 75) {
            if ($('#value-level2-3').is(':checked')) {
            } else {
              $('#value-level2-3').prop('checked', 'checked');
              var changeAnswer = $('#value-level2-3')
                .next('label')
                .text();
              answerData.splice(2, 1, changeAnswer);
            }
            chartData.splice(2, 1, '75');
            reloadChart();
          } else {
            if ($('#value-level1-3').is(':checked')) {
            } else {
              $('#value-level1-3').prop('checked', 'checked');
              var changeAnswer = $('#value-level1-3')
                .next('label')
                .text();
              answerData.splice(2, 1, changeAnswer);
            }
            chartData.splice(2, 1, '100');
            reloadChart();
          }
          break;
        //case for 4 chart axis
        case 3:
          if (value >= 0 && value <= 33) {
            if ($('#value-level3-4').is(':checked')) {
            } else {
              $('#value-level3-4').prop('checked', 'checked');
              var changeAnswer = $('#value-level3-4')
                .next('label')
                .text();
              answerData.splice(3, 1, changeAnswer);
            }
            chartData.splice(3, 1, '33');
            reloadChart();
          } else if (value >= 34 && value <= 67) {
            if ($('#value-level2-4').is(':checked')) {
            } else {
              $('#value-level2-4').prop('checked', 'checked');
              var changeAnswer = $('#value-level2-4')
                .next('label')
                .text();
              answerData.splice(3, 1, changeAnswer);
            }
            chartData.splice(3, 1, '67');
            reloadChart();
          } else {
            if ($('#value-level1-4').is(':checked')) {
            } else {
              $('#value-level1-4').prop('checked', 'checked');
              var changeAnswer = $('#value-level1-4')
                .next('label')
                .text();
              answerData.splice(3, 1, changeAnswer);
            }
            chartData.splice(3, 1, '100');
            reloadChart();
          }
          break;
        //case for 5 chart axis
        case 4:
          if (value >= 0 && value <= 25) {
            if ($('#value-level4-5').is(':checked')) {
            } else {
              $('#value-level4-5').prop('checked', 'checked');
              var changeAnswer = $('#value-level4-5')
                .next('label')
                .text();
              answerData.splice(4, 1, changeAnswer);
            }
            chartData.splice(4, 1, '25');
            reloadChart();
          } else if (value >= 25 && value <= 50) {
            if ($('#value-level3-5').is(':checked')) {
            } else {
              $('#value-level3-5').prop('checked', 'checked');
              var changeAnswer = $('#value-level3-5')
                .next('label')
                .text();
              answerData.splice(4, 1, changeAnswer);
            }
            chartData.splice(4, 1, '50');
            reloadChart();
          } else if (value >= 51 && value <= 75) {
            if ($('#value-level2-5').is(':checked')) {
            } else {
              $('#value-level2-5').prop('checked', 'checked');
              var changeAnswer = $('#value-level2-5')
                .next('label')
                .text();
              answerData.splice(4, 1, changeAnswer);
            }
            chartData.splice(4, 1, '75');
            reloadChart();
          } else {
            if ($('#value-level1-5').is(':checked')) {
            } else {
              $('#value-level1-5').prop('checked', 'checked');
              var changeAnswer = $('#value-level1-5')
                .next('label')
                .text();
              answerData.splice(4, 1, changeAnswer);
            }
            chartData.splice(4, 1, '100');
            reloadChart();
          }
          break;
        //case for 6 chart axis
        case 5:
          if (value >= 0 && value <= 25) {
            if ($('#value-level4-6').is(':checked')) {
            } else {
              $('#value-level4-6').prop('checked', 'checked');
              var changeAnswer = $('#value-level4-6')
                .next('label')
                .text();
              answerData.splice(5, 1, changeAnswer);
            }
            chartData.splice(5, 1, '25');
            reloadChart();
          } else if (value >= 25 && value <= 50) {
            if ($('#value-level3-6').is(':checked')) {
            } else {
              $('#value-level3-6').prop('checked', 'checked');
              var changeAnswer = $('#value-level3-6')
                .next('label')
                .text();
              answerData.splice(5, 1, changeAnswer);
            }
            chartData.splice(5, 1, '50');
            reloadChart();
          } else if (value >= 51 && value <= 75) {
            if ($('#value-level2-6').is(':checked')) {
            } else {
              $('#value-level2-6').prop('checked', 'checked');
              var changeAnswer = $('#value-level2-6')
                .next('label')
                .text();
              answerData.splice(5, 1, changeAnswer);
            }
            chartData.splice(5, 1, '75');
            reloadChart();
          } else {
            if ($('#value-level1-6').is(':checked')) {
            } else {
              $('#value-level1-6').prop('checked', 'checked');
              var changeAnswer = $('#value-level1-6')
                .next('label')
                .text();
              answerData.splice(5, 1, changeAnswer);
            }
            chartData.splice(5, 1, '100');
            reloadChart();
          }
          break;
        //case for 7 chart axis
        case 6:
          if (value >= 0 && value <= 12) {
            if ($('#value-level8-7').is(':checked')) {
            } else {
              $('#value-level8-7').prop('checked', 'checked');
              var changeAnswer = $('#value-level8-7')
                .next('label')
                .text();
              answerData.splice(6, 1, changeAnswer);
            }
            chartData.splice(6, 1, '12');
            reloadChart();
          } else if (value >= 13 && value <= 25) {
            if ($('#value-level7-7').is(':checked')) {
            } else {
              $('#value-level7-7').prop('checked', 'checked');
              var changeAnswer = $('#value-level7-7')
                .next('label')
                .text();
              answerData.splice(6, 1, changeAnswer);
            }
            chartData.splice(6, 1, '25');
            reloadChart();
          } else if (value >= 26 && value <= 37) {
            if ($('#value-level6-7').is(':checked')) {
            } else {
              $('#value-level6-7').prop('checked', 'checked');
              var changeAnswer = $('#value-level6-7')
                .next('label')
                .text();
              answerData.splice(6, 1, changeAnswer);
            }
            chartData.splice(6, 1, '37');
            reloadChart();
          } else if (value >= 38 && value <= 50) {
            if ($('#value-level5-7').is(':checked')) {
            } else {
              $('#value-level5-7').prop('checked', 'checked');
              var changeAnswer = $('#value-level5-7')
                .next('label')
                .text();
              answerData.splice(6, 1, changeAnswer);
            }
            chartData.splice(6, 1, '50');
            reloadChart();
          } else if (value >= 51 && value <= 62) {
            if ($('#value-level4-7').is(':checked')) {
            } else {
              $('#value-level4-7').prop('checked', 'checked');
              var changeAnswer = $('#value-level4-7')
                .next('label')
                .text();
              answerData.splice(6, 1, changeAnswer);
            }
            chartData.splice(6, 1, '62');
            reloadChart();
          } else if (value >= 63 && value <= 75) {
            if ($('#value-level3-7').is(':checked')) {
            } else {
              $('#value-level3-7').prop('checked', 'checked');
              var changeAnswer = $('#value-level3-7')
                .next('label')
                .text();
              answerData.splice(6, 1, changeAnswer);
            }
            chartData.splice(6, 1, '75');
            reloadChart();
          } else if (value >= 76 && value <= 88) {
            if ($('#value-level2-7').is(':checked')) {
            } else {
              $('#value-level2-7').prop('checked', 'checked');
              var changeAnswer = $('#value-level2-7')
                .next('label')
                .text();
              answerData.splice(6, 1, changeAnswer);
            }
            chartData.splice(6, 1, '88');
            reloadChart();
          } else {
            if ($('#value-level1-7').is(':checked')) {
            } else {
              $('#value-level1-7').prop('checked', 'checked');
              var changeAnswer = $('#value-level1-7')
                .next('label')
                .text();
              answerData.splice(6, 1, changeAnswer);
            }
            chartData.splice(6, 1, '100');
            reloadChart();
          }
          break;
      }
    }
  },