mirror of
https://github.com/datahub-project/datahub.git
synced 2025-07-13 04:02:34 +00:00
129 lines
3.4 KiB
JavaScript
129 lines
3.4 KiB
JavaScript
import Controller from '@ember/controller';
|
|
import { computed } from '@ember/object';
|
|
import $ from 'jquery';
|
|
|
|
export default Controller.extend({
|
|
urn: null,
|
|
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;
|
|
}
|
|
}),
|
|
getUrnWatchId: function(urn) {
|
|
var controller = this;
|
|
var watcherEndpoint = '/api/v1/urn/watch?urn=' + urn;
|
|
$.get(watcherEndpoint, function(data) {
|
|
if (data.id && data.id !== 0) {
|
|
controller.set('urnWatched', true);
|
|
controller.set('urnWatchedId', data.id);
|
|
} else {
|
|
controller.set('urnWatched', false);
|
|
controller.set('urnWatchedId', 0);
|
|
}
|
|
});
|
|
},
|
|
actions: {
|
|
watchUrn: function(urn) {
|
|
if (!urn) {
|
|
urn = 'DATASETS_ROOT';
|
|
}
|
|
var _this = this;
|
|
var url = '/api/v1/urn/watch';
|
|
var token = $('#csrfToken')
|
|
.val()
|
|
.replace('/', '');
|
|
if (!this.get('urnWatched')) {
|
|
//this.set('urnWatched', false)
|
|
$.ajax({
|
|
url: url,
|
|
method: 'POST',
|
|
header: {
|
|
'Csrf-Token': token
|
|
},
|
|
data: {
|
|
csrfToken: token,
|
|
urn: urn,
|
|
type: 'urn',
|
|
notification_type: 'WEEKLY'
|
|
}
|
|
})
|
|
.done(function(data, txt, xhr) {
|
|
Notify.toast('You are now watching: ' + urn, 'Success', 'success');
|
|
_this.set('urnWatched', true);
|
|
_this.getUrnWatchId(urn);
|
|
})
|
|
.fail(function(xhr, txt, error) {
|
|
Notify.toast('URN could not be watched', 'Error Watching Urn', 'error');
|
|
});
|
|
} else {
|
|
url += '/' + this.get('urnWatchedId');
|
|
url += '?csrfToken=' + token;
|
|
$.ajax({
|
|
url: url,
|
|
method: 'DELETE',
|
|
header: {
|
|
'Csrf-Token': token
|
|
},
|
|
dataType: 'json'
|
|
})
|
|
.done(function(data, txt, xhr) {
|
|
_this.set('urnWatched', false);
|
|
_this.set('urnWatchedId', 0);
|
|
})
|
|
.fail(function(xhr, txt, error) {
|
|
Notify.toast('Could not unwatch urn', 'Error', 'error');
|
|
});
|
|
}
|
|
}
|
|
}
|
|
});
|