hypeDocument.goToTimeIndexInTimelineNamed
Jump to timeIndex as seen in the Hype frontend.
/**
* hypeDocument.goToTimeIndexInTimelineNamed 1.0
* @param {String, Object, Number} timeIndex as seen in Hype GUI
* @param {String} time line to adress
* @param {Boolean} convert overbound values
*/
hypeDocument.goToTimeIndexInTimelineNamed = function (timeIndex, timelineName, convert) {
this.goToTimeInTimelineNamed( this.timeIndexToSeconds(timeIndex, convert), timelineName);
}
/**
* hypeDocument.timeIndexToSeconds 1.2
* @param {String, Object, Number} timeIndex in various formats
* @param {Boolean} convert overbound values
*/
hypeDocument.timeIndexToSeconds = function (tidx, convert) {
var min=0, sec=0, frm=0, FPS=30;
switch (typeof(tidx)) {
case 'object':
min = tidx.minutes ? tidx.minutes : 0;
sec = tidx.seconds ? tidx.seconds : 0;
frm = tidx.frames ? tidx.frames : 0;
FPS = tidx.FPS ? tidx.FPS : FPS;
break;
case 'number':
sec = Math.floor(tidx);
frm = Math.floor((tidx-sec)*100);
break;
case 'string':
var temp = tidx.split(':');
min = temp.length > 1 ? temp[0] : 0;
temp = (temp.length > 1) ? temp[1] : temp[0];
temp = temp.split(temp.indexOf('.') > -1 ? '.' : ',');
sec = temp[0] ? temp[0] : 0;
frm = temp.length > 1 ? temp[1] : 0;
break;
}
sec = (convert) ? sec : sec %60;
min = (convert) ? min : min %60;
frm = (convert) ? frm : frm %FPS;
return min*60+sec+frm/FPS;
}
Usage of hypeDocument.timeIndexToSeconds:
Let’s assume we want to jump to 3 seconds and 14 frames
// EU notation
hypeDocument.goToTimeIndexInTimelineNamed ('03,14', 'Main Timeline');
// US notation
hypeDocument.goToTimeIndexInTimelineNamed ('03.14', 'Main Timeline');
Let’s assume we want to jump to frame number 75 on test timeline (Object-Interface)
hypeDocument.goToTimeIndexInTimelineNamed ({frame:75}, 'test', true);
See possible formats for the timeIndex-String in the timeIndexToSeconds usage.
Usage of hypeDocument.timeIndexToSeconds:
// New FPS option in Object-Interface since 1.2
// Converting 120 frames at 60 FPS (works with other examples as well)
console.log(hypeDocument.timeIndexToSeconds( {frames:120, FPS:60 } , true ));
// New object interface since 1.1
console.log(hypeDocument.timeIndexToSeconds( {minutes:1, seconds:10} ));
console.log(hypeDocument.timeIndexToSeconds( {minutes:1} ));
// with conversion 45 frame equals 1.5 seconds
console.log(hypeDocument.timeIndexToSeconds( {frames:45 } , true ));
// Number interface since 1.1 (limited to sec.frames)
console.log(hypeDocument.timeIndexToSeconds( 4.15 ));
// New String interface since 1.1 (valid tests with US dot notation)
console.log(hypeDocument.timeIndexToSeconds('01:40.15'));
console.log(hypeDocument.timeIndexToSeconds('30.00'));
console.log(hypeDocument.timeIndexToSeconds('02:43.29'));
// String interface since 1.0 (valid tests)
console.log(hypeDocument.timeIndexToSeconds('01:40,15'));
console.log(hypeDocument.timeIndexToSeconds('30,00'));
console.log(hypeDocument.timeIndexToSeconds('02:43,29'));
// wrong range tests (fixed with modulor %60, %30
console.log(hypeDocument.timeIndexToSeconds('00:61,40'));
// partial format (no minutes)
console.log(hypeDocument.timeIndexToSeconds('25,02'));
// partial format (no frame)
console.log(hypeDocument.timeIndexToSeconds('1:15'));
// partial format (only one int)
console.log(hypeDocument.timeIndexToSeconds('15'));
// conversion (45 frames)
console.log(hypeDocument.timeIndexToSeconds(',45', true));
// conversion (120 minutes)
console.log(hypeDocument.timeIndexToSeconds('120:', true));
Credits:
This extension has been initialized by @MarkHunte
The version bump came about through input from @DBear
Update:
1.0 inital relase from MarkHunte and MaxZieb
1.1 fixed .frames (US) and ,frames (EU) + Number/Object interface
1.2 timeIndexToSeconds now supports higher FPS (for example 60)