Modding:Mod compatibility/barchart: Difference between revisions
Appearance
imported>Pathoschild create page |
imported>Peaw mNo edit summary |
||
| (18 intermediate revisions by 3 users not shown) | |||
| Line 1: | Line 1: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
| <div style="display: inline-block; width: {{#expr:{{{ok|0}}} * | | <div style="display: inline-block; width: {{#expr:(({{{ok|0}}} + {{{workaround|0}}}) / {{{total|<noinclude>1</noinclude>0}}}) * 200}}px; background: #9F9;"> </div> | ||
| {{{ok}}}% are compatible. | | {{#expr:(({{{ok|0}}} + {{{workaround|0}}}) / {{{total|<noinclude>1</noinclude>0}}}) * 100 round 0}}% are compatible or have a working alternative. | ||
|- | |- | ||
| <div style="display: inline-block; width: {{#expr:{{{ | | <div style="display: inline-block; width: {{#expr:({{{soon|0}}} / {{{total|<noinclude>1</noinclude>0}}}) * 200}}px; background: #FF9;"> </div> | ||
| {{{ | | {{#expr:({{{soon|0}}} / {{{total|<noinclude>1</noinclude>0}}}) * 100 round 0}}% have an update coming soon. | ||
|- | |- | ||
| <div style="display: inline-block; width: {{#expr:{{{ | | <div style="display: inline-block; width: {{#expr:({{{broken|0}}} / {{{total|<noinclude>1</noinclude>0}}}) * 200}}px; background: #F99;"> </div> | ||
| | | {{#expr:({{{broken|0}}} / {{{total|<noinclude>1</noinclude>0}}}) * 100 round 0}}% are broken and not open-source.¹ | ||
|} | |||
<small>¹ Many of these broke due to a Stardew Valley update. Some may be updated by their authors later.</small><noinclude> | |||
==Usage== | ==Usage== | ||
List the | List the counts for each group: | ||
<pre> | <pre> | ||
{{/barchart | {{/barchart | ||
|ok = | |ok = 135 | ||
|workaround = | |workaround = 33 | ||
|soon = | |soon = 56 | ||
|broken = | |broken = 33 | ||
|total = 257 | |||
}} | }} | ||
</pre> | </pre> | ||
[[Category:Modding]]</noinclude> | ==Script== | ||
This script generates the template call when run from the parent page. | |||
<syntaxhighlight lang="javascript"> | |||
(function() { | |||
// group mods by status | |||
let counts = { ok: 0, workaround: 0, soon: 0, broken: 0, total: 0 }; | |||
let invalidMods = []; | |||
$("#mod-list .mod").each(function(i, entry) { | |||
entry = $(entry); | |||
let status = entry.attr("data-beta-status") || entry.attr("data-status"); | |||
let hasSource = entry.is("[data-github], [data-custom-source]"); | |||
switch(status) { | |||
// ignore obsolete mods | |||
case "abandoned": | |||
case "obsolete": | |||
break; | |||
// compatible | |||
case "ok": | |||
case "optional": | |||
counts.ok++; | |||
counts.total++; | |||
break; | |||
// workaround | |||
case "workaround": | |||
case "unofficial": | |||
counts.workaround++; | |||
counts.total++; | |||
break; | |||
// soon/broken | |||
case "broken": | |||
if (hasSource) | |||
counts.soon++; | |||
else | |||
counts.broken++; | |||
counts.total++; | |||
break; | |||
default: | |||
invalidMods.push(mods); | |||
break; | |||
} | |||
}); | |||
// show results | |||
if (invalidMods.length) { | |||
console.log("found entries with unknown status:", invalidMods); | |||
throw 'script failed'; | |||
} | |||
console.log(` | |||
{{/barchart | |||
|ok = ${counts.ok} | |||
|workaround = ${counts.workaround} | |||
|soon = ${counts.soon} | |||
|broken = ${counts.broken} | |||
|total = ${counts.total} | |||
}} | |||
`.replace(/^ /mg, '')); | |||
})(); | |||
</syntaxhighlight> | |||
[[Category:Modding]] | |||
[[de:Modding:SMAPI Kompatibilität/barchart]] | |||
[[tr:Modlama:Mod Uyumluluğu/barchart]] | |||
</noinclude> | |||
Latest revision as of 12:29, 12 July 2024
| 0% are compatible or have a working alternative. | |
| 0% have an update coming soon. | |
| 0% are broken and not open-source.¹ |
¹ Many of these broke due to a Stardew Valley update. Some may be updated by their authors later.
Usage
List the counts for each group:
{{/barchart
|ok = 135
|workaround = 33
|soon = 56
|broken = 33
|total = 257
}}
Script
This script generates the template call when run from the parent page.
(function() {
// group mods by status
let counts = { ok: 0, workaround: 0, soon: 0, broken: 0, total: 0 };
let invalidMods = [];
$("#mod-list .mod").each(function(i, entry) {
entry = $(entry);
let status = entry.attr("data-beta-status") || entry.attr("data-status");
let hasSource = entry.is("[data-github], [data-custom-source]");
switch(status) {
// ignore obsolete mods
case "abandoned":
case "obsolete":
break;
// compatible
case "ok":
case "optional":
counts.ok++;
counts.total++;
break;
// workaround
case "workaround":
case "unofficial":
counts.workaround++;
counts.total++;
break;
// soon/broken
case "broken":
if (hasSource)
counts.soon++;
else
counts.broken++;
counts.total++;
break;
default:
invalidMods.push(mods);
break;
}
});
// show results
if (invalidMods.length) {
console.log("found entries with unknown status:", invalidMods);
throw 'script failed';
}
console.log(`
{{/barchart
|ok = ${counts.ok}
|workaround = ${counts.workaround}
|soon = ${counts.soon}
|broken = ${counts.broken}
|total = ${counts.total}
}}
`.replace(/^ /mg, ''));
})();