2018-01-20 00:46:47 -08:00
|
|
|
import Controller from '@ember/controller';
|
|
|
|
import { scheduleOnce } from '@ember/runloop';
|
|
|
|
import { computed } from '@ember/object';
|
|
|
|
import $ from 'jquery';
|
2017-02-13 14:19:45 -08:00
|
|
|
|
|
|
|
let currentLeft;
|
|
|
|
let currentRight;
|
|
|
|
let leftSelected;
|
|
|
|
let rightSelected;
|
|
|
|
let chartData = [];
|
|
|
|
let schemaData = [];
|
|
|
|
let skipChangeEvent = false;
|
|
|
|
|
2018-01-20 00:46:47 -08:00
|
|
|
export default Controller.extend({
|
2017-02-13 14:19:45 -08:00
|
|
|
schemaName: '',
|
|
|
|
instance: jsondiffpatch.create({
|
2018-01-20 00:46:47 -08:00
|
|
|
objectHash: function(obj, index) {
|
2017-02-13 14:19:45 -08:00
|
|
|
if (typeof obj._id !== 'undefined') {
|
|
|
|
return obj._id;
|
|
|
|
}
|
|
|
|
if (typeof obj.id !== 'undefined') {
|
|
|
|
return obj.id;
|
|
|
|
}
|
|
|
|
if (typeof obj.name !== 'undefined') {
|
|
|
|
return obj.name;
|
|
|
|
}
|
|
|
|
return '$$index:' + index;
|
|
|
|
}
|
|
|
|
}),
|
|
|
|
actions: {
|
2018-01-20 00:46:47 -08:00
|
|
|
onSelect: function(dataset, data) {
|
2017-02-13 14:19:45 -08:00
|
|
|
this.highlightRow(dataset, data, false);
|
|
|
|
}
|
|
|
|
},
|
2018-01-20 00:46:47 -08:00
|
|
|
previousPage: computed('model.data.page', function() {
|
|
|
|
var model = this.get('model');
|
2017-02-13 14:19:45 -08:00
|
|
|
if (model && model.data && model.data.page) {
|
|
|
|
var currentPage = model.data.page;
|
|
|
|
if (currentPage <= 1) {
|
|
|
|
return currentPage;
|
2018-01-20 00:46:47 -08:00
|
|
|
} else {
|
2017-02-13 14:19:45 -08:00
|
|
|
return currentPage - 1;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
return 1;
|
|
|
|
}
|
2018-01-20 00:46:47 -08:00
|
|
|
}),
|
|
|
|
nextPage: computed('model.data.page', function() {
|
|
|
|
var model = this.get('model');
|
2017-02-13 14:19:45 -08:00
|
|
|
if (model && model.data && model.data.page) {
|
|
|
|
var currentPage = model.data.page;
|
|
|
|
var totalPages = model.data.totalPages;
|
|
|
|
if (currentPage >= totalPages) {
|
|
|
|
return totalPages;
|
2018-01-20 00:46:47 -08:00
|
|
|
} else {
|
2017-02-13 14:19:45 -08:00
|
|
|
return currentPage + 1;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
return 1;
|
|
|
|
}
|
2018-01-20 00:46:47 -08:00
|
|
|
}),
|
|
|
|
first: computed('model.data.page', function() {
|
|
|
|
var model = this.get('model');
|
2017-02-13 14:19:45 -08:00
|
|
|
if (model && model.data && model.data.page) {
|
|
|
|
var currentPage = model.data.page;
|
|
|
|
if (currentPage <= 1) {
|
|
|
|
return true;
|
2018-01-20 00:46:47 -08:00
|
|
|
} else {
|
|
|
|
return false;
|
2017-02-13 14:19:45 -08:00
|
|
|
}
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
2018-01-20 00:46:47 -08:00
|
|
|
}),
|
|
|
|
last: computed('model.data.page', function() {
|
|
|
|
var model = this.get('model');
|
2017-02-13 14:19:45 -08:00
|
|
|
if (model && model.data && model.data.page) {
|
|
|
|
var currentPage = model.data.page;
|
|
|
|
var totalPages = model.data.totalPages;
|
|
|
|
if (currentPage >= totalPages) {
|
|
|
|
return true;
|
2018-01-20 00:46:47 -08:00
|
|
|
} else {
|
|
|
|
return false;
|
2017-02-13 14:19:45 -08:00
|
|
|
}
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
2018-01-20 00:46:47 -08:00
|
|
|
}),
|
2017-02-13 14:19:45 -08:00
|
|
|
|
2018-01-20 00:46:47 -08:00
|
|
|
updateSchemas(page, datasetId) {
|
2017-02-13 14:19:45 -08:00
|
|
|
let url;
|
|
|
|
if (!this.schemaName) {
|
|
|
|
url = '/api/v1/schemaHistory/datasets?size=10&page=' + page;
|
|
|
|
} else {
|
|
|
|
url = '/api/v1/schemaHistory/datasets?name=' + this.schemaName + '&size=10&page=' + page;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (datasetId && datasetId > 0) {
|
|
|
|
url += '&datasetId=' + datasetId;
|
|
|
|
}
|
|
|
|
|
|
|
|
$.get(url, data => {
|
2018-01-20 00:46:47 -08:00
|
|
|
if (data && data.status == 'ok') {
|
2017-02-13 14:19:45 -08:00
|
|
|
this.set('model', data);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
},
|
|
|
|
|
|
|
|
updateDiffView() {
|
|
|
|
var delta = this.get('instance').diff(currentLeft, currentRight);
|
2018-01-20 00:46:47 -08:00
|
|
|
$('#schemaContent').html(jsondiffpatch.formatters.html.format(delta, currentLeft));
|
2017-02-13 14:19:45 -08:00
|
|
|
jsondiffpatch.formatters.html.hideUnchanged();
|
|
|
|
},
|
|
|
|
|
|
|
|
highlightRow(dataset, data, firstRow) {
|
2018-01-20 00:46:47 -08:00
|
|
|
var rows = $('.schema-row');
|
2017-02-13 14:19:45 -08:00
|
|
|
if (rows) {
|
|
|
|
if (firstRow) {
|
|
|
|
$(rows[0]).addClass('highlight');
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
for (var index = 0; index < data.data.datasets.length; index++) {
|
|
|
|
if (dataset == data.data.datasets[index]) {
|
2018-01-20 00:46:47 -08:00
|
|
|
$(rows[index])
|
|
|
|
.addClass('highlight')
|
|
|
|
.siblings()
|
|
|
|
.removeClass('highlight');
|
2017-02-13 14:19:45 -08:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|