diff --git a/lib/NGCP/Panel/Controller/TimeSet.pm b/lib/NGCP/Panel/Controller/TimeSet.pm index a9069bde9f..a9cc00e8bb 100644 --- a/lib/NGCP/Panel/Controller/TimeSet.pm +++ b/lib/NGCP/Panel/Controller/TimeSet.pm @@ -262,8 +262,10 @@ sub event_list :Chained('base') :PathPart('event') :CaptureArgs(0) { $c->stash->{event_dt_columns} = NGCP::Panel::Utils::Datatables::set_columns($c, [ { name => 'id', search => 1, title => $c->loc('#') }, { name => 'time_set_id', 'visible' => 0, 'title' => 'Time Set #' }, + { name => 'start', 'visible' => 0, search => 0, 'title' => 'Start' }, + { name => 'end', 'visible' => 0, search => 0, 'title' => 'End' }, { name => 'comment', search => 1, title => $c->loc('Comment') }, - { name => 'periods_ical.rrule_ical', search => 0, accessor => "ical", title => $c->loc('Rules')},#, literal_sql => '""' + { name => 'periods_ical.rrule_ical', search => 0, accessor => "ical", title => $c->loc('Rules'), dont_skip_empty_data => 1},#, literal_sql => '""' ]); $c->stash(template => 'timeset/event_list.tt'); diff --git a/share/templates/helpers/datatables.tt b/share/templates/helpers/datatables.tt index 167ea29a02..fb4fa9613c 100644 --- a/share/templates/helpers/datatables.tt +++ b/share/templates/helpers/datatables.tt @@ -4,6 +4,8 @@ helper.column_fields = []; helper.column_sortable_map = {}; helper.custom_renderers = helper.custom_renderers ? helper.custom_renderers : {}; + helper.options = {}; + helper.columns_hidden = {}; helper.strict_search = 0; FOR col IN helper.dt_columns; IF !col.accessor; @@ -17,12 +19,16 @@ helper.column_titles.push(col.title); helper.column_fields.push(col.accessor); helper.column_sortable_map.${col.accessor} = (col.sortable.defined ? col.sortable : 1); + helper.options.${col.accessor} = {}; IF col.custom_renderer.defined; helper.custom_renderers.${col.accessor} = col.custom_renderer; END; IF col.visible.defined && !col.visible; helper.columns_hidden.${col.accessor} = 1; END; + IF col.dont_skip_empty_data; + helper.options.${col.accessor}.dont_skip_empty_data = 1; + END; END; END; backuri = c.req.uri; @@ -98,10 +104,17 @@ $(document).ready(function() { "mData": "[% f %]", [%IF helper.columns_hidden.${f} %] "visible": false, + "className": 'hidden', + "hidden": true, [%END%] "mRender": function ( data, type, full ) { + [% IF !helper.options.${f}.dont_skip_empty_data %] + if(data == null) + return ''; + [% ELSE %] if(data == null) - return ''; + data = ''; + [% END %] [% IF helper.custom_renderers.${f} -%] data.escapeHtml = true; //true by default; var renderCustom = [% helper.custom_renderers.${f} -%]; diff --git a/share/templates/timeset/event_list.tt b/share/templates/timeset/event_list.tt index 932166d399..06c39e7728 100644 --- a/share/templates/timeset/event_list.tt +++ b/share/templates/timeset/event_list.tt @@ -11,11 +11,56 @@ require(['rrule'], function (rrule) { RRule = rrule; }); function toText(data, type, full) { - if (!data) { - return ''; + var rrule_text = ''; + var dtstart, dtend, freq; + var dtstart_obj; + var dtend_obj; + if (data) { + var r = RRule.rrulestr(data); + if (r.isFullyConvertibleToText()) { + rrule_text = r.toText(); + } + freq = r.options.freq; + } + if (full.start){ + dtstart = full.start; + } + if (full.end){ + dtend = full.end; + } + var rrule_date_text = ''; + if (dtstart) { + var rrule_dtend_text = ''; + if (dtend) { + var dtend_obj = new Date(dtend); + var dtend_date = fomatDate(dtend_obj.getFullYear(), dtend_obj.getMonth(), dtend_obj.getDate(), '-'); + var dtend_time = fomatDate(dtend_obj.getHours(), dtend_obj.getMinutes(), dtend_obj.getSeconds(),':'); + rrule_dtend_text = ' [%c.loc("to")%] ' + (needDate(freq) ? dtend_date + ' ': '') + dtend_time; + } + var dtstart_obj = new Date(dtstart); + var dtstart_date = fomatDate(dtstart_obj.getFullYear(), dtstart_obj.getMonth(), dtstart_obj.getDate(), '-'); + var dtstart_time = fomatDate(dtstart_obj.getHours(), dtstart_obj.getMinutes(), dtstart_obj.getSeconds(),':'); + + var rrule_dtstart_text = ( rrule_dtend_text == '' ? ' [%c.loc("at")%] ' : ' [%c.loc("from")%] ') + (needDate(freq) ? dtstart_date + ' ' : '') + dtstart_time; + + rrule_date_text = rrule_dtstart_text + rrule_dtend_text; + } + rrule_text += rrule_date_text; + return rrule_text; +} + +function needDate(freq) { + //3 - daily + if (freq == 3 ) { + return 0; + } + return 1; +} +function fomatDate (d1,d2,d3,delimiter) { + var addZero = function(d){ + return d < 10 ? '0' + d : d; } - var r = RRule.rrulestr(data); - return r.toText(); + return [addZero(d1),addZero(d2),addZero(d3)].join(delimiter); }