}
case DVR_COMPLETED:
+ if(dvr_get_filesize(de) == -1)
+ return "File Missing";
if(de->de_last_error)
return streaming_code2txt(de->de_last_error);
else
else
return "recording";
case DVR_COMPLETED:
- if(de->de_last_error)
+ if(de->de_last_error || dvr_get_filesize(de) == -1)
return "completedError";
else
return "completed";
/**
*
*/
-off_t
+int64_t
dvr_get_filesize(dvr_entry_t *de)
{
struct stat st;
if(de->de_filename == NULL)
- return 0;
+ return -1;
if(stat(de->de_filename, &st) != 0)
- return 0;
+ return -1;
return st.st_size;
}
dvr_entry_t *de;
int start = 0, end, limit, i;
const char *s;
- off_t fsize;
+ int64_t fsize = 0;
char buf[100];
if((s = http_arg_get(&hc->hc_req_args, "start")) != NULL)
if(de->de_sched_state == DVR_COMPLETED) {
fsize = dvr_get_filesize(de);
- if(fsize > 0) {
- char url[100];
- htsmsg_add_s64(m, "filesize", fsize);
-
- snprintf(url, sizeof(url), "dvrfile/%d", de->de_id);
- htsmsg_add_str(m, "url", url);
+ if (fsize > 0) {
+ char url[100];
+ htsmsg_add_s64(m, "filesize", fsize);
+ snprintf(url, sizeof(url), "dvrfile/%d", de->de_id);
+ htsmsg_add_str(m, "url", url);
}
}
-
htsmsg_add_msg(array, NULL, m);
}
static int is_dvr_entry_finished(dvr_entry_t *entry)
{
dvr_entry_sched_state_t state = entry->de_sched_state;
- return state == DVR_COMPLETED;
+ return state == DVR_COMPLETED && !entry->de_last_error && dvr_get_filesize(entry) != -1;
}
static int is_dvr_entry_upcoming(dvr_entry_t *entry)
static int is_dvr_entry_failed(dvr_entry_t *entry)
{
- dvr_entry_sched_state_t state = entry->de_sched_state;
- return state == DVR_MISSED_TIME || state == DVR_NOSTATE;
+ if (is_dvr_entry_finished(entry))
+ return 0;
+ if (is_dvr_entry_upcoming(entry))
+ return 0;
+ return 1;
}
static int
}
}
+ function renderSize(value)
+ {
+ if (value == null)
+ return '';
+ return parseInt(value / 1000000) + ' MB';
+ }
+
function renderPri(value) {
return tvheadend.dvrprio.getById(value).data.name;
}
id : 'pri',
header : "Priority",
dataIndex : 'pri',
- renderer : renderPri
+ renderer : renderPri,
+ hidden : iconCls != 'clock',
}, {
width : 100,
id : 'start',
- header : "Start",
+ header : iconCls == 'clock' ? "Start" : "Date/Time",
dataIndex : 'start',
renderer : renderDate
}, {
header : "Duration",
dataIndex : 'duration',
renderer : renderDuration
+ }, {
+ width : 100,
+ id : 'filesize',
+ header : "Filesize",
+ dataIndex : 'filesize',
+ renderer : renderSize,
+ hidden : iconCls != 'television'
}, {
width : 250,
id : 'channel',
return value;
}
},
- dataIndex : 'config_name'
+ dataIndex : 'config_name',
+ hidden: iconCls != 'clock'
}, {
width : 200,
id : 'status',
header : "Status",
- dataIndex : 'status'
+ dataIndex : 'status',
+ hidden: iconCls != 'exclamation'
} ]);
function addEntry() {
name : 'status'
}, {
name : 'schedstate'
+ }, {
+ name : 'error'
}, {
name : 'creator'
}, {