Human readable time
This commit is contained in:
parent
c832c30340
commit
158a9028f8
@ -9,6 +9,52 @@ module.exports = function ($timeout) {
|
||||
onDone: "=onDone"
|
||||
},
|
||||
link: function (scope, element, attrs) {
|
||||
// Format conversion functions
|
||||
scope.msToTimeString = function(ms) {
|
||||
if (ms === null || ms === undefined) return '';
|
||||
var totalSeconds = Math.floor(ms / 1000);
|
||||
var minutes = Math.floor(totalSeconds / 60);
|
||||
var seconds = totalSeconds % 60;
|
||||
return minutes + ':' + (seconds < 10 ? '0' + seconds : seconds);
|
||||
};
|
||||
|
||||
scope.timeStringToMs = function(timeString) {
|
||||
if (!timeString) return 0;
|
||||
var parts = timeString.split(':');
|
||||
if (parts.length !== 2) return 0;
|
||||
|
||||
var minutes = parseInt(parts[0], 10);
|
||||
var seconds = parseInt(parts[1], 10);
|
||||
|
||||
if (isNaN(minutes) || isNaN(seconds)) return 0;
|
||||
return (minutes * 60 + seconds) * 1000;
|
||||
};
|
||||
|
||||
// Initialize time string fields
|
||||
scope.seekPositionTime = '';
|
||||
scope.endPositionTime = '';
|
||||
|
||||
// Watch for program changes to update time strings
|
||||
scope.$watch('program', function(newVal) {
|
||||
if (newVal) {
|
||||
scope.seekPositionTime = scope.msToTimeString(newVal.seekPosition);
|
||||
scope.endPositionTime = scope.msToTimeString(newVal.endPosition);
|
||||
}
|
||||
});
|
||||
|
||||
// Update milliseconds when time strings change
|
||||
scope.$watch('seekPositionTime', function(newVal) {
|
||||
if (scope.program && newVal) {
|
||||
scope.program.seekPosition = scope.timeStringToMs(newVal);
|
||||
}
|
||||
});
|
||||
|
||||
scope.$watch('endPositionTime', function(newVal) {
|
||||
if (scope.program && newVal) {
|
||||
scope.program.endPosition = scope.timeStringToMs(newVal);
|
||||
}
|
||||
});
|
||||
|
||||
scope.finished = (prog) => {
|
||||
if (prog.title === "")
|
||||
scope.error = { title: 'You must set a program title.' }
|
||||
|
||||
@ -22,12 +22,22 @@
|
||||
<input class="form-control form-control-sm" type="text" ng-model="program.subtitle"></input>
|
||||
<label>Summary</label>
|
||||
<textarea class="form-control form-control-sm" ng-model="program.summary"></textarea>
|
||||
<label>Start Position (ms)</label>
|
||||
<input class="form-control form-control-sm" type="number" ng-model="program.seekPosition" min="0" placeholder="0 (start of file)">
|
||||
<label>End Position (ms, optional)
|
||||
<label>Start Position Offset (optional)</label>
|
||||
<div class="form-row mb-3">
|
||||
<div class="col">
|
||||
<input class="form-control form-control-sm" type="text" ng-model="seekPositionTime" placeholder="Min:Sec (leave blank for start of file)">
|
||||
<small class="form-text text-muted">Format: minutes:seconds (e.g. 5:30)</small>
|
||||
</div>
|
||||
</div>
|
||||
<label>End Position Offset (optional)
|
||||
<span class="text-danger pull-right">{{error.endPosition}}</span>
|
||||
</label>
|
||||
<input class="form-control form-control-sm" type="number" ng-model="program.endPosition" min="0" placeholder="Leave blank for end of file">
|
||||
<div class="form-row mb-3">
|
||||
<div class="col">
|
||||
<input class="form-control form-control-sm" type="text" ng-model="endPositionTime" placeholder="Min:Sec (leave blank for end of file)">
|
||||
<small class="form-text text-muted">Format: minutes:seconds (e.g. 10:45)</small>
|
||||
</div>
|
||||
</div>
|
||||
<label>Rating</label>
|
||||
<input class="form-control form-control-sm" type="text" ng-model="program.rating"></input>
|
||||
<label>Icon</label>
|
||||
@ -46,12 +56,22 @@
|
||||
<input class="form-control form-control-sm" type="text" ng-model="program.subtitle"></input>
|
||||
<label>Summary</label>
|
||||
<textarea class="form-control form-control-sm" ng-model="program.summary"></textarea>
|
||||
<label>Start Position (ms)</label>
|
||||
<input class="form-control form-control-sm" type="number" ng-model="program.seekPosition" min="0" placeholder="0 (start of file)">
|
||||
<label>End Position (ms, optional)
|
||||
<label>Start Position Offset (optional)</label>
|
||||
<div class="form-row mb-3">
|
||||
<div class="col">
|
||||
<input class="form-control form-control-sm" type="text" ng-model="seekPositionTime" placeholder="Min:Sec (leave blank for start of file)">
|
||||
<small class="form-text text-muted">Format: minutes:seconds (e.g. 5:30)</small>
|
||||
</div>
|
||||
</div>
|
||||
<label>End Position Offset (optional)
|
||||
<span class="text-danger pull-right">{{error.endPosition}}</span>
|
||||
</label>
|
||||
<input class="form-control form-control-sm" type="number" ng-model="program.endPosition" min="0" placeholder="Leave blank for end of file">
|
||||
<div class="form-row mb-3">
|
||||
<div class="col">
|
||||
<input class="form-control form-control-sm" type="text" ng-model="endPositionTime" placeholder="Min:Sec (leave blank for end of file)">
|
||||
<small class="form-text text-muted">Format: minutes:seconds (e.g. 10:45)</small>
|
||||
</div>
|
||||
</div>
|
||||
<label>Rating</label>
|
||||
<input class="form-control form-control-sm" type="text" ng-model="program.rating"></input>
|
||||
<label>Icon</label>
|
||||
@ -80,12 +100,22 @@
|
||||
<input class="form-control form-control-sm" type="number" ng-model="program.episode"></input>
|
||||
<label>Summary</label>
|
||||
<textarea class="form-control form-control-sm" ng-model="program.summary"></textarea>
|
||||
<label>Start Position (ms)</label>
|
||||
<input class="form-control form-control-sm" type="number" ng-model="program.seekPosition" min="0" placeholder="0 (start of file)">
|
||||
<label>End Position (ms, optional)
|
||||
<label>Start Position Offset (optional)</label>
|
||||
<div class="form-row mb-3">
|
||||
<div class="col">
|
||||
<input class="form-control form-control-sm" type="text" ng-model="seekPositionTime" placeholder="Min:Sec (leave blank for start of file)">
|
||||
<small class="form-text text-muted">Format: minutes:seconds (e.g. 5:30)</small>
|
||||
</div>
|
||||
</div>
|
||||
<label>End Position Offset (optional)
|
||||
<span class="text-danger pull-right">{{error.endPosition}}</span>
|
||||
</label>
|
||||
<input class="form-control form-control-sm" type="number" ng-model="program.endPosition" min="0" placeholder="Leave blank for end of file">
|
||||
<div class="form-row mb-3">
|
||||
<div class="col">
|
||||
<input class="form-control form-control-sm" type="text" ng-model="endPositionTime" placeholder="Min:Sec (leave blank for end of file)">
|
||||
<small class="form-text text-muted">Format: minutes:seconds (e.g. 10:45)</small>
|
||||
</div>
|
||||
</div>
|
||||
<label>Rating</label>
|
||||
<input class="form-control form-control-sm" type="text" ng-model="program.rating"></input>
|
||||
<label>Icon</label>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user