134 lines
3.3 KiB
JavaScript
Raw Normal View History

import Controller from '@ember/controller';
import { scheduleOnce } from '@ember/runloop';
import { computed } from '@ember/object';
import $ from 'jquery';
let currentLeft;
let currentRight;
let leftSelected;
let rightSelected;
let chartData = [];
let schemaData = [];
let skipChangeEvent = false;
export default Controller.extend({
schemaName: '',
instance: jsondiffpatch.create({
objectHash: function(obj, index) {
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: {
onSelect: function(dataset, data) {
this.highlightRow(dataset, data, false);
}
},
previousPage: computed('model.data.page', function() {
var model = this.get('model');
if (model && model.data && model.data.page) {
var currentPage = model.data.page;
if (currentPage <= 1) {
return currentPage;
} else {
return currentPage - 1;
}
} else {
return 1;
}
}),
nextPage: computed('model.data.page', function() {
var model = this.get('model');
if (model && model.data && model.data.page) {
var currentPage = model.data.page;
var totalPages = model.data.totalPages;
if (currentPage >= totalPages) {
return totalPages;
} else {
return currentPage + 1;
}
} else {
return 1;
}
}),
first: computed('model.data.page', function() {
var model = this.get('model');
if (model && model.data && model.data.page) {
var currentPage = model.data.page;
if (currentPage <= 1) {
return true;
} else {
return false;
}
} else {
return false;
}
}),
last: computed('model.data.page', function() {
var model = this.get('model');
if (model && model.data && model.data.page) {
var currentPage = model.data.page;
var totalPages = model.data.totalPages;
if (currentPage >= totalPages) {
return true;
} else {
return false;
}
} else {
return false;
}
}),
updateSchemas(page, datasetId) {
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 => {
if (data && data.status == 'ok') {
this.set('model', data);
}
});
},
updateDiffView() {
var delta = this.get('instance').diff(currentLeft, currentRight);
$('#schemaContent').html(jsondiffpatch.formatters.html.format(delta, currentLeft));
jsondiffpatch.formatters.html.hideUnchanged();
},
highlightRow(dataset, data, firstRow) {
var rows = $('.schema-row');
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]) {
$(rows[index])
.addClass('highlight')
.siblings()
.removeClass('highlight');
break;
}
}
}
}
});