Skip to content

Commit 6a59b5d

Browse files
author
Ville Jyrkkä
committed
Merge pull request #1018 from apinf/hotfix/dynatable-i18n-text-duplication
Hotfix/dynatable i18n text duplication
2 parents ad2b11c + 78e506d commit 6a59b5d

File tree

9 files changed

+81
-31
lines changed

9 files changed

+81
-31
lines changed

.meteor/packages

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ zimme:active-route
4747
mfactory:admin-lte
4848
cfs:filesystem
4949
mrt:flash-messages
50-
frenchbread:dynatable
5150
bevanhunt:leaflet
5251
brylie:leaflet-heat
5352
pfafman:filesaver

.meteor/versions

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ fastclick@1.0.11
7474
fortawesome:fontawesome@4.5.0
7575
forwarder:autoform-wizard@0.9.1
7676
forwarder:autoform-wizard-iron-router@0.1.4
77-
frenchbread:dynatable@0.1.0
7877
geojson-utils@1.0.8
7978
github@1.1.8
8079
gwendall:autoform-i18n@0.1.9_1

client/views/dashboard/charts/charts.css

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,9 @@
44
#overview-chart-box, #move-chart-box, #data-table-box, #filter-box, #map-box{
55
padding:5px;
66
}
7+
8+
@media only screen and (max-width: 1551px) {
9+
.data-table-container, .map-container {
10+
width:100%;
11+
}
12+
}

client/views/dashboard/charts/charts.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
</div>
1212
</div>
1313
<div class="row">
14-
<div class="col-lg-6 col-md-6 col-sm-12">
14+
<div class="col-lg-6 data-table-container">
1515
{{> dataTable}}
1616
</div>
17-
<div class="col-lg-6 col-md-6 col-sm-12">
17+
<div class="col-lg-6 map-container">
1818
{{> map}}
1919
</div>
2020
</div>

client/views/dashboard/charts/charts.js

Lines changed: 43 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import dc from 'dc';
2+
import dataTeble from 'datatables';
23

34
Template.chartsLayout.rendered = function () {
45

@@ -201,23 +202,50 @@ Template.chartsLayout.created = function () {
201202
.renderVerticalGridLines(true)
202203
.elasticY(true);
203204

204-
// Creates Dynatable
205-
var dynatable = $('#dc-data-table').dynatable({
206-
features: {
207-
pushState: false
208-
},
209-
dataset: {
210-
records: setUpDataTable(),
211-
perPageDefault: 10,
212-
perPageOptions: [10, 20, 50, 100]
213-
}
214-
}).data('dynatable');
205+
// Init datatable
206+
initDatatable();
207+
208+
// Init datatable function
209+
function initDatatable () {
210+
211+
// Get initial or updated table data
212+
const tableData = setUpDataTable();
213+
214+
// Save reference to datatable body element
215+
const datatableBody = $('.datatable tbody');
216+
217+
// Cleanup datatable if it already has any rows
218+
datatableBody.empty()
219+
220+
// Iterate through each data item and append a row with data to datatable
221+
_.each(tableData, (tableItem) => {
222+
datatableBody.append(`
223+
<tr>
224+
<td scope="row">${tableItem.time}</td>
225+
<td>${tableItem.country}</td>
226+
<td>${tableItem.path}</td>
227+
<td>${tableItem.ip}</td>
228+
<td>${tableItem.response}</td>
229+
</tr>
230+
`);
231+
});
232+
233+
// Initialize data table
234+
$('.datatable').dataTable({
235+
pagingType: 'simple'
236+
});
237+
}
215238

216239
// Listens to filtering event and refreshes the table on a change
217240
function refreshTable() {
218241
dc.events.trigger(function () {
219-
dynatable.settings.dataset.originalRecords = setUpDataTable();
220-
dynatable.process();
242+
243+
// Destory datatable to drop pagination
244+
$('.datatable').dataTable().fnDestroy();
245+
246+
// Fill datatable with updated data
247+
initDatatable();
248+
221249
});
222250
}
223251

@@ -273,7 +301,7 @@ Template.chartsLayout.created = function () {
273301

274302
// Error handling for empty fields
275303
try{
276-
timeStamp = e.fields.request_at[0];
304+
timeStamp = moment(e.fields.request_at[0]);
277305
}catch(e){
278306
timeStamp = "";
279307
}
@@ -303,7 +331,7 @@ Template.chartsLayout.created = function () {
303331
}
304332

305333
dataSet.push({
306-
"time" : timeStamp,
334+
"time" : timeStamp.format("D/MM/YYYY HH:mm:ss"),
307335
"country" : country,
308336
"path" : path,
309337
"ip" : requestIp,

client/views/dashboard/charts/table/table.html

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,29 @@
33
<div class="box-header with-border">
44
<h3 class="box-title">{{_ "dataTable_Title"}}</h3>
55
</div>
6-
<table class='table table-hover display' id='dc-data-table'>
6+
<table class="datatable table table-bordered">
77
<thead>
88
<tr>
9-
<th data-dynatable-column="time" >{{_ "dataTable_TimeStamp"}}</th>
10-
<th data-dynatable-column="country" >{{_ "dataTable_RequestCountry"}}</th>
11-
<th data-dynatable-column="ip">{{_ "dataTable_RequestIP"}}</th>
12-
<th data-dynatable-column="path">{{_ "dataTable_RequestPath"}}</th>
13-
<th data-dynatable-column="response">{{_ "dataTable_ResponseTime"}}</th>
9+
<th>
10+
{{_ "dataTable_TimeStamp"}}
11+
</th>
12+
<th>
13+
{{_ "dataTable_RequestCountry"}}
14+
</th>
15+
<th>
16+
{{_ "dataTable_RequestPath"}}
17+
</th>
18+
<th>
19+
{{_ "dataTable_RequestIP"}}
20+
</th>
21+
<th>
22+
{{_ "dataTable_ResponseTime"}}
23+
</th>
1424
</tr>
1525
</thead>
26+
<tbody>
27+
28+
</tbody>
1629
</table>
1730
</div>
1831
</template>

client/views/dashboard/charts/table/table.less

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,7 @@ a.dynatable-sort-header:hover {
22
color: darkblue;
33
text-decoration: underline;
44
}
5+
6+
.box-header.with-border {
7+
margin-bottom: 1em;
8+
}

lib/i18n/en.i18n.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@
118118
"apiBackend_Usage_Instructions_Note_Text": "You can find your API Key on your profile page.",
119119
"apiBackend_Usage_Instructions_Profile_Page_Link": "View profile.",
120120
"apiBackends_Add_API_Title": "Add API",
121-
"apiBackends_Edit_API_Title": "Edit API",
121+
"apiBackends_Edit_API_Title": "Edit API",
122122
"deleteApiBackendConfirmation_header": "Delete API",
123123
"apiBackends_Title_Help": "API's name",
124124
"apiBackends_Backend_Title": "Backend",
@@ -186,11 +186,11 @@
186186
"filterData_Reset": "Reset All",
187187
"map_Title": "Map",
188188
"dataTable_Title": "Table",
189-
"dataTable_TimeStamp": "Time stamp",
190-
"dataTable_RequestCountry": "Request country",
191-
"dataTable_RequestIP": "Request IP",
192-
"dataTable_RequestPath": "Request path",
193-
"dataTable_ResponseTime": "Response time (in milliseconds)",
189+
"dataTable_TimeStamp": "Date",
190+
"dataTable_RequestCountry": "Country",
191+
"dataTable_RequestIP": "IP",
192+
"dataTable_RequestPath": "Path",
193+
"dataTable_ResponseTime": "Response time (ms)",
194194
"view_ApiBackend_Details_Title": "Details",
195195
"view_ApiBackend_Details_editButtonText": "Edit API Settings",
196196
"viewApiBackendDetails_deleteButton": "Delete",

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"dependencies": {
1010
"crossfilter": "^1.3.12",
1111
"d3": "^3.5.17",
12+
"datatables": "^1.10.12",
1213
"dc": "^2.0.0-beta.30",
1314
"elasticsearch": "^11.0.1",
1415
"jquery.rateit": "^1.0.23",

0 commit comments

Comments
 (0)