content/hifi-content/seth/pr-monitor/pr-monitor.js
2022-02-14 02:04:11 +01:00

88 lines
2.7 KiB
JavaScript

"use strict";
/* global Entities, Script, Vec3 */
(function() {
var prUtils = Script.require(Script.resolvePath("pr-utils.js"));
var self = this;
var dataCache = {};
function updateStatus(thunk) {
try {
var userData = Entities.getEntityProperties(self.entityID, "userData").userData;
var data = JSON.parse(userData);
self.prNumber = data.prNumber;
prUtils.getPRDetails(self.prNumber, dataCache, thunk);
} catch (err) {
}
}
function hideDetails() {
if (self.prDetailsOverlayID) {
Entities.deleteEntity(self.prDetailsOverlayID);
self.prDetailsOverlayID = null;
}
}
function showDetails() {
hideDetails();
var entityPosition = Entities.getEntityProperties(self.entityID, ["position"]).position;
self.prDetailsOverlayID = Entities.addEntity({
type: "Text",
name: "PR Status ",
position: Vec3.sum(entityPosition, { x: 0.0, y: 0.26, z: 0.0 }),
localOrientation: { x: 0.0, y: 0.0, z: 0.0, w: 1.0 },
text: "",
textAlpha: 1,
textColor: { red: 255, green: 255, blue: 255 },
backgroundAlpha: 1,
backgroundColor: { red: 0, green: 0, blue: 0 },
lineHeight: 0.042,
billboardMode: "full",
dimensions: { x: 0.5, y: 0.5 },
visible: true,
ignoreRayIntersection: true,
drawInFront: true,
grabbable: false,
parentID: self.entityID,
lifetime: 100
}, "local");
updateStatus(function (response) {
self.response = response;
var prDetailsText = ". \n";
prDetailsText += " PR-" + self.prNumber + "\n";
if (self.response.milestone) {
prDetailsText += " milestone: " + self.response.milestone.title + "\n";
}
prDetailsText += " state: " + self.response.state + "\n";
prDetailsText += " title: " + self.response.title + "\n";
prDetailsText += " ----------" + "\n ";
prDetailsText += self.response.labelNames.join("\n ");
Entities.editEntity(self.prDetailsOverlayID, {
name: "PR Status " + self.response.number,
text: prDetailsText
});
});
}
self.preload = function (entityID) {
self.entityID = entityID;
};
self.startNearGrab = function (id, params) {
showDetails();
};
self.startDistanceGrab = function (id, params) {
showDetails();
};
self.releaseGrab = function (id, params) {
hideDetails();
};
});