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');
});
}
}
}
});