mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-23 08:31:57 +00:00
VueUI 2 Part 2 - Reporting tool (#10850)
This commit is contained in:
2
tools/vueui-report/.gitignore
vendored
Normal file
2
tools/vueui-report/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
node_modules
|
||||
report.htm
|
||||
7
tools/vueui-report/.prettierrc.js
Normal file
7
tools/vueui-report/.prettierrc.js
Normal file
@@ -0,0 +1,7 @@
|
||||
module.exports = {
|
||||
trailingComma: 'es5',
|
||||
tabWidth: 2,
|
||||
semi: false,
|
||||
singleQuote: true,
|
||||
printWidth: 120,
|
||||
}
|
||||
19
tools/vueui-report/README.md
Normal file
19
tools/vueui-report/README.md
Normal file
@@ -0,0 +1,19 @@
|
||||
# VueUI report generator
|
||||
This program is used to make reports for VueUI. Reports include varius checks.
|
||||
## How to add a check stage
|
||||
Stages are sequential, they run one after each other. To add stage copy `00_null` stage and modify it's code. And finally add appropriate require to `stages/index.js`.
|
||||
## How to use
|
||||
1. Get Node.js 10.0.0 or newer.
|
||||
0. Run `npm install`
|
||||
0. Run `node .`
|
||||
0. Wait for all stages to finish
|
||||
0. Look at `report.htm` in same directory.
|
||||
## How to add more UI tests to Puppeteer report?
|
||||
Create a json file somewhere under `/vueui/tests` folder with containing following object
|
||||
```JSON
|
||||
{
|
||||
"size": [100, 100],
|
||||
"data": ...
|
||||
}
|
||||
```
|
||||
`size` specifies width and height of UI while data determines root UI data to be used. It is same data that is shown in debug section of VueUI.
|
||||
35
tools/vueui-report/config.js
Normal file
35
tools/vueui-report/config.js
Normal file
@@ -0,0 +1,35 @@
|
||||
module.exports = {
|
||||
vueui: '../../vueui',
|
||||
themes: ['vueui theme-nano dark-theme', 'vueui theme-nano-light', 'vueui theme-basic', 'vueui theme-basic-dark dark-theme'],
|
||||
template: (theme, data) => `<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta charset="UTF-8"/>
|
||||
<meta id="vueui:windowId" content="TEST"/>
|
||||
<link rel="stylesheet" type="text/css" href="app.css"/>
|
||||
</head>
|
||||
<body class="${theme}">
|
||||
<div id="header">
|
||||
<header-default></header-default>
|
||||
<header-handles></header-handles>
|
||||
</div>
|
||||
<div id="app">
|
||||
Javascript file has failed to load. <a href="?src=\ref&vueuiforceresource=1">Click here to force load resources</a>
|
||||
</div>
|
||||
<div id="dapp">
|
||||
</div>
|
||||
<noscript>
|
||||
<div id='uiNoScript'>
|
||||
<h2>JAVASCRIPT REQUIRED</h2>
|
||||
<p>Your Internet Explorer's Javascript is disabled (or broken).<br/>
|
||||
Enable Javascript and then open this UI again.</p>
|
||||
</div>
|
||||
</noscript>
|
||||
</body>
|
||||
<script type="application/json" id="initialstate">
|
||||
${JSON.stringify(data)}
|
||||
</script>
|
||||
<script type="text/javascript" src="app.js"></script>
|
||||
</html>`
|
||||
}
|
||||
48
tools/vueui-report/index.js
Normal file
48
tools/vueui-report/index.js
Normal file
@@ -0,0 +1,48 @@
|
||||
const { Signale } = require('signale')
|
||||
const Vue = require('vue')
|
||||
const fs = require('fs-extra')
|
||||
|
||||
const stages = require('./stages')
|
||||
|
||||
|
||||
// run
|
||||
const mainLogger = new Signale({scope: 'main'})
|
||||
var states = {}
|
||||
async function runStages () {
|
||||
mainLogger.time('All Stages')
|
||||
for (const [i, stage] of stages.entries()) {
|
||||
const name = stage.name()
|
||||
const subLogger = mainLogger.scope('stage', name)
|
||||
mainLogger.time(name)
|
||||
let result = await Promise.resolve(stage.run(subLogger))
|
||||
mainLogger.timeEnd(name)
|
||||
states[i] = result
|
||||
}
|
||||
mainLogger.timeEnd('All Stages')
|
||||
}
|
||||
|
||||
|
||||
// Build HTML
|
||||
|
||||
async function generateHTML() {
|
||||
const app = new Vue(require('./src/app')(states, stages))
|
||||
const renderer = require('vue-server-renderer').createRenderer()
|
||||
|
||||
await fs.outputFile('report.htm', await renderer.renderToString(app))
|
||||
}
|
||||
|
||||
|
||||
async function main() {
|
||||
await runStages()
|
||||
await generateHTML()
|
||||
}
|
||||
|
||||
main()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
1201
tools/vueui-report/package-lock.json
generated
Normal file
1201
tools/vueui-report/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
17
tools/vueui-report/package.json
Normal file
17
tools/vueui-report/package.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"name": "vueui-report",
|
||||
"version": "1.0.0",
|
||||
"description": "Tools for building VueUI BYOND UI framework reports.",
|
||||
"main": "index.mjs",
|
||||
"author": "Karolis K.",
|
||||
"dependencies": {
|
||||
"ansi-to-html": "^0.6.14",
|
||||
"express": "^4.17.1",
|
||||
"fs-extra": "^9.0.1",
|
||||
"klaw": "^3.0.0",
|
||||
"puppeteer": "^5.5.0",
|
||||
"signale": "^1.4.0",
|
||||
"vue": "^2.6.12",
|
||||
"vue-server-renderer": "^2.6.12"
|
||||
}
|
||||
}
|
||||
38
tools/vueui-report/src/app.js
Normal file
38
tools/vueui-report/src/app.js
Normal file
@@ -0,0 +1,38 @@
|
||||
module.exports = function (states, stages) {
|
||||
var components = stages.map((stage, i) => ({i, n: stage.name(), c: stage.component(states[i])}))
|
||||
return ({
|
||||
template: `<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Required meta tags -->
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<!-- Bootstrap CSS -->
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
|
||||
<style>
|
||||
.error-info {
|
||||
white-space: normal;
|
||||
color: darkred;
|
||||
}
|
||||
</style>
|
||||
<title>VueUI report</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<h1>VueUi Report</h1>
|
||||
<div v-for="stage in stages" :key="stage.i">
|
||||
<h2>{{ stage.n }}</h2>
|
||||
<component v-bind:is="stage.c"></component>
|
||||
</div>
|
||||
</div>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW" crossorigin="anonymous"></script>
|
||||
</body>
|
||||
</html>`,
|
||||
data() {
|
||||
return {
|
||||
stages: components
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
15
tools/vueui-report/src/processPromisify.js
Normal file
15
tools/vueui-report/src/processPromisify.js
Normal file
@@ -0,0 +1,15 @@
|
||||
const child_process = require('child_process')
|
||||
|
||||
module.exports = {
|
||||
exec(command, options = {}) {
|
||||
return new Promise((resolve, reject) => {
|
||||
child_process.exec(command, options, (error, stdout, stderr) => {
|
||||
if (error) {
|
||||
reject({ error, stdout, stderr })
|
||||
return
|
||||
}
|
||||
resolve({ stdout, stderr })
|
||||
})
|
||||
})
|
||||
},
|
||||
}
|
||||
5
tools/vueui-report/stages/00_null/index.js
Normal file
5
tools/vueui-report/stages/00_null/index.js
Normal file
@@ -0,0 +1,5 @@
|
||||
module.exports = {
|
||||
name: () => 'null',
|
||||
run: (signale) => ({result: 'fail'}),
|
||||
component: (state) => ({template: '<div>{{ $data }}</div>'})
|
||||
}
|
||||
31
tools/vueui-report/stages/01_build/component.js
Normal file
31
tools/vueui-report/stages/01_build/component.js
Normal file
@@ -0,0 +1,31 @@
|
||||
var Convert = require('ansi-to-html');
|
||||
var convert = new Convert();
|
||||
module.exports = function (state) {
|
||||
return ({
|
||||
template: `<div>
|
||||
<h3>npm install</h3>
|
||||
<pre v-html="installOut"></pre>
|
||||
<h3>npm run build-dev</h3>
|
||||
<pre v-html="buildOut"></pre>
|
||||
</div>`,
|
||||
data() {
|
||||
return state
|
||||
},
|
||||
computed: {
|
||||
installOut() {
|
||||
if(this.install)
|
||||
{
|
||||
return convert.toHtml(this.install)
|
||||
}
|
||||
return ''
|
||||
},
|
||||
buildOut() {
|
||||
if(this.build)
|
||||
{
|
||||
return convert.toHtml(this.build.stdout)
|
||||
}
|
||||
return ''
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
7
tools/vueui-report/stages/01_build/index.js
Normal file
7
tools/vueui-report/stages/01_build/index.js
Normal file
@@ -0,0 +1,7 @@
|
||||
const run = require('./run')
|
||||
const component = require('./component')
|
||||
module.exports = {
|
||||
name: () => 'Build',
|
||||
run,
|
||||
component
|
||||
}
|
||||
24
tools/vueui-report/stages/01_build/run.js
Normal file
24
tools/vueui-report/stages/01_build/run.js
Normal file
@@ -0,0 +1,24 @@
|
||||
const config = require('../../config')
|
||||
const processPromisify = require('../../src/processPromisify')
|
||||
const path = require('path')
|
||||
const vueuiPath = path.resolve(config.vueui)
|
||||
module.exports = async function (signale) {
|
||||
try {
|
||||
const { stdout, stderr } = await processPromisify.exec('npm install --colors', {
|
||||
cwd: vueuiPath,
|
||||
})
|
||||
signale.debug("Install done. Building...")
|
||||
const build = await processPromisify.exec('npm run build-dev --colors',
|
||||
{
|
||||
cwd: vueuiPath,
|
||||
}
|
||||
)
|
||||
signale.debug("Build done.")
|
||||
return {
|
||||
install: stdout,
|
||||
build
|
||||
}
|
||||
} catch (error) {
|
||||
return {fail: error}
|
||||
}
|
||||
}
|
||||
21
tools/vueui-report/stages/02_lint/component.js
Normal file
21
tools/vueui-report/stages/02_lint/component.js
Normal file
@@ -0,0 +1,21 @@
|
||||
var Convert = require('ansi-to-html');
|
||||
var convert = new Convert();
|
||||
module.exports = function (state) {
|
||||
return ({
|
||||
template: `<div>
|
||||
<pre v-html="lintOut"></pre>
|
||||
</div>`,
|
||||
data() {
|
||||
return state
|
||||
},
|
||||
computed: {
|
||||
lintOut() {
|
||||
if(this.lint)
|
||||
{
|
||||
return convert.toHtml(this.lint)
|
||||
}
|
||||
return ''
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
7
tools/vueui-report/stages/02_lint/index.js
Normal file
7
tools/vueui-report/stages/02_lint/index.js
Normal file
@@ -0,0 +1,7 @@
|
||||
const run = require('./run')
|
||||
const component = require('./component')
|
||||
module.exports = {
|
||||
name: () => 'Lint',
|
||||
run,
|
||||
component
|
||||
}
|
||||
16
tools/vueui-report/stages/02_lint/run.js
Normal file
16
tools/vueui-report/stages/02_lint/run.js
Normal file
@@ -0,0 +1,16 @@
|
||||
const config = require('../../config')
|
||||
const processPromisify = require('../../src/processPromisify')
|
||||
const path = require('path')
|
||||
const vueuiPath = path.resolve(config.vueui)
|
||||
module.exports = async function (signale) {
|
||||
try {
|
||||
const { stdout, stderr } = await processPromisify.exec('npm run lint --colors', {
|
||||
cwd: vueuiPath,
|
||||
})
|
||||
return {
|
||||
lint: stdout,
|
||||
}
|
||||
} catch (error) {
|
||||
return {lint_error: error}
|
||||
}
|
||||
}
|
||||
17
tools/vueui-report/stages/03_puppeteer/component.js
Normal file
17
tools/vueui-report/stages/03_puppeteer/component.js
Normal file
@@ -0,0 +1,17 @@
|
||||
module.exports = function (state) {
|
||||
return ({
|
||||
template: `<div>
|
||||
<div class="row" v-for="(r, path) in results" :key="path">
|
||||
<h5>{{ path }}</h5>
|
||||
<div class="col-3" v-for="(data, theme) in r" :key="theme">
|
||||
<img :src="'data:image/png;base64,' + data.image" class="img-fluid"><br/>
|
||||
<pre class="error-info" v-for="err in data.errors">{{ err }}</pre>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>`,
|
||||
data() {
|
||||
return state
|
||||
}
|
||||
})
|
||||
}
|
||||
7
tools/vueui-report/stages/03_puppeteer/index.js
Normal file
7
tools/vueui-report/stages/03_puppeteer/index.js
Normal file
@@ -0,0 +1,7 @@
|
||||
const run = require('./run')
|
||||
const component = require('./component')
|
||||
module.exports = {
|
||||
name: () => 'Puppeteer',
|
||||
run,
|
||||
component
|
||||
}
|
||||
92
tools/vueui-report/stages/03_puppeteer/run.js
Normal file
92
tools/vueui-report/stages/03_puppeteer/run.js
Normal file
@@ -0,0 +1,92 @@
|
||||
const config = require('../../config')
|
||||
const path = require('path')
|
||||
const fs = require('fs-extra')
|
||||
const vueuiTestsPath = path.resolve(config.vueui, './tests')
|
||||
const vueuiDistPath = path.resolve(config.vueui, './dist')
|
||||
const klaw = require('klaw')
|
||||
const express = require('express')
|
||||
const puppeteer = require('puppeteer')
|
||||
const app = express()
|
||||
|
||||
app.use(express.static(vueuiDistPath))
|
||||
|
||||
app.use('/tmpl', async (req, res) => {
|
||||
const file = req.query.test
|
||||
const theme = req.query.theme
|
||||
const { data } = await fs.readJson(file)
|
||||
res.send(config.template(theme, data))
|
||||
})
|
||||
|
||||
module.exports = async function (signale) {
|
||||
let tests = []
|
||||
for await (const file of klaw(vueuiTestsPath)) {
|
||||
if (!file.stats.isDirectory()) {
|
||||
tests.push(file.path)
|
||||
}
|
||||
}
|
||||
|
||||
var server = app.listen(5221, () => {
|
||||
signale.info(`Puppeteer web server listening at http://localhost:5221`)
|
||||
})
|
||||
|
||||
// C:\Projektai\Aurora.3\vueui\tests\manifest.json
|
||||
|
||||
// http://localhost:5221/tmpl?test=C:\Projektai\Aurora.3\vueui\tests\manifest.json&theme=vueui%20theme-nano%20dark-theme
|
||||
|
||||
const browser = await puppeteer.launch({headless: false});
|
||||
const page = await browser.newPage();
|
||||
|
||||
let results = {}
|
||||
|
||||
for (const testFile of tests) {
|
||||
const { size } = await fs.readJson(testFile)
|
||||
results[testFile] = {}
|
||||
for (const theme of config.themes) {
|
||||
results[testFile][theme] = {errors: []}
|
||||
|
||||
const ConsoleHandler = (message) => {
|
||||
const type = message.type().substr(0, 3).toUpperCase()
|
||||
if(type == 'ERR')
|
||||
{
|
||||
results[testFile][theme].errors.push(`${message._text}`)
|
||||
}
|
||||
}
|
||||
const PageErrorHandler = ({ message }) => {
|
||||
results[testFile][theme].errors.push(`${message}`)
|
||||
}
|
||||
|
||||
page.on('console', ConsoleHandler)
|
||||
page.on('pageerror', PageErrorHandler)
|
||||
|
||||
await page.goto(`http://localhost:5221/tmpl?test=${encodeURI(testFile)}&theme=${encodeURI(theme)}`)
|
||||
await page.setViewport({
|
||||
width: size[0],
|
||||
height: size[1],
|
||||
deviceScaleFactor: 1,
|
||||
})
|
||||
const screen = await page.screenshot({encoding: 'base64'})
|
||||
results[testFile][theme].image = screen
|
||||
|
||||
// await new Promise((resolve, reject) => {
|
||||
// setTimeout(() => {
|
||||
// resolve()
|
||||
// }, 3000)
|
||||
// })
|
||||
|
||||
page.off('console', ConsoleHandler)
|
||||
page.off('pageerror', PageErrorHandler)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// await new Promise((resolve, reject) => {
|
||||
// setTimeout(() => {
|
||||
// resolve()
|
||||
// }, 1000 * 60)
|
||||
// })
|
||||
|
||||
await browser.close()
|
||||
server.close()
|
||||
return {results}
|
||||
}
|
||||
5
tools/vueui-report/stages/index.js
Normal file
5
tools/vueui-report/stages/index.js
Normal file
@@ -0,0 +1,5 @@
|
||||
module.exports = [
|
||||
require('./01_build'),
|
||||
require('./02_lint'),
|
||||
require('./03_puppeteer'),
|
||||
]
|
||||
559
vueui/tests/ghost spawners.json
Normal file
559
vueui/tests/ghost spawners.json
Normal file
@@ -0,0 +1,559 @@
|
||||
{
|
||||
"size": [950, 700],
|
||||
"data": {
|
||||
"state": {
|
||||
"spawnpoint": null,
|
||||
"current_tag": "All",
|
||||
"spawners": {
|
||||
"ertcommander": {
|
||||
"name": "ERT Commander",
|
||||
"desc": "Command the response team from Central Command",
|
||||
"cant_spawn": 0,
|
||||
"can_edit": 1,
|
||||
"enabled": 1,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 0,
|
||||
"tags": ["Admin"],
|
||||
"spawnpoints": null
|
||||
},
|
||||
"legionlegate": {
|
||||
"name": "TCFL Legate",
|
||||
"desc": "Command the TCFL onboard BLV The Tower, a legion patrolship from where Task Force XIII - Fortune operates from.",
|
||||
"cant_spawn": 0,
|
||||
"can_edit": 1,
|
||||
"enabled": 1,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 0,
|
||||
"tags": ["Admin"],
|
||||
"spawnpoints": null
|
||||
},
|
||||
"cciaagent": {
|
||||
"name": "CCIA Agent",
|
||||
"desc": "Board the Aurora, annoy crew with your interviews and get squashed by your own shuttle.",
|
||||
"cant_spawn": 0,
|
||||
"can_edit": 1,
|
||||
"enabled": 1,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 0,
|
||||
"tags": ["Admin"],
|
||||
"spawnpoints": null
|
||||
},
|
||||
"cciaescort": {
|
||||
"name": "CCIA Escort",
|
||||
"desc": "Escort a CCIA Agent to the station, watch them annoy the crew and prevent them from throwing themselves under their own shuttle. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 1,
|
||||
"tags": ["Admin"],
|
||||
"spawnpoints": null
|
||||
},
|
||||
"checkpointsec_prepatory": {
|
||||
"name": "Aurora Prepatory Wing Security",
|
||||
"desc": "Act as an Odin security officer, guide lost newcomers onto the arrivals shuttle if the need arises.",
|
||||
"cant_spawn": 0,
|
||||
"can_edit": 1,
|
||||
"enabled": 1,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 3,
|
||||
"tags": ["Admin"],
|
||||
"spawnpoints": ["OdinPrepatory"]
|
||||
},
|
||||
"checkpointsec": {
|
||||
"name": "Odin Checkpoint Security",
|
||||
"desc": "Secure the Odin checkpoint. Verify the identity of everyone passing through, perform random searches on \"suspicious\" crew. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 4,
|
||||
"tags": ["Admin"],
|
||||
"spawnpoints": ["OdinCheckpoint"]
|
||||
},
|
||||
"odindoc": {
|
||||
"name": "Odin Medical Doctor",
|
||||
"desc": "Provide medical assistance for those arriving on the Odin. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 4,
|
||||
"tags": ["Admin"],
|
||||
"spawnpoints": ["OdinDoctor"]
|
||||
},
|
||||
"odinpharm": {
|
||||
"name": "Odin Pharmacist",
|
||||
"desc": "Provide medication for the Doctors on the Odin and those in need. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 1,
|
||||
"tags": ["Admin"],
|
||||
"spawnpoints": ["OdinPharm"]
|
||||
},
|
||||
"odinchef": {
|
||||
"name": "Odin Chef",
|
||||
"desc": "Feed starving crew members on the Odin. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 2,
|
||||
"tags": ["Admin"],
|
||||
"spawnpoints": ["OdinChef"]
|
||||
},
|
||||
"odinbartender": {
|
||||
"name": "Odin Bartender",
|
||||
"desc": "Ensure enough drinks are available to the crew on the Odin. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 1,
|
||||
"tags": ["Admin"],
|
||||
"spawnpoints": ["OdinBartender"]
|
||||
},
|
||||
"odinjanitor": {
|
||||
"name": "Odin Sanitation Specialist",
|
||||
"desc": "You are a expert in your field. A true authority. The crew looks to you when they get into a sticky situation. You are a janitor on the Odin. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 1,
|
||||
"tags": ["Admin"],
|
||||
"spawnpoints": ["OdinJanitor"]
|
||||
},
|
||||
"tcflsentinel": {
|
||||
"name": "TCFL Sentinel",
|
||||
"desc": "Secure BLV The Tower from any would-be interlopers, provide assistance to returning personnel and/or evacuees. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 4,
|
||||
"tags": ["Admin"],
|
||||
"spawnpoints": ["TCFLSentinel"]
|
||||
},
|
||||
"fibescort": {
|
||||
"name": "FIB Escort",
|
||||
"desc": "Protect the agents of the Federal Investigations Bureau while on the field. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 1,
|
||||
"tags": ["Admin"],
|
||||
"spawnpoints": null
|
||||
},
|
||||
"fib": {
|
||||
"name": "FIB Agent",
|
||||
"desc": "Investigate issues related to crimes under the jurisdiction of the Federal Investigations Bureau.",
|
||||
"cant_spawn": 0,
|
||||
"can_edit": 1,
|
||||
"enabled": 1,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 0,
|
||||
"tags": ["Admin"],
|
||||
"spawnpoints": null
|
||||
},
|
||||
"burglarpod": {
|
||||
"name": "Burglar",
|
||||
"desc": "Your last attempt at petty theft went awry, and now you're heading toward an asteroid in a ratty escape pod. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 1,
|
||||
"tags": ["External"],
|
||||
"spawnpoints": null
|
||||
},
|
||||
"rescuepodsurv": {
|
||||
"name": "Rescue Pod Survivor",
|
||||
"desc": "You managed to get into a rescue pod and landed somewhere on an asteroid. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 1,
|
||||
"tags": ["External"],
|
||||
"spawnpoints": null
|
||||
},
|
||||
"merchantass": {
|
||||
"name": "Merchants Assistant",
|
||||
"desc": "Assist the Merchant with their duties. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 1,
|
||||
"tags": ["External"],
|
||||
"spawnpoints": ["MerchantAss"]
|
||||
},
|
||||
"visitor": {
|
||||
"name": "Visitor",
|
||||
"desc": "You are a random visitor that boarded the NSS Aurora, visiting for any reason you can think of. You do not have any records, as you are not a Nanotrasen employee. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 1,
|
||||
"tags": ["External"],
|
||||
"spawnpoints": null
|
||||
},
|
||||
"ntapl": {
|
||||
"name": "NT Asset Protection Leader",
|
||||
"desc": "Leader of NT's Asset Protection team. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 1,
|
||||
"tags": ["Response Teams"],
|
||||
"spawnpoints": ["DeathERTSpawn"]
|
||||
},
|
||||
"ntaps": {
|
||||
"name": "NT Asset Protection Specialist",
|
||||
"desc": "Protectors of NanoTrasen's bottom line. The last thing you never see. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 3,
|
||||
"tags": ["Response Teams"],
|
||||
"spawnpoints": ["DeathERTSpawn"]
|
||||
},
|
||||
"iacbodyguard": {
|
||||
"name": "IAC Bodyguard",
|
||||
"desc": "A highly trained bodyguard. Sticks close to the medics while they work. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 2,
|
||||
"tags": ["Response Teams"],
|
||||
"spawnpoints": ["ERTSpawn"]
|
||||
},
|
||||
"iacparamedic": {
|
||||
"name": "IAC Paramedic",
|
||||
"desc": "A highly trained paramedic. You grab injured people and bring them to the doctor. You are trained in nursing duties as well. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 2,
|
||||
"tags": ["Response Teams"],
|
||||
"spawnpoints": ["ERTSpawn"]
|
||||
},
|
||||
"iacdoctor": {
|
||||
"name": "IAC Doctor",
|
||||
"desc": "A highly trained doctor. Can do most medical procedures even under severe stress. The de-facto lead of the IAC response team. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 3,
|
||||
"tags": ["Response Teams"],
|
||||
"spawnpoints": ["ERTSpawn"]
|
||||
},
|
||||
"katspec": {
|
||||
"name": "Kataphract-Hopeful Specialist",
|
||||
"desc": "A Zo'saa (squire) trained in medicine from the local Kataphract guild. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 1,
|
||||
"tags": ["Response Teams"],
|
||||
"spawnpoints": ["ERTSpawn"]
|
||||
},
|
||||
"katlead": {
|
||||
"name": "Kataphract Knight",
|
||||
"desc": "A brave Saa (Knight) of the local Kataphract Guild. Two together operate as leaders of the team. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 2,
|
||||
"tags": ["Response Teams"],
|
||||
"spawnpoints": ["ERTSpawn"]
|
||||
},
|
||||
"kathope": {
|
||||
"name": "Kataphract-Hopeful",
|
||||
"desc": "A Zo'saa (squire) of the local Kataphract Guild. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 2,
|
||||
"tags": ["Response Teams"],
|
||||
"spawnpoints": ["ERTSpawn"]
|
||||
},
|
||||
"eridanidocbodyguard": {
|
||||
"name": "Eridani Medical Contractor Bodyguard",
|
||||
"desc": "A highly trained bodyguard. Sticks close to the medics while they work. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 2,
|
||||
"tags": ["Response Teams"],
|
||||
"spawnpoints": ["ERTSpawn"]
|
||||
},
|
||||
"eridaniparamedic": {
|
||||
"name": "Eridani Medical Contractor Paramedic",
|
||||
"desc": "A highly trained paramedic. You grab injured people and bring them to the medical doctor. You are trained in nursing duties as well. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 2,
|
||||
"tags": ["Response Teams"],
|
||||
"spawnpoints": ["ERTSpawn"]
|
||||
},
|
||||
"eridanidoctor": {
|
||||
"name": "Eridani Medical Contractor Doctor",
|
||||
"desc": "A highly trained Eridani contractor doctor medical doctor. Can do most medical procedures even under severe stress. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 2,
|
||||
"tags": ["Response Teams"],
|
||||
"spawnpoints": ["ERTSpawn"]
|
||||
},
|
||||
"mercs": {
|
||||
"name": "Mercenary Medical Specialist",
|
||||
"desc": "The only medic of the freelancer mercenary team. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 1,
|
||||
"tags": ["Response Teams"],
|
||||
"spawnpoints": ["ERTSpawn"]
|
||||
},
|
||||
"merce": {
|
||||
"name": "Mercenary Combat Engineer",
|
||||
"desc": "The only dedicated engineer of the freelancer mercenary team. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 1,
|
||||
"tags": ["Response Teams"],
|
||||
"spawnpoints": ["ERTSpawn"]
|
||||
},
|
||||
"mercl": {
|
||||
"name": "Mercenary Leader",
|
||||
"desc": "The leader of the freelancer mercenary team. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 1,
|
||||
"tags": ["Response Teams"],
|
||||
"spawnpoints": ["ERTSpawn"]
|
||||
},
|
||||
"mercr": {
|
||||
"name": "Mercenary Responder",
|
||||
"desc": "Rank and file of a freelancer mercenary team. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 2,
|
||||
"tags": ["Response Teams"],
|
||||
"spawnpoints": ["ERTSpawn"]
|
||||
},
|
||||
"ntmed": {
|
||||
"name": "Nanotrasen Medical Specialist",
|
||||
"desc": "A medical specialist of the Nanotrasen Phoenix ERT. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 1,
|
||||
"tags": ["Response Teams"],
|
||||
"spawnpoints": ["NTERTSpawn"]
|
||||
},
|
||||
"nteng": {
|
||||
"name": "Nanotrasen Engineering Specialist",
|
||||
"desc": "An engineering specialist of the Nanotrasen Phoenix ERT. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 1,
|
||||
"tags": ["Response Teams"],
|
||||
"spawnpoints": ["NTERTSpawn"]
|
||||
},
|
||||
"ntlead": {
|
||||
"name": "Nanotrasen Leader",
|
||||
"desc": "The leader of the Nanotrasen Phoenix ERT. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 1,
|
||||
"tags": ["Response Teams"],
|
||||
"spawnpoints": ["NTERTSpawn"]
|
||||
},
|
||||
"ntert": {
|
||||
"name": "Nanotrasen Responder",
|
||||
"desc": "A responder of the Nanotrasen Phoenix ERT. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 2,
|
||||
"tags": ["Response Teams"],
|
||||
"spawnpoints": ["NTERTSpawn"]
|
||||
},
|
||||
"syndl": {
|
||||
"name": "Syndicate Commando Leader",
|
||||
"desc": "The leader of the Syndicate's elite commandos. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 1,
|
||||
"tags": ["Response Teams"],
|
||||
"spawnpoints": ["SyndERTSpawn"]
|
||||
},
|
||||
"syndc": {
|
||||
"name": "Syndicate Commando",
|
||||
"desc": "Well-equipped commandos of the criminal Syndicate. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 3,
|
||||
"tags": ["Response Teams"],
|
||||
"spawnpoints": ["SyndERTSpawn"]
|
||||
},
|
||||
"tcfls": {
|
||||
"name": "TCFL Legionnaire",
|
||||
"desc": "An experienced Legionnaire of the TCFL. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 2,
|
||||
"tags": ["Response Teams"],
|
||||
"spawnpoints": ["TCFLERTSpawn"]
|
||||
},
|
||||
"tcfll": {
|
||||
"name": "TCFL Prefect",
|
||||
"desc": "A leader of Task Force XIII - Fortune. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 1,
|
||||
"tags": ["Response Teams"],
|
||||
"spawnpoints": ["TCFLERTSpawn - Prefect"]
|
||||
},
|
||||
"tcflpl": {
|
||||
"name": "TCFL Dropship Pilot",
|
||||
"desc": "A dropship pilot of the TCFL. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 1,
|
||||
"tags": ["Response Teams"],
|
||||
"spawnpoints": ["TCFLERTSpawn - Pilot"]
|
||||
},
|
||||
"tcflr": {
|
||||
"name": "TCFL Volunteer",
|
||||
"desc": "The Tau Ceti Foreign Legion's rank and file. (This spawner is not enabled.)",
|
||||
"cant_spawn": "This spawner is not enabled.",
|
||||
"can_edit": 1,
|
||||
"enabled": 0,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 3,
|
||||
"tags": ["Response Teams"],
|
||||
"spawnpoints": ["TCFLERTSpawn"]
|
||||
},
|
||||
"maintdrone": {
|
||||
"name": "Maintenance Drone",
|
||||
"desc": "Maintain and Improve the Systems on the Aurora.",
|
||||
"cant_spawn": 0,
|
||||
"can_edit": 1,
|
||||
"enabled": 1,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 0,
|
||||
"tags": ["Simple Mobs"],
|
||||
"spawnpoints": ["the plating", "the plating"]
|
||||
},
|
||||
"rat": {
|
||||
"name": "Rat",
|
||||
"desc": "Join as a Rat on the aurora, a common nuisance to the crew.",
|
||||
"cant_spawn": 0,
|
||||
"can_edit": 1,
|
||||
"enabled": 1,
|
||||
"count": 0,
|
||||
"spawnatoms": 0,
|
||||
"max_count": 0,
|
||||
"tags": ["Simple Mobs"],
|
||||
"spawnpoints": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"assets": [],
|
||||
"active": "misc-ghostspawner",
|
||||
"uiref": "[0x0]",
|
||||
"status": 2,
|
||||
"title": "Ghost Role Spawner",
|
||||
"wtime": 0,
|
||||
"debug": 1,
|
||||
"roundstart_hour": 15
|
||||
}
|
||||
}
|
||||
201
vueui/tests/join meniu.json
Normal file
201
vueui/tests/join meniu.json
Normal file
@@ -0,0 +1,201 @@
|
||||
{
|
||||
"size": [330, 720],
|
||||
"data": {
|
||||
"state": {
|
||||
"round_duration": "01:14",
|
||||
"alert_level": "Green",
|
||||
"character_name": "Hadriana Antonia",
|
||||
"shuttle_status": "",
|
||||
"unique_role_available": 0,
|
||||
"jobs_available": 27,
|
||||
"jobs_list": {
|
||||
"Command": [],
|
||||
"Security": {
|
||||
"Warden": {
|
||||
"title": "Warden",
|
||||
"head": 0,
|
||||
"total_positions": 1,
|
||||
"current_positions": 0
|
||||
},
|
||||
"Detective": {
|
||||
"title": "Detective",
|
||||
"head": 0,
|
||||
"total_positions": 1,
|
||||
"current_positions": 0
|
||||
},
|
||||
"Security Officer": {
|
||||
"title": "Security Officer",
|
||||
"head": 0,
|
||||
"total_positions": 4,
|
||||
"current_positions": 1
|
||||
},
|
||||
"Security Cadet": {
|
||||
"title": "Security Cadet",
|
||||
"head": 0,
|
||||
"total_positions": 2,
|
||||
"current_positions": 0
|
||||
}
|
||||
},
|
||||
"Engineering": {
|
||||
"Station Engineer": {
|
||||
"title": "Station Engineer",
|
||||
"head": 0,
|
||||
"total_positions": 5,
|
||||
"current_positions": 3
|
||||
},
|
||||
"Atmospheric Technician": {
|
||||
"title": "Atmospheric Technician",
|
||||
"head": 0,
|
||||
"total_positions": 3,
|
||||
"current_positions": 0
|
||||
},
|
||||
"Engineering Apprentice": {
|
||||
"title": "Engineering Apprentice",
|
||||
"head": 0,
|
||||
"total_positions": 3,
|
||||
"current_positions": 0
|
||||
}
|
||||
},
|
||||
"Medical": {
|
||||
"Physician": {
|
||||
"title": "Physician",
|
||||
"head": 0,
|
||||
"total_positions": 4,
|
||||
"current_positions": 1
|
||||
},
|
||||
"Pharmacist": {
|
||||
"title": "Pharmacist",
|
||||
"head": 0,
|
||||
"total_positions": 2,
|
||||
"current_positions": 1
|
||||
},
|
||||
"First Responder": {
|
||||
"title": "First Responder",
|
||||
"head": 0,
|
||||
"total_positions": 2,
|
||||
"current_positions": 1
|
||||
},
|
||||
"Medical Intern": {
|
||||
"title": "Medical Intern",
|
||||
"head": 0,
|
||||
"total_positions": 3,
|
||||
"current_positions": 1
|
||||
}
|
||||
},
|
||||
"Science": {
|
||||
"Roboticist": {
|
||||
"title": "Roboticist",
|
||||
"head": 0,
|
||||
"total_positions": 2,
|
||||
"current_positions": 1
|
||||
},
|
||||
"Lab Assistant": {
|
||||
"title": "Lab Assistant",
|
||||
"head": 0,
|
||||
"total_positions": 3,
|
||||
"current_positions": 0
|
||||
}
|
||||
},
|
||||
"Cargo": {
|
||||
"Quartermaster": {
|
||||
"title": "Quartermaster",
|
||||
"head": 1,
|
||||
"total_positions": 1,
|
||||
"current_positions": 0
|
||||
},
|
||||
"Cargo Technician": {
|
||||
"title": "Cargo Technician",
|
||||
"head": 0,
|
||||
"total_positions": 4,
|
||||
"current_positions": 1
|
||||
},
|
||||
"Shaft Miner": {
|
||||
"title": "Shaft Miner",
|
||||
"head": 0,
|
||||
"total_positions": 4,
|
||||
"current_positions": 1
|
||||
}
|
||||
},
|
||||
"Civilian": {
|
||||
"Assistant": {
|
||||
"title": "Assistant",
|
||||
"head": 0,
|
||||
"total_positions": -1,
|
||||
"current_positions": 0
|
||||
},
|
||||
"Visitor": {
|
||||
"title": "Visitor",
|
||||
"head": 0,
|
||||
"total_positions": -1,
|
||||
"current_positions": 0
|
||||
},
|
||||
"Bartender": {
|
||||
"title": "Bartender",
|
||||
"head": 0,
|
||||
"total_positions": 2,
|
||||
"current_positions": 0
|
||||
},
|
||||
"Chef": {
|
||||
"title": "Chef",
|
||||
"head": 0,
|
||||
"total_positions": 2,
|
||||
"current_positions": 1
|
||||
},
|
||||
"Gardener": {
|
||||
"title": "Gardener",
|
||||
"head": 0,
|
||||
"total_positions": 2,
|
||||
"current_positions": 0
|
||||
},
|
||||
"Janitor": {
|
||||
"title": "Janitor",
|
||||
"head": 0,
|
||||
"total_positions": 2,
|
||||
"current_positions": 0
|
||||
},
|
||||
"Corporate Reporter": {
|
||||
"title": "Corporate Reporter",
|
||||
"head": 0,
|
||||
"total_positions": 1,
|
||||
"current_positions": 0
|
||||
},
|
||||
"Librarian": {
|
||||
"title": "Librarian",
|
||||
"head": 0,
|
||||
"total_positions": 1,
|
||||
"current_positions": 0
|
||||
},
|
||||
"Chaplain": {
|
||||
"title": "Chaplain",
|
||||
"head": 0,
|
||||
"total_positions": 1,
|
||||
"current_positions": 0
|
||||
}
|
||||
},
|
||||
"Equipment": {
|
||||
"AI": {
|
||||
"title": "AI",
|
||||
"head": 1,
|
||||
"total_positions": 1,
|
||||
"current_positions": 0
|
||||
},
|
||||
"Cyborg": {
|
||||
"title": "Cyborg",
|
||||
"head": 0,
|
||||
"total_positions": 2,
|
||||
"current_positions": 0
|
||||
}
|
||||
},
|
||||
"Miscellaneous": []
|
||||
}
|
||||
},
|
||||
"assets": { "character": { "ref": "0x0" } },
|
||||
"active": "late-choices",
|
||||
"uiref": "[0x0]",
|
||||
"status": 2,
|
||||
"title": "Late-Join Choices",
|
||||
"wtime": 0,
|
||||
"debug": 0,
|
||||
"roundstart_hour": 11
|
||||
}
|
||||
}
|
||||
165
vueui/tests/manifest.json
Normal file
165
vueui/tests/manifest.json
Normal file
@@ -0,0 +1,165 @@
|
||||
{
|
||||
"size": [580, 700],
|
||||
"data": {
|
||||
"state": {
|
||||
"manifest": {
|
||||
"Command": [
|
||||
{
|
||||
"name": "Xiao Zemin",
|
||||
"rank": "Research Director",
|
||||
"active": "Active",
|
||||
"head": 0
|
||||
}
|
||||
],
|
||||
"Security": [
|
||||
{
|
||||
"name": "Idus Martiae",
|
||||
"rank": "Forensic Technician",
|
||||
"active": "Active",
|
||||
"head": 0
|
||||
},
|
||||
{
|
||||
"name": "Ronald Monday",
|
||||
"rank": "Security Officer",
|
||||
"active": "Active",
|
||||
"head": 0
|
||||
}
|
||||
],
|
||||
"Engineering": [
|
||||
{
|
||||
"name": "Yeva Petrova",
|
||||
"rank": "Station Engineer",
|
||||
"active": "Active",
|
||||
"head": 0
|
||||
},
|
||||
{
|
||||
"name": "Valetzrhonaja Nayrragh'Rakhan",
|
||||
"rank": "Station Engineer",
|
||||
"active": "Active",
|
||||
"head": 0
|
||||
},
|
||||
{
|
||||
"name": "Julian Chet",
|
||||
"rank": "Station Engineer",
|
||||
"active": "Active",
|
||||
"head": 0
|
||||
}
|
||||
],
|
||||
"Medical": [
|
||||
{
|
||||
"name": "Odessa Arenth",
|
||||
"rank": "Medical Intern",
|
||||
"active": "Active",
|
||||
"head": 0
|
||||
},
|
||||
{
|
||||
"name": "Sanaa Al-Mansoor",
|
||||
"rank": "Physician",
|
||||
"active": "Active",
|
||||
"head": 0
|
||||
},
|
||||
{
|
||||
"name": "Imari Mneme",
|
||||
"rank": "First Responder",
|
||||
"active": "Active",
|
||||
"head": 0
|
||||
},
|
||||
{
|
||||
"name": "Jared Looper",
|
||||
"rank": "Pharmacist",
|
||||
"active": "Active",
|
||||
"head": 0
|
||||
},
|
||||
{
|
||||
"name": "Eric Foster",
|
||||
"rank": "Surgeon",
|
||||
"active": "Active",
|
||||
"head": 0
|
||||
}
|
||||
],
|
||||
"Science": [
|
||||
{
|
||||
"name": "Xiao Zemin",
|
||||
"rank": "Research Director",
|
||||
"active": "Active",
|
||||
"head": 1
|
||||
},
|
||||
{
|
||||
"name": "Sezrak Han'San",
|
||||
"rank": "Anomalist",
|
||||
"active": "Active",
|
||||
"head": 0
|
||||
},
|
||||
{
|
||||
"name": "Astra Zemin",
|
||||
"rank": "Xenobotanist",
|
||||
"active": "Active",
|
||||
"head": 0
|
||||
},
|
||||
{
|
||||
"name": "Tavarr Batov",
|
||||
"rank": "Scientist",
|
||||
"active": "Active",
|
||||
"head": 0
|
||||
},
|
||||
{
|
||||
"name": "Sam Chalegre",
|
||||
"rank": "Roboticist",
|
||||
"active": "Active",
|
||||
"head": 0
|
||||
},
|
||||
{
|
||||
"name": "Jack Monroe",
|
||||
"rank": "Anomalist",
|
||||
"active": "Active",
|
||||
"head": 0
|
||||
},
|
||||
{
|
||||
"name": "Zeya Zemphir",
|
||||
"rank": "Xenobiologist",
|
||||
"active": "Active",
|
||||
"head": 0
|
||||
}
|
||||
],
|
||||
"Cargo": [
|
||||
{
|
||||
"name": "Safaa Sadar",
|
||||
"rank": "Cargo Technician",
|
||||
"active": "Active",
|
||||
"head": 0
|
||||
},
|
||||
{
|
||||
"name": "Joe Harry",
|
||||
"rank": "Shaft Miner",
|
||||
"active": "Active",
|
||||
"head": 0
|
||||
},
|
||||
{
|
||||
"name": "To Arrange The Gifts Of Those Above",
|
||||
"rank": "Cargo Technician",
|
||||
"active": "Active",
|
||||
"head": 0
|
||||
}
|
||||
],
|
||||
"Civilian": [
|
||||
{
|
||||
"name": "Huey Richter",
|
||||
"rank": "Chef",
|
||||
"active": "Active",
|
||||
"head": 0
|
||||
}
|
||||
],
|
||||
"Equipment": [],
|
||||
"Miscellaneous": []
|
||||
}
|
||||
},
|
||||
"assets": [],
|
||||
"active": "manifest",
|
||||
"uiref": "[0x0]",
|
||||
"status": 2,
|
||||
"title": "Crew Manifest",
|
||||
"wtime": 0,
|
||||
"debug": 0,
|
||||
"roundstart_hour": 11
|
||||
}
|
||||
}
|
||||
25
vueui/tests/vote.json
Normal file
25
vueui/tests/vote.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"size": [400, 500],
|
||||
"data": {
|
||||
"state": {
|
||||
"choices": [],
|
||||
"mode": null,
|
||||
"voted": null,
|
||||
"endtime": 1894,
|
||||
"allow_vote_restart": 1,
|
||||
"allow_vote_mode": 0,
|
||||
"allow_extra_antags": 0,
|
||||
"question": "",
|
||||
"is_code_red": 0,
|
||||
"isstaff": 0
|
||||
},
|
||||
"assets": [],
|
||||
"active": "misc-voting",
|
||||
"uiref": "[0x0]",
|
||||
"status": 2,
|
||||
"title": "Voting panel",
|
||||
"wtime": 0,
|
||||
"debug": 0,
|
||||
"roundstart_hour": 11
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user