src/js/widgets/sliceWidget.js
author hamidouk
Fri, 30 Dec 2011 12:38:53 +0100
branchpopcorn-port
changeset 550 ae0f2ec05ed7
parent 537 61fd3968ab06
child 551 2f883ad196b2
permissions -rw-r--r--
fixed long-standing tooltip positioning bug.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
537
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
     1
/** A widget to create a new segment */
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
     2
IriSP.SliceWidget = function(Popcorn, config, Serializer) {
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
     3
  IriSP.Widget.call(this, Popcorn, config, Serializer);
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
     4
  
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
     5
};
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
     6
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
     7
IriSP.SliceWidget.prototype = new IriSP.Widget();
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
     8
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
     9
IriSP.SliceWidget.prototype.draw = function() {
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    10
  var templ = Mustache.to_html(IriSP.sliceWidget_template);
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    11
  this.selector.append(templ);
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    12
  
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    13
  this.sliceZone = this.selector.find(".Ldt-sliceZone");
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    14
  
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    15
  /* global variables used to keep the position and width
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    16
     of the zone.
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    17
  */  
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    18
  this.zoneLeft = 0;
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    19
  this.zoneWidth = 0;
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    20
  
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    21
  this.leftHandle = this.selector.find(".Ldt-sliceLeftHandle");
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    22
  this.rightHandle = this.selector.find(".Ldt-sliceRightHandle");
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    23
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    24
  this.leftHandle.draggable({axis: "x",
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    25
  drag: IriSP.wrap(this, this.leftHandleDragged),  
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    26
  containment: "parent"
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    27
  });
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    28
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    29
  this.rightHandle.draggable({axis: "x",
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    30
  drag: IriSP.wrap(this, this.rightHandleDragged),    
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    31
  containment: "parent"
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    32
  });
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    33
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    34
  
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    35
  this._Popcorn.listen("IriSP.SliceWidget.position", 
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    36
                        IriSP.wrap(this, this.positionSliceHandler));
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    37
  this._Popcorn.trigger("IriSP.SliceWidget.position", [57, 24]);
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    38
};
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    39
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    40
IriSP.SliceWidget.prototype.positionSliceHandler = function(params) {
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    41
  left = params[0];
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    42
  width = params[1];
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    43
  
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    44
  this.zoneLeft = left;
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    45
  this.zoneWidth = width;
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    46
  this.sliceZone.css("left", left + "px");
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    47
  this.sliceZone.css("width", width + "px");
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    48
  this.leftHandle.css("left", (left - 7) + "px");
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    49
  this.rightHandle.css("left", left + width + "px");
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    50
};
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    51
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    52
/*
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    53
IriSP.SliceWidget.prototype.leftHandleDragged = function(event, ui) {
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    54
  var currentX = this.leftHandle.position()["left"];
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    55
  
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    56
  var parentOffset = this.selector.offset();  
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    57
  var relX = event.pageX - parentOffset.left;
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    58
  
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    59
  
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    60
  var increment = this.zoneLeft - relX;
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    61
  console.log(increment);
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    62
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    63
  this.sliceZone.css("width", this.zoneWidth + increment);
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    64
  this.sliceZone.css("left", relX + "px");
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    65
  this.zoneLeft = relX;
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    66
  this.zoneWidth += increment;
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    67
};
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    68
*/
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    69
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    70
/** handle a dragging of the left handle */
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    71
IriSP.SliceWidget.prototype.leftHandleDragged = function(event, ui) {
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    72
  var currentX = this.leftHandle.position()["left"];
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    73
    
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    74
  var increment = this.zoneLeft - (currentX + 7);
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    75
  
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    76
  this.zoneWidth += increment;
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    77
  this.zoneLeft = currentX + 7;
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    78
  this.sliceZone.css("width", this.zoneWidth);
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    79
  this.sliceZone.css("left", this.zoneLeft + "px");
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    80
  this.broadcastChanges();
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    81
};
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    82
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    83
/** handle a dragging of the right handle */
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    84
IriSP.SliceWidget.prototype.rightHandleDragged = function(event, ui) { 
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    85
  var currentX = this.rightHandle.position()["left"];
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    86
    
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    87
  var increment = currentX - (this.zoneLeft + this.zoneWidth);  
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    88
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    89
  this.zoneWidth += increment;  
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    90
  this.sliceZone.css("width", this.zoneWidth);
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    91
  this.broadcastChanges();
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    92
};
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    93
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    94
/** tell to the world that the coordinates of the slice have
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    95
    changed 
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    96
*/
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    97
IriSP.SliceWidget.prototype.broadcastChanges = function() {
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    98
  var leftPercent = (this.zoneLeft / this.selector.width()) * 100;
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
    99
  var zonePercent = (this.zoneWidth / this.selector.width()) * 100;
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
   100
  console.log(leftPercent, zonePercent);
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
   101
  
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
   102
  this._Popcorn.trigger("IriSP.SliceWidget.zoneChange", [leftPercent, zonePercent]);
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
   103
  
61fd3968ab06 added a widget to select a slice.
hamidouk
parents:
diff changeset
   104
};