/*
* Copyright 2012 LinkedIn Corp.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
$.namespace('azkaban');
var logModel;
azkaban.LogModel = Backbone.Model.extend({});
// From ProjectLogEvent.java
// ERROR(128), CREATED(1), DELETED(2), USER_PERMISSION(3), GROUP_PERMISSION(4), DESCRIPTION(5);
var typeMapping = {
"ERROR": "Error",
"CREATED": "Project Created",
"DELETED": "Project Deleted",
"USER_PERMISSION" : "User Permission",
"GROUP_PERMISSION" : "Group Permission",
"DESCRIPTION" : "Description Set",
"SCHEDULE": "Schedule",
"UPLOADED": "Uploaded"
};
var projectLogView;
azkaban.ProjectLogView = Backbone.View.extend({
events: {
"click #updateLogBtn": "handleUpdate"
},
initialize: function(settings) {
this.model.set({"current": 0});
this.handleUpdate();
},
handleUpdate: function(evt) {
var current = this.model.get("current");
var requestURL = contextURL + "/manager";
var model = this.model;
var requestData = {
"project": projectName,
"ajax": "fetchProjectLogs",
"size": 1000,
"skip": 0
};
var successHandler = function(data) {
console.log("fetchLogs");
if (data.error) {
showDialog("Error", data.error);
return;
}
// Get the columns to map to the values.
var columns = data.columns;
var columnMap = {};
for (var i =0; i < columns.length; ++i) {
columnMap[columns[i]] = i;
}
var logSection = $("#logTable").find("tbody")[0];
$(logSection).empty();
var logData = data.logData;
for (var i = 0; i < logData.length; ++i) {
var event = logData[i];
var user = event[columnMap['user']];
var time = event[columnMap['time']];
var type = event[columnMap['type']];
var message = event[columnMap['message']];
var containerEvent = document.createElement("tr");
$(containerEvent).addClass("projectEvent");
var containerTime = document.createElement("td");
$(containerTime).addClass("time");
$(containerTime).text(getDateFormat(new Date(time)));
var containerUser = document.createElement("td");
$(containerUser).addClass("user");
$(containerUser).text(user);
var containerType = document.createElement("td");
$(containerType).addClass("type");
$(containerType).addClass(type);
$(containerType).text(typeMapping[type] ? typeMapping[type] : type);
var containerMessage = document.createElement("td");
$(containerMessage).addClass("message");
$(containerMessage).text(message);
$(containerEvent).append(containerTime);
$(containerEvent).append(containerUser);
$(containerEvent).append(containerType);
$(containerEvent).append(containerMessage);
$(logSection).append(containerEvent);
}
model.set({"log": data});
};
$.get(requestURL, requestData, successHandler);
}
});
var showDialog = function(title, message) {
$('#messageTitle').text(title);
$('#messageBox').text(message);
$('#messageDialog').modal({
closeHTML: "<a href='#' title='Close' class='modal-close'>x</a>",
position: ["20%",],
containerId: 'confirm-container',
containerCss: {
'height': '220px',
'width': '565px'
},
onShow: function (dialog) {
}
});
}
$(function() {
var selected;
logModel = new azkaban.LogModel();
projectLogView = new azkaban.ProjectLogView({el:$('#projectLogView'), model: logModel});
});