mirror of
				https://github.com/datahub-project/datahub.git
				synced 2025-10-31 18:59:23 +00:00 
			
		
		
		
	
		
			
	
	
		
			197 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			197 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|   | App.MetricController = Ember.Controller.extend({ | ||
|  |     isEdit: false, | ||
|  |     updateLoading: false, | ||
|  |     lineageUrl: function(){ | ||
|  |         var model = this.get("model"); | ||
|  |         if (model) | ||
|  |         { | ||
|  |             if (model.refID) | ||
|  |             { | ||
|  |                 var id = parseInt(model.refID); | ||
|  |                 if (id > 0) | ||
|  |                 { | ||
|  |                     return '/lineage/metric/' + model.refID; | ||
|  |                 } | ||
|  |             } | ||
|  |         } | ||
|  |         return ''; | ||
|  | 
 | ||
|  |     }.property('model.refID'), | ||
|  |     showLineage: function(){ | ||
|  |         var model = this.get("model"); | ||
|  |         if (model) | ||
|  |         { | ||
|  |             if (model.refID) | ||
|  |             { | ||
|  |                 var id = parseInt(model.refID); | ||
|  |                 if (id > 0) | ||
|  |                 { | ||
|  |                     return true; | ||
|  |                 } | ||
|  |             } | ||
|  |         } | ||
|  |         return false; | ||
|  | 
 | ||
|  |     }.property('model.refID'), | ||
|  |     actions: { | ||
|  |         editMode: function() { | ||
|  |             this.set('isEdit', true) | ||
|  |         }, | ||
|  |         cancelEditMode: function() { | ||
|  |             this.set('isEdit', false) | ||
|  |         }, | ||
|  |         update: function(){ | ||
|  |             var model = this.get("model") | ||
|  |             var url = '/api/v1/metrics/' + model.id + '/update' | ||
|  |             var token = $("#csrfToken").val().replace('/', '') | ||
|  |             var _this = this | ||
|  |             var data = JSON.parse(JSON.stringify(model)) | ||
|  |             this.set('updateLoading', true) | ||
|  |             data.token = token | ||
|  |             $.ajax({ | ||
|  |                 url: url, | ||
|  |                 method: 'POST', | ||
|  |                 //contentType: 'application/json',
 | ||
|  |                 headers: { | ||
|  |                     'Csrf-Token': token | ||
|  |                 }, | ||
|  |                 dataType: 'json', | ||
|  |                 //data: JSON.stringify(data)
 | ||
|  |                 data: data | ||
|  |             }).done(function(data, txt, xhr){ | ||
|  |                 _this.set('isEdit', false) | ||
|  |                 _this.set('updateLoading', false) | ||
|  |             }).fail(function(xhr, txt, err){ | ||
|  |                 Notify.toast('Could not update.', 'Update Metric', 'Error') | ||
|  |                 _this.set('updateLoading', false) | ||
|  |             }) | ||
|  |         } | ||
|  |     } | ||
|  | }); | ||
|  | 
 | ||
|  | App.MetricsController = Ember.Controller.extend({ | ||
|  |     dashboard: null, | ||
|  |     group: null, | ||
|  |     detailview: true, | ||
|  |     previousPage: 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; | ||
|  |         } | ||
|  | 
 | ||
|  |     }.property('model.data.page'), | ||
|  |     nextPage: 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; | ||
|  |         } | ||
|  |     }.property('model.data.page'), | ||
|  |     first: 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; | ||
|  |         } | ||
|  |     }.property('model.data.page'), | ||
|  |     last: 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; | ||
|  |         } | ||
|  |     }.property('model.data.page'), | ||
|  |     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 = "METRICS_ROOT"; | ||
|  |             } | ||
|  |             var _this = this; | ||
|  |             var url = "/api/v1/urn/watch"; | ||
|  |             var token = $("#csrfToken").val().replace('/', ''); | ||
|  |             if(!this.get('urnWatched')) { | ||
|  |                 $.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') | ||
|  |                 }) | ||
|  |             } | ||
|  |         } | ||
|  |     } | ||
|  | }); |