forge/arma/ui/apps/portal/data.js
2026-03-07 15:23:01 -06:00

161 lines
5.4 KiB
JavaScript

(function () {
const OrgPortal = (window.OrgPortal = window.OrgPortal || {});
function cloneValue(value) {
return JSON.parse(JSON.stringify(value));
}
function replaceObject(target, source) {
Object.keys(target).forEach((key) => delete target[key]);
Object.assign(target, cloneValue(source));
}
function replaceArray(target, source) {
target.splice(0, target.length, ...cloneValue(source));
}
OrgPortal.data = {
portalData: {
org: {
name: "Black Rifle Company",
tag: "BRC-0160566824",
type: "Private Military Company",
status: "Operational",
headquarters: "Georgetown Command Annex",
owner: "Jacob Schmidt",
ownerUid: "uid-jacob-schmidt",
isDefault: false,
},
funds: 482750,
reputation: 72,
members: [
{ name: "Jacob Schmidt" },
{ name: "Mara Velez" },
{ name: "Rylan Cross" },
{ name: "Noah Briggs" },
{ name: "Elena Price" },
{ name: "Isaac Rowe" },
{ name: "Talia Boone" },
{ name: "Cade Mercer" },
],
fleet: [
{
name: "UH-80 Ghost Hawk",
type: "helicopter",
status: "Ready",
damage: "16%",
},
{
name: "MH-9 Hummingbird",
type: "helicopter",
status: "Ready",
damage: "8%",
},
{
name: "M-ATV Patrol 1",
type: "car",
status: "Fielded",
damage: "24%",
},
{
name: "M2A1 Slammer",
type: "armor",
status: "Ready",
damage: "11%",
},
{
name: "RHIB Patrol Boat",
type: "naval",
status: "Repairing",
damage: "32%",
},
],
assets: [
{ name: "First Aid Kits", type: "items", quantity: "36" },
{ name: "MX 6.5 mm Rifles", type: "weapons", quantity: "18" },
{
name: "6.5 mm Magazines",
type: "magazines",
quantity: "120",
},
{
name: "Carryall Backpacks",
type: "backpacks",
quantity: "24",
},
],
activity: [
{
time: "08:20",
text: "Treasury cleared contractor payment for northern route escort.",
},
{
time: "07:45",
text: "Viper Flight completed readiness checks on all rotary assets.",
},
{
time: "07:10",
text: "New recruit Cade Mercer accepted into ground training roster.",
},
{
time: "06:30",
text: "North Depot inventory count pushed reserve ratio above target.",
},
],
roadmap: [
{
name: "Contracts Board",
status: "Planned",
detail: "Track payouts, assignments, and claim approvals.",
},
{
name: "Diplomacy",
status: "Future Review",
detail: "Possible future module pending a full design and scope review.",
},
{
name: "Logistics Queue",
status: "Future Review",
detail: "Possible future module pending a full design and scope review.",
},
{
name: "Permissions",
status: "Future Review",
detail: "Possible future module pending a full design and scope review.",
},
],
},
session: {
actorName: "Jacob Schmidt",
actorUid: "uid-jacob-schmidt",
role: "Leader",
ceo: false,
},
applyLoginPayload(payload) {
replaceObject(this.portalData.org, payload.portalData.org || {});
this.portalData.funds = payload.portalData.funds || 0;
this.portalData.reputation = payload.portalData.reputation || 0;
replaceArray(
this.portalData.members,
payload.portalData.members || [],
);
replaceArray(this.portalData.fleet, payload.portalData.fleet || []);
replaceArray(
this.portalData.assets,
payload.portalData.assets || [],
);
replaceArray(
this.portalData.activity,
payload.portalData.activity || [],
);
replaceArray(
this.portalData.roadmap,
payload.portalData.roadmap || [],
);
replaceObject(this.session, payload.session || {});
},
};
})();