fixes for v14
This commit is contained in:
@@ -2,6 +2,7 @@
|
|||||||
"SESSION_TITLE_SUGGESTIONS.SETTING_ROLE_HINT": "Select the minimum role required to use the /titles command.",
|
"SESSION_TITLE_SUGGESTIONS.SETTING_ROLE_HINT": "Select the minimum role required to use the /titles command.",
|
||||||
"SESSION_TITLE_SUGGESTIONS.SETTING_ROLE_NAME": "List Titles Command Required Role",
|
"SESSION_TITLE_SUGGESTIONS.SETTING_ROLE_NAME": "List Titles Command Required Role",
|
||||||
"SESSION_TITLE_SUGGESTIONS.INVALID_DATE": "Invalid date provided.",
|
"SESSION_TITLE_SUGGESTIONS.INVALID_DATE": "Invalid date provided.",
|
||||||
|
"SESSION_TITLE_SUGGESTIONS.NO_SUGGESTIONS": "No session title suggestions found.",
|
||||||
"SESSION_TITLE_SUGGESTIONS.SUGGESTION_AUTOCOMPLETE_MESSAGE": "Enter your session title suggestion.",
|
"SESSION_TITLE_SUGGESTIONS.SUGGESTION_AUTOCOMPLETE_MESSAGE": "Enter your session title suggestion.",
|
||||||
"SESSION_TITLE_SUGGESTIONS.SUGGESTION_LIST_COMMAND_DESCRIPTION": "List all title suggestions for the provided date",
|
"SESSION_TITLE_SUGGESTIONS.SUGGESTION_LIST_COMMAND_DESCRIPTION": "List all title suggestions for the provided date",
|
||||||
"SESSION_TITLE_SUGGESTIONS.SUGGESTION_COMMAND_DESCRIPTION": "Suggest a title for this session",
|
"SESSION_TITLE_SUGGESTIONS.SUGGESTION_COMMAND_DESCRIPTION": "Suggest a title for this session",
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
const MODULE_ID = "asc-session-title-suggestions"
|
||||||
const NAME = "/title"
|
const NAME = "/title"
|
||||||
|
|
||||||
const template_path = "modules/asc-session-title-suggestions/templates"
|
const template_path = "modules/asc-session-title-suggestions/templates"
|
||||||
@@ -13,6 +14,24 @@ const TEMPLATES = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getSuggestionTitle(message) {
|
||||||
|
return message.getFlag?.(MODULE_ID, "session_title_suggestion")
|
||||||
|
?? message.flags?.[MODULE_ID]?.session_title_suggestion
|
||||||
|
?? message.flags?.session_title_suggestion
|
||||||
|
}
|
||||||
|
|
||||||
|
function getSuggestionDate(message) {
|
||||||
|
return new Date(message.timestamp)
|
||||||
|
}
|
||||||
|
|
||||||
|
function toSuggestionViewData(message) {
|
||||||
|
return {
|
||||||
|
title: getSuggestionTitle(message),
|
||||||
|
userName: message.user?.name ?? message.author?.name ?? game.users.get(message.userId)?.name ?? "",
|
||||||
|
timestamp: message.timestamp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function registerClipboardCopyButton() {
|
function registerClipboardCopyButton() {
|
||||||
copyToClipboardListener = (event) => {
|
copyToClipboardListener = (event) => {
|
||||||
let text=event.target.dataset.clipboardText;
|
let text=event.target.dataset.clipboardText;
|
||||||
@@ -39,7 +58,11 @@ function registerCustomChatCommands() {
|
|||||||
const newMessageData = {}
|
const newMessageData = {}
|
||||||
newMessageData.content = await renderTemplate(TEMPLATES.suggestion.content, {content:titleSuggestion})
|
newMessageData.content = await renderTemplate(TEMPLATES.suggestion.content, {content:titleSuggestion})
|
||||||
newMessageData.flavor = await renderTemplate(TEMPLATES.suggestion.flavor)
|
newMessageData.flavor = await renderTemplate(TEMPLATES.suggestion.flavor)
|
||||||
newMessageData.flags = {session_title_suggestion: titleSuggestion}
|
newMessageData.flags = {
|
||||||
|
[MODULE_ID]: {
|
||||||
|
session_title_suggestion: titleSuggestion
|
||||||
|
}
|
||||||
|
}
|
||||||
return newMessageData;
|
return newMessageData;
|
||||||
},
|
},
|
||||||
autocompleteCallback: (menu, alias, parameters) => [
|
autocompleteCallback: (menu, alias, parameters) => [
|
||||||
@@ -58,34 +81,38 @@ function registerCustomChatCommands() {
|
|||||||
callback: async (chat, parameters, messageData) => {
|
callback: async (chat, parameters, messageData) => {
|
||||||
const newMessageData = {}
|
const newMessageData = {}
|
||||||
const suggestions = game.messages.filter(m => {
|
const suggestions = game.messages.filter(m => {
|
||||||
return m.flags.session_title_suggestion
|
return getSuggestionTitle(m)
|
||||||
})
|
})
|
||||||
|
if (!suggestions.length) {
|
||||||
|
ui.notifications.warn(game.i18n.localize("SESSION_TITLE_SUGGESTIONS.NO_SUGGESTIONS") || "No session title suggestions found.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
let selected_message_date
|
let selected_message_date
|
||||||
if (!parameters) {
|
if (!parameters) {
|
||||||
selected_message_date = new Date(suggestions[suggestions.length-1].timestamp)
|
selected_message_date = getSuggestionDate(suggestions[suggestions.length-1])
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
const epoch_date = Date.parse(parameters)
|
const epoch_date = Date.parse(parameters)
|
||||||
if (Number.isNaN(epoch_date)){
|
if (Number.isNaN(epoch_date)){
|
||||||
ui.notifications.error(`${game.i18n.localize("SESSION_TITLE_SUGGESTIONS.INVALID_DATE")} (${parameter})`);
|
ui.notifications.error(`${game.i18n.localize("SESSION_TITLE_SUGGESTIONS.INVALID_DATE")} (${parameters})`);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
selected_message_date = new Date(epoch_date)
|
selected_message_date = new Date(epoch_date)
|
||||||
}
|
}
|
||||||
const filtered_suggestions = suggestions.filter(m=>{
|
const filtered_suggestions = suggestions.filter(m=>{
|
||||||
const message_date = new Date(m.timestamp)
|
const message_date = getSuggestionDate(m)
|
||||||
return message_date.toDateString() == selected_message_date.toDateString()
|
return message_date.toDateString() == selected_message_date.toDateString()
|
||||||
})
|
}).map(toSuggestionViewData)
|
||||||
newMessageData.content = await renderTemplate(TEMPLATES.suggestionList.content, {messages:filtered_suggestions })
|
newMessageData.content = await renderTemplate(TEMPLATES.suggestionList.content, {messages:filtered_suggestions })
|
||||||
newMessageData.flavor = await renderTemplate(TEMPLATES.suggestionList.flavor, {date:selected_message_date.toDateString()})
|
newMessageData.flavor = await renderTemplate(TEMPLATES.suggestionList.flavor, {date:selected_message_date.toDateString()})
|
||||||
return newMessageData;
|
return newMessageData;
|
||||||
},
|
},
|
||||||
autocompleteCallback: (menu, alias, parameters) => {
|
autocompleteCallback: (menu, alias, parameters) => {
|
||||||
const suggestions = game.messages.filter(m => {
|
const suggestions = game.messages.filter(m => {
|
||||||
return m.flags.session_title_suggestion
|
return getSuggestionTitle(m)
|
||||||
})
|
})
|
||||||
const dates = new Set(
|
const dates = new Set(
|
||||||
suggestions.map(s=>new Date(s.timestamp).toDateString())
|
suggestions.map(s=>getSuggestionDate(s).toDateString())
|
||||||
)
|
)
|
||||||
const entries = [...dates].map(date=>{
|
const entries = [...dates].map(date=>{
|
||||||
return game.chatCommands.createCommandElement(`${alias} ${date}`, date)
|
return game.chatCommands.createCommandElement(`${alias} ${date}`, date)
|
||||||
@@ -120,7 +147,7 @@ Hooks.on("init", function() {
|
|||||||
},
|
},
|
||||||
hint: game.i18n.localize("SESSION_TITLE_SUGGESTIONS.SETTING_ROLE_HINT")
|
hint: game.i18n.localize("SESSION_TITLE_SUGGESTIONS.SETTING_ROLE_HINT")
|
||||||
});
|
});
|
||||||
import ('https://cdn.jsdelivr.net/npm/title-case@4.3.1/dist/index.min.js')
|
import ('https://cdn.jsdelivr.net/npm/title-case@4.3.2/dist/index.min.js')
|
||||||
.then((module)=>{console.log('asc','loading...');Handlebars.registerHelper("titlecase", module.titleCase)})
|
.then((module)=>{console.log('asc','loading...');Handlebars.registerHelper("titlecase", module.titleCase)})
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
<ul>{{~#each messages ~}}
|
<ul>{{~#each messages ~}}
|
||||||
<li><a class="fa-regular fa-clipboard clipboard" style="padding-left:.5em;padding-right:.5em;" data-clipboard-text="{{titlecase this.flags.session_title_suggestion}}"></a><i>"{{titlecase this.flags.session_title_suggestion}}"</i> - {{this.user.name}}</li>
|
<li><a class="fa-regular fa-clipboard clipboard" style="padding-left:.5em;padding-right:.5em;" data-clipboard-text="{{titlecase this.title}}"></a><i>"{{titlecase this.title}}"</i> - {{this.userName}}</li>
|
||||||
{{~/each~}}</ul><a class="fa-regular fa-clipboard clipboard" style="padding-left:.5em;padding-right:.5em;" data-clipboard-text="{{#each messages}}- _"{{titlecase this.flags.session_title_suggestion}}"_ - {{this.user.name}} {{/each}}"></a> Copy All
|
{{~/each~}}</ul><a class="fa-regular fa-clipboard clipboard" style="padding-left:.5em;padding-right:.5em;" data-clipboard-text="{{#each messages}}- _"{{titlecase this.title}}"_ - {{this.userName}} {{/each}}"></a> Copy All
|
||||||
|
|||||||
Reference in New Issue
Block a user