svghmi/widget_slider.ysl2
branchsvghmi
changeset 3020 895bbeced72d
parent 3018 22b969b409b0
child 3021 49799de67540
equal deleted inserted replaced
3019:497aac6522a3 3020:895bbeced72d
     6         frequency = 5;
     6         frequency = 5;
     7         range = undefined;
     7         range = undefined;
     8         fi = undefined;
     8         fi = undefined;
     9         drag = false;
     9         drag = false;
    10         enTimer = false;
    10         enTimer = false;
       
    11         svg_dist = 0
    11 
    12 
    12         dispatch(value) {
    13         dispatch(value) {
    13             if(!this.drag){
    14             if(this.value_elt)
    14                 if(this.value_elt)
    15                 this.value_elt.textContent = String(value);
    15                     this.value_elt.textContent = String(value);
       
    16 
    16 
    17                 this.handle_position(value);
    17             this.handle_position(value);
    18             }
       
    19         }
    18         }
    20 
    19 
    21         handle_position(value){
    20         handle_position(value){
    22             let [min,max,start,totallength] = this.range;
    21             let [min,max,start,totallength] = this.range;
    23             let length = Math.max(0,Math.min(totallength,(Number(value)-min)*totallength/(max-min)));
    22             let length = Math.max(0,Math.min(totallength,(Number(value)-min)*totallength/(max-min)));
    30                 this.drag = false;
    29                 this.drag = false;
    31             }
    30             }
    32         }
    31         }
    33 
    32 
    34         update_position(evt){
    33         update_position(evt){
    35             if(this.drag && this.enTimer){
    34             if(this.drag){
    36                 var html_dist = 0;
    35                 var html_dist = 0;
    37                 var svg_dist = 0;
       
    38 
    36 
    39                 //calculate size of widget in html
    37                 //calculate size of widget in html
    40                 var range_borders = this.range_elt.getBoundingClientRect();
    38                 var range_borders = this.range_elt.getBoundingClientRect();
    41                 var range_length = Math.sqrt( range_borders.height*range_borders.height + range_borders.width*range_borders.width );
    39                 var range_length = Math.sqrt( range_borders.height*range_borders.height + range_borders.width*range_borders.width );
    42                 var [minX,minY,maxX,maxY] = [range_borders.left,range_borders.bottom,range_borders.right,range_borders.top];
    40                 var [minX,minY,maxX,maxY] = [range_borders.left,range_borders.bottom,range_borders.right,range_borders.top];
    75                     }
    73                     }
    76                     else if (html_dist < 0){
    74                     else if (html_dist < 0){
    77                         html_dist = 0;
    75                         html_dist = 0;
    78                     }
    76                     }
    79                 }
    77                 }
       
    78 
       
    79                 this.svg_dist=(html_dist/range_length)*this.range[1];
       
    80 
    80                 //redraw handle
    81                 //redraw handle
    81                 this.handle_position(svg_dist=(html_dist/range_length)*this.range[1]);
    82                 //this.handle_position(svg_dist=(html_dist/range_length)*this.range[1]);
    82                 this.value_elt.textContent = String(Math.ceil(svg_dist));
    83                 //this.value_elt.textContent = String(Math.ceil(svg_dist));
    83                 this.apply_hmi_value(0, Math.ceil(svg_dist));
    84 
    84                 //reset timer
    85                 if(this.enTimer){
    85                 this.enTimer = false;
    86                     this.apply_hmi_value(0, Math.ceil(this.svg_dist));
    86                 setTimeout("{hmi_widgets['"+this.element_id+"'].enTimer = true;}", 100);
    87 
       
    88                     // TODO : update ghost cursor and call this.request_animate()
       
    89 
       
    90                     //reset timer
       
    91                     this.enTimer = false;
       
    92                     setTimeout("{hmi_widgets['"+this.element_id+"'].enTimer = true;}", 100);
       
    93                 }
    87             }
    94             }
    88 
       
    89         }
    95         }
    90 
    96 
    91         on_select(evt){
    97         on_select(evt){
    92             this.drag = true;
    98             this.drag = true;
    93             this.enTimer = true;
    99             this.enTimer = true;