88 lines
2.8 KiB
JavaScript
88 lines
2.8 KiB
JavaScript
"use strict";
|
|
|
|
/* global Script, Entities */
|
|
|
|
(function() {
|
|
var self = this;
|
|
|
|
var prUtils = Script.require(Script.resolvePath("pr-utils.js?v=2"));
|
|
|
|
var dataCache = {};
|
|
|
|
self.updateVisuals = function () {
|
|
if (!self.response) {
|
|
// error state
|
|
Entities.editEntity(self.entityID, { color: { red: 255, green: 165, blue: 0 }});
|
|
return;
|
|
}
|
|
if (self.response.mergeable) {
|
|
self.status = "good";
|
|
} else {
|
|
self.status = "bad";
|
|
}
|
|
|
|
if (self.response.labelNames.indexOf("DO NOT MERGE") >= 0 ||
|
|
self.response.labelNames.indexOf("QA Rejected :sob:") >= 0 ||
|
|
self.response.labelNames.indexOf("Development Rejected") >= 0) {
|
|
self.status = "bad";
|
|
}
|
|
|
|
for (var i = 0; i < self.response.statuses.length; i++) {
|
|
var status = self.response.statuses[i];
|
|
if (status.state == "pending") {
|
|
self.status = "pending";
|
|
}
|
|
}
|
|
|
|
if (self.response.state == "closed") {
|
|
self.status = "closed";
|
|
}
|
|
|
|
if (self.response.state == "merged") {
|
|
self.status = "merged";
|
|
}
|
|
|
|
if (self.previousStatus != self.status) {
|
|
if (self.status == "good") {
|
|
Entities.editEntity(self.entityID, { color: { red: 0, green: 255, blue: 0 }});
|
|
} else if (self.status == "pending") {
|
|
Entities.editEntity(self.entityID, { color: { red: 255, green: 255, blue: 0 }});
|
|
} else if (self.status == "closed") {
|
|
Entities.editEntity(self.entityID, { color: { red: 120, green: 120, blue: 120 }});
|
|
} else if (self.status == "merged") {
|
|
Entities.editEntity(self.entityID, { color: { red: 250, green: 250, blue: 250 }});
|
|
} else {
|
|
Entities.editEntity(self.entityID, { color: { red: 255, green: 0, blue: 0 }});
|
|
}
|
|
self.previousStatus = self.status;
|
|
}
|
|
|
|
};
|
|
|
|
self.updateStatus = function () {
|
|
try {
|
|
var userData = Entities.getEntityProperties(self.entityID, "userData").userData;
|
|
var data = JSON.parse(userData);
|
|
self.prNumber = data.prNumber;
|
|
prUtils.getPRDetails(self.prNumber, dataCache, function (response) {
|
|
self.response = response;
|
|
self.updateVisuals();
|
|
});
|
|
} catch (err) {
|
|
print("pr-monitor-es.js -- updateStatus failed: " + JSON.stringify(err));
|
|
}
|
|
};
|
|
|
|
|
|
self.preload = function (entityID) {
|
|
self.entityID = entityID;
|
|
|
|
Script.setInterval(function () {
|
|
self.updateStatus();
|
|
// }, 180000); // 180 second
|
|
}, 20000); // 20 second
|
|
|
|
self.updateStatus();
|
|
};
|
|
|
|
});
|