Changes in src/services/guardianship/gated.js [792af53:d56d471] in Klonkt
- File:
-
- 1 edited
-
src/services/guardianship/gated.js (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/services/guardianship/gated.js
r792af53 rd56d471 60 60 'shaer:externalPlayback': 'external_playback', 61 61 }; 62 /**63 * De gates die deze Klonkt kent, met hun SOORT.64 *65 * Wat gated wordt is een ontwerpkeuze van de implementatie: de FEP levert het66 * mechanisme (voorstel, tally, settle) en een paar voorbeelden, niet de lijst.67 * Deze catalogus is die lijst, op een plek. Een gate erbij hoort een regel data68 * te zijn en geen nieuw stuk scherm.69 *70 * `kind` is niet decoratief. De gates verschillen in hoe ze werken en dat mag71 * een guardian niet hoeven raden:72 *73 * setting een stand, aan of uit, terug te draaien74 * perRequest geen stand maar een stroom beslissingen (5.3 volgverzoeken)75 * handover draagt gezag OVER; onomkeerbaar zodra de ward hem gebruikt76 *77 * `needs` is de trap uit shaer-ahy: zien < afspelen. Je kunt niet afspelen wat78 * je niet mag zien, dus dat tweede is pas te bewegen als het eerste openstaat.79 */80 export const GATE_CATALOGUE = [81 { feature: 'shaer:externalEmbeds', kind: 'setting', reversible: true },82 { feature: 'shaer:externalPlayback', kind: 'setting', reversible: true, needs: 'shaer:externalEmbeds' },83 // Altijd aan voor een ward (5.3): niet te verzetten, wel te tonen. Een paneel84 // dat alleen verstelbare dingen laat zien verzwijgt de helft van wat er geldt.85 { feature: 'shaer:follows', kind: 'perRequest', reversible: true, fixed: true },86 ];87 88 /**89 * De gates van een ward als rijen voor het paneel. Puur, zodat de regels90 * getoetst kunnen worden zonder database of scherm.91 *92 * @param settings {feature: true|false|null} -- null is ONBEKEND, niet uit93 * @param guardianCount aantal guardians, of null als we het niet weten94 * @param proposals [{feature, value, status}] lopende voorstellen95 * @param waiting {feature: aantal} wat er per gate op een besluit wacht96 */97 export function gateRows({ settings = {}, guardianCount = null, proposals = [], waiting = {} } = {}) {98 return GATE_CATALOGUE.map((g) => {99 const value = Object.prototype.hasOwnProperty.call(settings, g.feature) ? settings[g.feature] : null;100 // De trap: het bovenliggende moet OPEN staan. Onbekend telt niet als dicht --101 // bij een ward elders kennen we de stand niet, en verbergen betekende daar102 // ooit dat een voorstel nooit geopend kon worden.103 const blockedBy = g.needs && settings[g.needs] === false ? g.needs : null;104 return {105 feature: g.feature,106 kind: g.kind,107 reversible: !!g.reversible,108 value,109 // Vast staat vast: tonen mag, verzetten niet.110 adjustable: !g.fixed && !blockedBy,111 blockedBy: blockedBy || undefined,112 // Zonder bekend aantal guardians GEEN drempel verzinnen. Nul of een gok113 // leest als een feit, en dit is precies waar een guardian op afgaat.114 threshold: (guardianCount && guardianCount > 0)115 ? { need: thresholdFor(guardianCount), of: guardianCount } : null,116 proposal: proposals.find((p) => p.feature === g.feature) || undefined,117 waiting: waiting[g.feature] || undefined,118 };119 });120 }121 122 62 export function featureColumn(feature) { 123 63 return Object.prototype.hasOwnProperty.call(FEATURES, feature) ? FEATURES[feature] : null; … … 299 239 300 240 export default { 301 GATE_CATALOGUE, gateRows,302 241 tallyGatedSetting, thresholdFor, featureColumn, recordGatedVote, gatedProgress, GATED_WINDOW_MS, 303 242 parseGatedSetting, buildGatedOffer, rememberGatedOffer, recallGatedOffer,
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)