eco2d/flecs-dash/etc/apps/systems/system.js

49 lines
1.6 KiB
JavaScript
Raw Normal View History

2021-01-18 16:40:47 +00:00
Vue.component('system', {
props: ['tick', 'system', 'system_time'],
methods: {
entity_count() {
return this.system.current.matched_entity_count;
},
table_count() {
return this.system.current.matched_table_count;
},
fragmentation() {
return (((this.table_count() - 1) / this.entity_count()) * 100).toFixed(1) + "%";
},
percentage() {
return (this.system.current.time_spent / this.system_time) * 100;
},
percentage_class() {
let pct = this.percentage();
if (pct < 1.0) {
return "system-lowest";
} else if (pct < 5.0) {
return "system-low";
} else if (pct < 10.0) {
return "system-medium";
} else if (pct < 20.0) {
return "system-high";
} else {
return "system-highest";
}
}
},
template: `
<div>
<div :class="'system ' + percentage_class()">
<div class="system-header">
{{system.name}}
<span class="system-module" v-if="system.module">{{system.module}}</span>
<span class="system-metrics" v-if="entity_count()">T:{{table_count()}} - F:{{fragmentation()}}</span>
<system-time-graph :system="system" :system_time="system_time" :percentage="percentage()" :tick="tick"></system-time-graph>
</div>
</div>
<div :class="'system-query ' + percentage_class()">
<system-component v-for="(component, i) in system.signature" :component="component" :key="i"></system-component>
<system-entity-graph :system="system" :tick="tick"></system-entity-graph>
</div>
</div>`
});