mirror of
https://github.com/getredash/redash.git
synced 2025-12-26 21:01:31 -05:00
41 lines
1.3 KiB
JavaScript
41 lines
1.3 KiB
JavaScript
(function () {
|
|
var Dashboard = function($resource, $http, Widget) {
|
|
var transformSingle = function(dashboard) {
|
|
dashboard.widgets = _.map(dashboard.widgets, function (row) {
|
|
return _.map(row, function (widget) {
|
|
return new Widget(widget);
|
|
});
|
|
});
|
|
};
|
|
|
|
var transform = $http.defaults.transformResponse.concat(function(data, headers) {
|
|
if (_.isArray(data)) {
|
|
_.each(data, transformSingle);
|
|
} else {
|
|
transformSingle(data);
|
|
}
|
|
return data;
|
|
});
|
|
|
|
var resource = $resource('api/dashboards/:slug', {slug: '@slug'}, {
|
|
'get': {method: 'GET', transformResponse: transform},
|
|
'save': {method: 'POST', transformResponse: transform},
|
|
'query': {method: 'GET', isArray: true, transformResponse: transform},
|
|
recent: {
|
|
method: 'get',
|
|
isArray: true,
|
|
url: "api/dashboards/recent",
|
|
transformResponse: transform
|
|
|
|
}});
|
|
|
|
resource.prototype.canEdit = function() {
|
|
return currentUser.hasPermission('admin') || currentUser.canEdit(this);
|
|
}
|
|
return resource;
|
|
}
|
|
|
|
angular.module('redash.services')
|
|
.factory('Dashboard', ['$resource', '$http', 'Widget', Dashboard])
|
|
})();
|