Skip to content

Commit

Permalink
Splitting weekday settings into 3 objects to simplify retrieval of da…
Browse files Browse the repository at this point in the history
…y names

#276
  • Loading branch information
DC23 committed Dec 15, 2024
1 parent d8e5fa7 commit 358010d
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 9 deletions.
2 changes: 2 additions & 0 deletions src/settings.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ export const SETTINGS = {
SHIFT_SETTINGS: 'shiftSettings',
SHIFT_MENU: 'shiftMenu',
WEEKDAY_SETTINGS: 'weekdaySettings',
DAYS_PER_WEEK: 'daysPerWeek',
WEEK_NAME: 'weekName',
WEEKDAY_MENU: 'weekdayMenu',
SHOW_LONG_FORMAT_TIME: 'showDayInExactTime',
DISPLAY_24_HOUR_TIME: 'display24HourTime',
Expand Down
39 changes: 30 additions & 9 deletions src/weekdaysettings.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,26 @@ export function registerWeekdaySettings () {

defaults.daysPerWeek = DEFAULT_DAYS_PER_WEEK

// the settings object
// the settings objects
game.settings.register(MODULE_ID, SETTINGS.WEEKDAY_SETTINGS, {
scope: 'world',
config: false,
type: Object,
default: defaults,
requiresReload: true,
})

game.settings.register(MODULE_ID, SETTINGS.DAYS_PER_WEEK, {
scope: 'world',
config: false,
type: Number,
default: DEFAULT_DAYS_PER_WEEK,
})

game.settings.register(MODULE_ID, SETTINGS.WEEK_NAME, {
scope: 'world',
config: false,
type: String,
default: game.i18n.localize('JDTIMEKEEPING.WeekName'),
})
}

Expand All @@ -63,7 +76,10 @@ class WeekdaySettings extends FormApplication {
}

getData () {
const initialValues = game.settings.get(MODULE_ID, SETTINGS.WEEKDAY_SETTINGS)
const initialDayNames = game.settings.get(MODULE_ID, SETTINGS.WEEKDAY_SETTINGS)
const daysPerWeek = game.settings.get(MODULE_ID, SETTINGS.DAYS_PER_WEEK)
const weekName = game.settings.get(MODULE_ID, SETTINGS.WEEK_NAME)

const data = {}

// build the list of week days
Expand All @@ -74,16 +90,16 @@ class WeekdaySettings extends FormApplication {
id: `${v.toLowerCase()}`,
label: value,
// initial value if we have one, or the default localised string if we don't have a setting value
value: initialValues[v.toLowerCase()] ?? value,
class: i >= initialValues.daysPerWeek ? 'hidden' : '', // hide if not in use
value: initialDayNames[v.toLowerCase()] ?? value,
class: i >= daysPerWeek ? 'hidden' : '', // hide if not in use
}
})

// The number of days per week
data.daysPerWeek = {
id: 'daysPerWeek',
label: game.i18n.localize('JDTIMEKEEPING.Settings.DaysInWeek'),
value: initialValues.daysPerWeek,
value: daysPerWeek,
min: MIN_DAYS_PER_WEEK,
max: MAX_DAYS_PER_WEEK,
}
Expand All @@ -92,17 +108,22 @@ class WeekdaySettings extends FormApplication {
data.weekname = {
id: 'weekname',
label: game.i18n.localize('JDTIMEKEEPING.Settings.WeekName.label'),
value: initialValues.weekname,
value: weekName,
}

return data
}

_updateObject (event, formData) {
// todo: I might need to munge the form data to add some structure. Right now it's one flat object
const data = foundry.utils.expandObject(formData)
const current = game.settings.get(MODULE_ID, SETTINGS.WEEKDAY_SETTINGS)

game.settings.set(MODULE_ID, SETTINGS.DAYS_PER_WEEK, data.daysPerWeek)
delete(data.daysPerWeek)

game.settings.set(MODULE_ID, SETTINGS.WEEK_NAME, data.weekname)
delete(data.weekname)

const current = game.settings.get(MODULE_ID, SETTINGS.WEEKDAY_SETTINGS)
if (!Helpers.objectsShallowEqual(data, current)) {
game.settings.set(MODULE_ID, SETTINGS.WEEKDAY_SETTINGS, data)
// The days of the week don't need a reload at the moment.
Expand Down

0 comments on commit 358010d

Please sign in to comment.