diff --git a/devTools/types/FC/gameState.d.ts b/devTools/types/FC/gameState.d.ts index fb42f6230fca72cf6cb4de7cce273e89d8b4fb78..b28d13f53d15424cab78f1c43c2367ceefad9a4b 100644 --- a/devTools/types/FC/gameState.d.ts +++ b/devTools/types/FC/gameState.d.ts @@ -93,6 +93,13 @@ declare namespace FC { training: HeadGirlTraining; } + export interface ReminderEntry { + message: string | Node; + week: number; + category: string; + slaveID?: number; + } + /** * These variables shall not be in the game state and there is a hope they will be exterminated in the future */ diff --git a/js/002-config/fc-js-init.js b/js/002-config/fc-js-init.js index 326ce62de2af6fb1f208ef236edfa4db51b1c089..94fe0fe8421d8941373c60f387f9365ed75798c2 100644 --- a/js/002-config/fc-js-init.js +++ b/js/002-config/fc-js-init.js @@ -60,7 +60,6 @@ App.Medicine.OrganFarm = {}; App.Medicine.Salon = {}; App.Medicine.Surgery = {}; App.RA = {}; -App.Reminders = {}; App.SF = {}; App.SecExp = {}; App.SlaveAssignment = {}; diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js index 1adec9668749525c974833a84182060d9eca2ab8..e1cebc9bf31f26d2c27a825565e79546585b189a 100644 --- a/js/003-data/gameVariableData.js +++ b/js/003-data/gameVariableData.js @@ -482,6 +482,7 @@ App.Data.resetOnNGPlus = { /** @type {FC.SlaveStateOrZero} */ activeSlave: 0, activeChild: 0, + /** @type {Array<FC.ReminderEntry>} */ reminders: [], /** @type {FC.SlaveStateOrZero} */ diff --git a/src/Mods/Reminder/reminder.js b/src/Mods/Reminder/reminder.js index 1112e9fc965bf266277193da6b82608463820b2d..3604b896ed8257bc5815d13355e61511de10aef3 100644 --- a/src/Mods/Reminder/reminder.js +++ b/src/Mods/Reminder/reminder.js @@ -1,11 +1,12 @@ App.Reminders = (function() { - const fullDisplayDiv = document.createElement("div"); + const displayDiv = document.createElement("div"); const addDiv = document.createElement("div"); return { add: add, list: list, - addField: addField, fullDisplay: fullDisplay, + slaveDisplay: slaveDisplay, + slaveLink: slaveLink, dialog: dialog, }; @@ -13,12 +14,16 @@ App.Reminders = (function() { * @param {string|Node} message * @param {number} week * @param {string} [category] + * @param {number} [slaveID] */ - function add(message, week, category = "manual") { + function add(message, week, category = "manual", slaveID = 0) { if (message === "" || message === null) { return; } const entry = {message: message, week: week, category: category}; + if (slaveID) { + entry.slaveID = slaveID; + } // V.reminders is sorted by week from low to high, we insert at the correct place so it remains sorted. const index = V.reminders.findIndex(e => e.week >= week); @@ -32,29 +37,28 @@ App.Reminders = (function() { /** * @param {Object} [obj] * @param {number} [obj.maxFuture] how far into the future should reminders be displayed. - * @param {string} [obj.category] - * @param {boolean} [obj.link] show link to managePersonalAffairs.tw + * @param {function(FC.ReminderEntry):boolean} [obj.filter] + * @param {boolean} [obj.link] permit passage links * @returns {HTMLSpanElement|DocumentFragment} */ - function list({maxFuture = Number.POSITIVE_INFINITY, category = "all", link = false} = {}) { + function list({maxFuture = Number.POSITIVE_INFINITY, filter = null, link = false} = {}) { if (V.reminders.length === 0) { return document.createDocumentFragment(); } - /** - * @param {string} c - * @returns {boolean} - */ - const includedCategory = category === "all" ? () => true : c => c === category; + if (!filter) { + filter = () => true; + } - const replace = () => App.UI.DOM.replace("#reminder-list", list({ + const outerSpan = document.createElement("span"); + + const replace = () => App.UI.DOM.replace(outerSpan, list({ maxFuture: maxFuture, - category: category, - link: link + filter: filter })); /** - * @param {{}} entry + * @param {FC.ReminderEntry} entry */ function clearEntry(entry) { V.reminders.splice(V.reminders.indexOf(entry), 1); @@ -63,21 +67,19 @@ App.Reminders = (function() { // We only want to remove visible entries function clearOverdue() { - V.reminders = V.reminders.filter(e => e.week >= V.week || e.week > V.week + maxFuture || !includedCategory(e.category)); + V.reminders = V.reminders.filter(e => e.week >= V.week || e.week > V.week + maxFuture || !filter(e)); replace(); } function clearAll() { - V.reminders = V.reminders.filter(e => e.week > V.week + maxFuture || !includedCategory(e.category)); + V.reminders = V.reminders.filter(e => e.week > V.week + maxFuture || !filter(e)); replace(); } - let outerSpan = document.createElement("span"); - outerSpan.id = "reminder-list"; - - let overdue = 0, any = false; + let overdue = 0; + let any = false; - V.reminders.filter(e => e.week <= V.week + maxFuture && includedCategory(e.category)) + V.reminders.filter(e => e.week <= V.week + maxFuture && filter(e)) .forEach(entry => { any = true; let week; @@ -96,9 +98,12 @@ App.Reminders = (function() { week = `in ${numberWithPluralOne(entry.week - V.week, 'week')}`; } const div = document.createElement("div"); - div.append(entry.message, - " ", App.UI.DOM.makeElement("span", week.toString(), classes), - " ", App.UI.DOM.link("Clear", clearEntry, [entry])); + div.append(entry.message, " ", App.UI.DOM.makeElement("span", week.toString(), classes)); + const slave = getSlave(entry.slaveID); + if (slave) { + div.append(" (for ", link ? App.UI.DOM.passageLink(SlaveFullName(slave), "Slave Interact", () => V.AS = slave.ID) : SlaveFullName(slave), ")"); + } + div.append(" ", App.UI.DOM.link("Clear", clearEntry, [entry])); outerSpan.append(div); }); @@ -113,9 +118,12 @@ App.Reminders = (function() { } /** + * @param {function():void} refresh + * @param {string} [category] + * @param {number} [slaveID] * @returns {HTMLDivElement} */ - function addField() { + function addField(refresh, category, slaveID) { jQuery(addDiv).empty(); let entry = ""; @@ -125,9 +133,9 @@ App.Reminders = (function() { App.UI.DOM.makeTextBox("", v => { entry = v; }), " in ", App.UI.DOM.makeTextBox(0, v => { week = v; }, true), " weeks.", " ", App.UI.DOM.link("Add", () => { - add(entry, V.week + week); - fullDisplay(); - jQuery(addDiv).append(addField()); + add(entry, V.week + week, category, slaveID); + refresh(); + jQuery(addDiv).append(addField(refresh, category, slaveID)); }) ); @@ -135,29 +143,63 @@ App.Reminders = (function() { } /** + * @param {boolean} [link=false] show passage links * @returns {HTMLElement} */ - function fullDisplay() { - jQuery(fullDisplayDiv).empty(); - fullDisplayDiv.append(App.UI.DOM.makeElement("h2", "Reminders")); + function fullDisplay(link) { + jQuery(displayDiv).empty(); + displayDiv.append(App.UI.DOM.makeElement("h2", "Reminders")); - const listEl = list(); + const listEl = list({link}); if (listEl !== null) { - fullDisplayDiv.append(App.UI.DOM.makeElement("p", listEl, "indent")); + displayDiv.append(App.UI.DOM.makeElement("p", listEl, "indent")); } - fullDisplayDiv.append(App.UI.DOM.makeElement("h3", "Add new")); - fullDisplayDiv.append(App.UI.DOM.makeElement("p", addField())); + displayDiv.append(App.UI.DOM.makeElement("h3", "Add new")); + displayDiv.append(App.UI.DOM.makeElement("p", addField(() => fullDisplay(link)))); - return fullDisplayDiv; + return displayDiv; } - function dialog() { + /** + * @param {number} slaveID + * @returns {HTMLElement} + */ + function slaveDisplay(slaveID) { + jQuery(displayDiv).empty(); + displayDiv.append(App.UI.DOM.makeElement("h2", `Reminders for ${SlaveFullName(getSlave(slaveID))}`)); + + const listEl = list({filter: e => e.slaveID === slaveID}); + if (listEl !== null) { + displayDiv.append(App.UI.DOM.makeElement("p", listEl, "indent")); + } + + displayDiv.append(App.UI.DOM.makeElement("h3", "Add new")); + displayDiv.append(App.UI.DOM.makeElement("p", addField(() => slaveDisplay(slaveID), "slave", slaveID))); + + return displayDiv; + } + + /** + * @param {number} slaveID + * @returns {HTMLElement} + */ + function slaveLink(slaveID) { + return App.UI.DOM.link(String.fromCharCode(0x23f0), () => { + dialog(slaveID); + }); + } + + /** + * @param {number} [slaveID] + */ + function dialog(slaveID) { if (Dialog.isOpen()) { Dialog.close(); } Dialog.setup("Reminders", "reminders"); - $(Dialog.body()).empty().append(fullDisplay()); + const showLinks = Story.lookup("tags", "jump-from-safe").some(x => x.title === passage()); + $(Dialog.body()).empty().append(slaveID ? slaveDisplay(slaveID) : fullDisplay(showLinks)); Dialog.open(); } })(); diff --git a/src/endWeek/reports/arcadeReport.js b/src/endWeek/reports/arcadeReport.js index 3f1826394cbebf663845e46603aeba8b626583ff..86bf873ce2d12ff2cfdc5e2524ac597a777e43a3 100644 --- a/src/endWeek/reports/arcadeReport.js +++ b/src/endWeek/reports/arcadeReport.js @@ -83,7 +83,7 @@ App.EndWeek.arcadeReport = function() { const {He} = getPronouns(slave); const slaveEntry = App.UI.DOM.appendNewElement("div", el, '', "slave-report"); App.SlaveAssignment.appendSlaveArt(slaveEntry, slave); - slaveEntry.append(App.UI.favoriteToggle(slave), " "); + App.SlaveAssignment.appendSlaveLinks(slaveEntry, slave); r = []; r.push(App.UI.DOM.makeElement("span", SlaveFullName(slave), "slave-name")); if (slave.choosesOwnAssignment === 2) { diff --git a/src/endWeek/reports/brothelReport.js b/src/endWeek/reports/brothelReport.js index 0137e618c46ccc644f300b0d321f9da71c341672..f984c14f4b80ec9207951a27fd28f72f62fa12f8 100644 --- a/src/endWeek/reports/brothelReport.js +++ b/src/endWeek/reports/brothelReport.js @@ -267,7 +267,7 @@ App.EndWeek.brothelReport = function() { if (V.showEWD !== 0) { const madamEntry = App.UI.DOM.appendNewElement("div", el, '', "slave-report"); App.SlaveAssignment.appendSlaveArt(madamEntry, madam); - madamEntry.append(App.UI.favoriteToggle(madam), " "); + App.SlaveAssignment.appendSlaveLinks(madamEntry, madam); App.Events.addNode( madamEntry, [ @@ -339,7 +339,7 @@ App.EndWeek.brothelReport = function() { const {He} = getPronouns(slave); const slaveEntry = App.UI.DOM.appendNewElement("div", el, '', "slave-report"); App.SlaveAssignment.appendSlaveArt(slaveEntry, slave); - slaveEntry.append(App.UI.favoriteToggle(slave), " "); + App.SlaveAssignment.appendSlaveLinks(slaveEntry, slave); r = []; r.push(App.UI.DOM.makeElement("span", SlaveFullName(slave), "slave-name")); if (slave.choosesOwnAssignment === 2) { diff --git a/src/endWeek/reports/cellblockReport.js b/src/endWeek/reports/cellblockReport.js index 148b09e67dd3cdef1e6cd330ae0df74e80f6eaf7..61ec702120605a74bbb01a048374a819e5305de2 100644 --- a/src/endWeek/reports/cellblockReport.js +++ b/src/endWeek/reports/cellblockReport.js @@ -175,7 +175,7 @@ App.EndWeek.cellblockReport = function() { if (V.showEWD !== 0) { const wardenessEntry = App.UI.DOM.appendNewElement("div", el, '', "slave-report"); App.SlaveAssignment.appendSlaveArt(wardenessEntry, slave); - wardenessEntry.append(App.UI.favoriteToggle(slave), " "); + App.SlaveAssignment.appendSlaveLinks(wardenessEntry, slave); App.Events.addNode( wardenessEntry, [ @@ -294,7 +294,7 @@ App.EndWeek.cellblockReport = function() { if (V.showEWD !== 0) { const slaveEntry = App.UI.DOM.appendNewElement("div", el, '', "slave-report"); App.SlaveAssignment.appendSlaveArt(slaveEntry, slave); - slaveEntry.append(App.UI.favoriteToggle(slave), " "); + App.SlaveAssignment.appendSlaveLinks(slaveEntry, slave); r = []; r.push(App.UI.DOM.makeElement("span", SlaveFullName(slave), "slave-name")); if (slave.choosesOwnAssignment === 2) { diff --git a/src/endWeek/reports/clinicReport.js b/src/endWeek/reports/clinicReport.js index 0317c4012b8e3e0780b0b903c7658cd46db54bf5..f75cb416b2c9481fef1187f12e5974843c64e77e 100644 --- a/src/endWeek/reports/clinicReport.js +++ b/src/endWeek/reports/clinicReport.js @@ -258,7 +258,7 @@ App.EndWeek.clinicReport = function() { if (V.showEWD !== 0) { const nurseEntry = App.UI.DOM.appendNewElement("div", frag, '', "slave-report"); App.SlaveAssignment.appendSlaveArt(nurseEntry, slave); - nurseEntry.append(App.UI.favoriteToggle(slave), " "); + App.SlaveAssignment.appendSlaveLinks(nurseEntry, slave); $(nurseEntry).append(`<span class='slave-name'>${SlaveFullName(slave)}</span> is serving as the clinical nurse.`); nurseEntry.append(App.SlaveAssignment.standardSlaveReport(slave, false)); } else { @@ -399,7 +399,7 @@ App.EndWeek.clinicReport = function() { if (V.showEWD !== 0) { const slaveEntry = App.UI.DOM.appendNewElement("div", frag, '', "slave-report"); App.SlaveAssignment.appendSlaveArt(slaveEntry, slave); - slaveEntry.append(App.UI.favoriteToggle(slave), " "); + App.SlaveAssignment.appendSlaveLinks(slaveEntry, slave); $(slaveEntry).append(`<span class='slave-name'>${SlaveFullName(slave)}</span> `); if (slave.choosesOwnAssignment === 2) { $(slaveEntry).append(App.SlaveAssignment.choosesOwnJob(slave)); diff --git a/src/endWeek/reports/clubReport.js b/src/endWeek/reports/clubReport.js index 406c1a17c8edbe874917811eca60223384885a52..0d79a0438f806d6330378088e544e6c5a4a113c2 100644 --- a/src/endWeek/reports/clubReport.js +++ b/src/endWeek/reports/clubReport.js @@ -152,7 +152,7 @@ App.EndWeek.clubReport = function() { if (V.showEWD !== 0) { const DJEntry = App.UI.DOM.appendNewElement("div", el, '', "slave-report"); App.SlaveAssignment.appendSlaveArt(DJEntry, slave); - DJEntry.append(App.UI.favoriteToggle(slave), " "); + App.SlaveAssignment.appendSlaveLinks(DJEntry, slave); App.Events.addNode( DJEntry, [ @@ -204,7 +204,7 @@ App.EndWeek.clubReport = function() { if (V.showEWD !== 0) { const slaveEntry = App.UI.DOM.appendNewElement("div", el, '', "slave-report"); App.SlaveAssignment.appendSlaveArt(slaveEntry, slave); - slaveEntry.append(App.UI.favoriteToggle(slave), " "); + App.SlaveAssignment.appendSlaveLinks(slaveEntry, slave); r = []; r.push(App.UI.DOM.makeElement("span", SlaveFullName(slave), "slave-name")); if (slave.choosesOwnAssignment === 2) { diff --git a/src/endWeek/reports/dairyReport.js b/src/endWeek/reports/dairyReport.js index 11c056000cb14a0da29e27470598d17999b42fcf..6889ebac7130be34188969ae0da344b283388de3 100644 --- a/src/endWeek/reports/dairyReport.js +++ b/src/endWeek/reports/dairyReport.js @@ -345,7 +345,7 @@ App.EndWeek.dairyReport = function() { if (V.showEWD !== 0) { const milkMaidEntry = App.UI.DOM.appendNewElement("div", el, '', "slave-report"); App.SlaveAssignment.appendSlaveArt(milkMaidEntry, slave); - milkMaidEntry.append(App.UI.favoriteToggle(slave), " "); + App.SlaveAssignment.appendSlaveLinks(milkMaidEntry, slave); App.Events.addNode( milkMaidEntry, [ @@ -467,7 +467,7 @@ App.EndWeek.dairyReport = function() { if (V.showEWD !== 0) { const slaveEntry = App.UI.DOM.appendNewElement("div", el, '', "slave-report"); App.SlaveAssignment.appendSlaveArt(slaveEntry, slave); - slaveEntry.append(App.UI.favoriteToggle(slave), " "); + App.SlaveAssignment.appendSlaveLinks(slaveEntry, slave); r = []; r.push(App.UI.DOM.makeElement("span", SlaveFullName(slave), "slave-name")); if (slave.choosesOwnAssignment === 2) { diff --git a/src/endWeek/reports/farmyardReport.js b/src/endWeek/reports/farmyardReport.js index 559e43a2f231d186de820e983c84d7861bf32a4a..409f6c450579c10e5aaf39f446d5dc02a84aec5a 100644 --- a/src/endWeek/reports/farmyardReport.js +++ b/src/endWeek/reports/farmyardReport.js @@ -257,7 +257,7 @@ App.Facilities.Farmyard.farmyardReport = function farmyardReport() { if (V.showEWD) { const farmerEntry = App.UI.DOM.appendNewElement("div", frag, '', "slave-report"); App.SlaveAssignment.appendSlaveArt(farmerEntry, Farmer); - farmerEntry.append(App.UI.favoriteToggle(Farmer), " "); + App.SlaveAssignment.appendSlaveLinks(farmerEntry, slave); $(farmerEntry).append(`<span class="slave-name">${SlaveFullName(Farmer)}</span> is serving as the Farmer.`); farmerEntry.append(App.SlaveAssignment.standardSlaveReport(Farmer, false)); } else { @@ -352,7 +352,7 @@ App.Facilities.Farmyard.farmyardReport = function farmyardReport() { if (V.showEWD) { const slaveEntry = App.UI.DOM.appendNewElement("div", frag, '', "slave-report"); App.SlaveAssignment.appendSlaveArt(slaveEntry, slave); - slaveEntry.append(App.UI.favoriteToggle(slave), " "); + App.SlaveAssignment.appendSlaveLinks(slaveEntry, slave); $(slaveEntry).append(`<span class="slave-name">${SlaveFullName(slave)}</span> `); if (slave.choosesOwnAssignment === 2) { diff --git a/src/endWeek/reports/masterSuiteReport.js b/src/endWeek/reports/masterSuiteReport.js index 0129ed1c0e01837a22dc303624a18c995bbd9b83..a86843b1f2863211a74f593f440f6f715155de1e 100644 --- a/src/endWeek/reports/masterSuiteReport.js +++ b/src/endWeek/reports/masterSuiteReport.js @@ -432,14 +432,14 @@ App.EndWeek.masterSuiteReport = function() { tired(concubine); const slaveEntry = App.UI.DOM.appendNewElement("div", frag, '', "slave-report"); App.SlaveAssignment.appendSlaveArt(slaveEntry, concubine); - slaveEntry.append(App.UI.favoriteToggle(concubine), " "); + App.SlaveAssignment.appendSlaveLinks(slaveEntry, concubine); App.Events.addNode(slaveEntry, [concubineText(), commonText(concubine)]); } for (const slave of App.SlaveAssignment.reportSlaves(slaves)) { const slaveEntry = App.UI.DOM.appendNewElement("div", frag, '', "slave-report"); App.SlaveAssignment.appendSlaveArt(slaveEntry, slave); - slaveEntry.append(App.UI.favoriteToggle(slave), " "); + App.SlaveAssignment.appendSlaveLinks(slaveEntry, slave); App.Events.addNode(slaveEntry, [nonConcubineText(slave), commonText(slave)]); } diff --git a/src/endWeek/reports/nurseryReport.js b/src/endWeek/reports/nurseryReport.js index dcc6676edb9d6d54084dde43db0826beb11c9be2..71540f5f0838db2452450ae5e20beb594806d10d 100644 --- a/src/endWeek/reports/nurseryReport.js +++ b/src/endWeek/reports/nurseryReport.js @@ -141,7 +141,7 @@ App.Facilities.Nursery.nurseryReport = function nurseryReport() { if (V.showEWD !== 0) { const matronEntry = App.UI.DOM.appendNewElement("div", frag, '', "slave-report"); App.SlaveAssignment.appendSlaveArt(matronEntry, slave); - matronEntry.append(App.UI.favoriteToggle(slave), " "); + App.SlaveAssignment.appendSlaveLinks(matronEntry, slave); $(matronEntry).append(`<span class="slave-name">${SlaveFullName(slave)}</span> is serving as your Matron.`); matronEntry.append(App.SlaveAssignment.standardSlaveReport(slave, false)); } else { @@ -197,7 +197,7 @@ App.Facilities.Nursery.nurseryReport = function nurseryReport() { const {He} = getPronouns(slave); const slaveEntry = App.UI.DOM.appendNewElement("div", frag, '', "slave-report"); App.SlaveAssignment.appendSlaveArt(slaveEntry, slave); - slaveEntry.append(App.UI.favoriteToggle(slave), " "); + App.SlaveAssignment.appendSlaveLinks(slaveEntry, slave); $(slaveEntry).append(`<span class="slave-name">${SlaveFullName(slave)}</span> `); if (slave.choosesOwnAssignment === 2) { diff --git a/src/endWeek/reports/penthouseReport.js b/src/endWeek/reports/penthouseReport.js index 3a7628e1c40eac3ade508aacab7465055a4f7f0a..5de638689bbe0965067f80bf8a33f66536eaf1c1 100644 --- a/src/endWeek/reports/penthouseReport.js +++ b/src/endWeek/reports/penthouseReport.js @@ -22,7 +22,7 @@ App.EndWeek.penthouseReport = function() { if (penthouseArtRenderer) { App.UI.DOM.appendNewElement("div", slaveEntry, penthouseArtRenderer.render(slave), ["imageRef", "medImg"]); } - slaveEntry.append(App.UI.favoriteToggle(slave), " "); + App.SlaveAssignment.appendSlaveLinks(slaveEntry, slave); slaveEntry.append(fullReport(slave)); if (slave.ID === V.HeadGirlID && hgSlave) { diff --git a/src/endWeek/reports/schoolroomReport.js b/src/endWeek/reports/schoolroomReport.js index d2cee049162c72ebe191d10b2972b13921659a59..c80b267bce98021a3dcd09f286e50fdf4df08413 100644 --- a/src/endWeek/reports/schoolroomReport.js +++ b/src/endWeek/reports/schoolroomReport.js @@ -153,7 +153,7 @@ App.EndWeek.schoolroomReport = function() { if (V.showEWD !== 0) { const schoolteacherEntry = App.UI.DOM.appendNewElement("div", frag, '', "slave-report"); App.SlaveAssignment.appendSlaveArt(schoolteacherEntry, slave); - schoolteacherEntry.append(App.UI.favoriteToggle(slave), " "); + App.SlaveAssignment.appendSlaveLinks(schoolteacherEntry, slave); $(schoolteacherEntry).append(`<span class='slave-name'>${SlaveFullName(slave)}</span> is serving as your Schoolteacher.`); schoolteacherEntry.append(App.SlaveAssignment.standardSlaveReport(slave, false)); } else { @@ -226,7 +226,7 @@ App.EndWeek.schoolroomReport = function() { const {He} = getPronouns(slave); const slaveEntry = App.UI.DOM.appendNewElement("div", frag, '', "slave-report"); App.SlaveAssignment.appendSlaveArt(slaveEntry, slave); - slaveEntry.append(App.UI.favoriteToggle(slave), " "); + App.SlaveAssignment.appendSlaveLinks(slaveEntry, slave); $(slaveEntry).append(`<span class='slave-name'>${SlaveFullName(slave)}</span> `); if (slave.choosesOwnAssignment === 2) { $(slaveEntry).append(App.SlaveAssignment.choosesOwnJob(slave)); diff --git a/src/endWeek/reports/servantsQuartersReport.js b/src/endWeek/reports/servantsQuartersReport.js index aa84a62f84f64d21726dee8f904ac3a78507ac17..4f53b6ce6d99a541f88caf339dbe60345de472f4 100644 --- a/src/endWeek/reports/servantsQuartersReport.js +++ b/src/endWeek/reports/servantsQuartersReport.js @@ -222,7 +222,7 @@ App.EndWeek.servantsQuartersReport = function() { if (V.showEWD !== 0) { const stewardessEntry = App.UI.DOM.appendNewElement("div", frag, '', "slave-report"); App.SlaveAssignment.appendSlaveArt(stewardessEntry, slave); - stewardessEntry.append(App.UI.favoriteToggle(slave), " "); + App.SlaveAssignment.appendSlaveLinks(stewardessEntry, slave); $(stewardessEntry).append(`<span class='slave-name'>${SlaveFullName(slave)}</span> is serving as your Stewardess.`); stewardessEntry.append(App.SlaveAssignment.standardSlaveReport(slave, false)); } else { @@ -295,7 +295,7 @@ App.EndWeek.servantsQuartersReport = function() { const {He} = getPronouns(slave); const slaveEntry = App.UI.DOM.appendNewElement("div", frag, '', "slave-report"); App.SlaveAssignment.appendSlaveArt(slaveEntry, slave); - slaveEntry.append(App.UI.favoriteToggle(slave), " "); + App.SlaveAssignment.appendSlaveLinks(slaveEntry, slave); $(slaveEntry).append(`<span class='slave-name'>${SlaveFullName(slave)}</span> `); if (slave.choosesOwnAssignment === 2) { $(slaveEntry).append(App.SlaveAssignment.choosesOwnJob(slave)); diff --git a/src/endWeek/reports/spaReport.js b/src/endWeek/reports/spaReport.js index 3f85560e83539213c65e6b80e44402bae4502c60..1e9884e14d96cc0fce638c9d15d2a94928ee2c4d 100644 --- a/src/endWeek/reports/spaReport.js +++ b/src/endWeek/reports/spaReport.js @@ -290,7 +290,7 @@ App.EndWeek.spaReport = function() { if (V.showEWD !== 0) { const attendantEntry = App.UI.DOM.appendNewElement("div", el, '', "slave-report"); App.SlaveAssignment.appendSlaveArt(attendantEntry, slave); - attendantEntry.append(App.UI.favoriteToggle(slave), " "); + App.SlaveAssignment.appendSlaveLinks(attendantEntry, slave); App.Events.addNode( attendantEntry, [ @@ -375,7 +375,7 @@ App.EndWeek.spaReport = function() { if (V.showEWD !== 0) { const slaveEntry = App.UI.DOM.appendNewElement("div", el, '', "slave-report"); App.SlaveAssignment.appendSlaveArt(slaveEntry, slave); - slaveEntry.append(App.UI.favoriteToggle(slave), " "); + App.SlaveAssignment.appendSlaveLinks(slaveEntry, slave); r = []; r.push(App.UI.DOM.makeElement("span", SlaveFullName(slave), "slave-name")); if (slave.choosesOwnAssignment === 2) { diff --git a/src/endWeek/standardSlaveReport.js b/src/endWeek/standardSlaveReport.js index a76d7a14d0142457c7bf7d86e817a2d97afa63c6..5de0aa6debf72c9e549b7faebe5db282e841eada 100644 --- a/src/endWeek/standardSlaveReport.js +++ b/src/endWeek/standardSlaveReport.js @@ -45,3 +45,15 @@ App.SlaveAssignment.appendSlaveArt = function(node, slave) { App.UI.DOM.appendNewElement("div", node, App.EndWeek.saVars.slaveArt.render(slave), ["imageRef", "tinyImg"]); } }; + +/** + * Render favorite and reminder links + * @param {ParentNode} node + * @param {App.Entity.SlaveState} slave + */ +App.SlaveAssignment.appendSlaveLinks = function(node, slave) { + node.append( + App.UI.favoriteToggle(slave), " ", + App.Reminders.slaveLink(slave.ID), " " + ); +}; diff --git a/src/interaction/siDescription.js b/src/interaction/siDescription.js index 09b0a872c719dc740a61e147eb2d9b4fa70ba271..cbf71e275f2aece1644c9b3154409a40d75b6024 100644 --- a/src/interaction/siDescription.js +++ b/src/interaction/siDescription.js @@ -26,6 +26,8 @@ App.UI.SlaveInteract.description = function(slave) { el.append(descriptionLink); } + el.append(App.Reminders.slaveDisplay(slave.ID)); + return el; function showOptions() {