Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Convert changelog to TGUI #58593

Merged
merged 25 commits into from
Apr 26, 2021
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
59d54ba
Convert changelog to TGUI
celotajstg Apr 21, 2021
20486c6
Remove unused classes
celotajstg Apr 21, 2021
fe545c5
Change changelog example hash
celotajstg Apr 21, 2021
f2e2f0e
Removed reference to old changelog icons in footer
celotajstg Apr 21, 2021
dd0f646
Remove references to tgs
celotajstg Apr 21, 2021
68e2145
Add reference to APGLv3
celotajstg Apr 21, 2021
99120ea
Remove redundant src
celotajstg Apr 21, 2021
757b4d2
Move changelog.dm to code\datums\changelog
celotajstg Apr 21, 2021
15a43d3
Add new file path to tgstation.dme
celotajstg Apr 21, 2021
430e3a7
Split changelog cache, allow browsing changelog history
celotajstg Apr 24, 2021
2560ee4
Show changes in reverse order, set dropdown width
celotajstg Apr 24, 2021
c50aa17
Remove eslint-disable
celotajstg Apr 24, 2021
68e6e77
Remove dot out of link
celotajstg Apr 24, 2021
20cce61
Scroll to top after switching month
celotajstg Apr 24, 2021
56e2b0f
Adjust changelog styling
celotajstg Apr 24, 2021
3be3438
Re-add AGPL 3.0 mention
celotajstg Apr 24, 2021
ed2687b
Set fallback for changelog icon type
celotajstg Apr 24, 2021
2596355
Make experiment yellow
celotajstg Apr 24, 2021
ab1de71
Resolve linting issues
celotajstg Apr 24, 2021
99814e8
Create changelog_item asset
celotajstg Apr 24, 2021
d097999
Add qdel to get_month action
celotajstg Apr 24, 2021
bf5ba00
Adjust how changelog items are loaded
celotajstg Apr 25, 2021
5f3fb89
Sanitize changelog filename
celotajstg Apr 25, 2021
7ee6063
Load individual changelogs correctly
celotajstg Apr 25, 2021
6f4481d
Re-add license to optimized SVGs
celotajstg Apr 25, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 1 addition & 2 deletions code/datums/changelog/changelog.dm
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,7 @@
if(.)
return
if(action == "get_month")
var/filename = params["filename"]
return ui.send_asset(file("html/changelogs/archive/" + filename))
return ui.send_asset(new /datum/asset/changelog_item(params["filename"]))
celotajstg marked this conversation as resolved.
Show resolved Hide resolved

/datum/changelog/ui_static_data()
var/list/data = list( "dates" = list() )
Expand Down
18 changes: 18 additions & 0 deletions code/modules/asset_cache/asset_list.dm
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,24 @@ GLOBAL_LIST_EMPTY(asset_datums)
#undef SPRSZ_STRIPPED


/datum/asset/changelog_item
_abstract = /datum/asset/changelog_item
var/item_filename

/datum/asset/changelog_item/New(filename)
item_filename = filename
SSassets.transport.register_asset(item_filename, file("html/changelogs/archive/" + filename))

/datum/asset/changelog_item/send(client)
if (!item_filename)
return
. = SSassets.transport.send_assets(client, item_filename)

/datum/asset/changelog_item/get_url_mappings()
if (!item_filename)
return
. = list("[item_filename]" = SSassets.transport.get_asset_url(item_filename))

/datum/asset/spritesheet/simple
_abstract = /datum/asset/spritesheet/simple
var/list/assets
Expand Down
21 changes: 8 additions & 13 deletions code/modules/tgui/tgui_window.dm
Original file line number Diff line number Diff line change
Expand Up @@ -246,24 +246,19 @@
*
* Makes an asset available to use in tgui.
*
* required asset
* required asset datum/asset
*
* return bool - TRUE if any assets had to be sent to the client
*/
/datum/tgui_window/proc/send_asset(asset)
/datum/tgui_window/proc/send_asset(datum/asset/asset)
if(!client || !asset)
return
if (istype(asset, /datum/asset))
var/datum/asset/current_asset = asset
sent_assets |= list(current_asset)
. = current_asset.send(client)
if(istype(current_asset, /datum/asset/spritesheet))
var/datum/asset/spritesheet/spritesheet = current_asset
send_message("asset/stylesheet", spritesheet.css_filename())
send_message("asset/mappings", current_asset.get_url_mappings())
else
client << browse_rsc(asset)
. = TRUE
sent_assets |= list(asset)
celotajstg marked this conversation as resolved.
Show resolved Hide resolved
. = asset.send(client)
if(istype(asset, /datum/asset/spritesheet))
var/datum/asset/spritesheet/spritesheet = asset
send_message("asset/stylesheet", spritesheet.css_filename())
send_message("asset/mappings", asset.get_url_mappings())

/**
* private
Expand Down
30 changes: 16 additions & 14 deletions tgui/packages/tgui/interfaces/Changelog.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ export class Changelog extends Component {
constructor() {
super();
this.state = {
data: null,
data: 'Loading changelog data...',
selectedDate: '',
selectedIndex: 0,
};
Expand All @@ -62,12 +62,12 @@ export class Changelog extends Component {
this.setState({ selectedIndex });
}

getData = (filename, attemptNumber = 1) => {
getData = (filename, attemptNumber = 0) => {
const { act } = useBackend(this.context);
const self = this;

if (attemptNumber > 3) {
return this.setData('error');
if (attemptNumber > 2) {
return this.setData('Failed to load data after 3 attempts');
}

act('get_month', { filename });
Expand All @@ -78,8 +78,11 @@ export class Changelog extends Component {
const errorRegex = /^Cannot find/;

if (errorRegex.test(result)) {
const timeout = attemptNumber * 1000;
const timeout = 250 + attemptNumber * 500;

self.setData(
'Loading changelog data' + '.'.repeat(attemptNumber + 3)
);
setTimeout(() => {
self.getData(filename, attemptNumber + 1);
}, timeout);
Expand Down Expand Up @@ -107,7 +110,7 @@ export class Changelog extends Component {
const { data: { dates } } = useBackend(this.context);
const { dateChoices } = this;

const dateDropdown = dateChoices && (
const dateDropdown = dateChoices.length > 0 && (
<Stack mb={1}>
<Stack.Item>
<Button
Expand All @@ -117,7 +120,7 @@ export class Changelog extends Component {
onClick={() => {
const index = selectedIndex - 1;

this.setData(null);
this.setData('Loading changelog data...');
this.setSelectedIndex(index);
this.setSelectedDate(dateChoices[index]);
window.scrollTo(
Expand All @@ -135,7 +138,7 @@ export class Changelog extends Component {
onSelected={value => {
const index = dateChoices.indexOf(value);

this.setData(null);
this.setData('Loading changelog data...');
this.setSelectedIndex(index);
this.setSelectedDate(value);
window.scrollTo(
Expand All @@ -156,7 +159,7 @@ export class Changelog extends Component {
onClick={() => {
const index = selectedIndex + 1;

this.setData(null);
this.setData('Loading changelog data...');
this.setSelectedIndex(index);
this.setSelectedDate(dateChoices[index]);
window.scrollTo(
Expand Down Expand Up @@ -233,7 +236,7 @@ export class Changelog extends Component {
</Section>
);

const changes = data && (
const changes = typeof data === 'object' && Object.keys(data).length > 0 && (
Object.entries(data).reverse().map(([date, authors]) => (
<Section key={date} title={dateformat(date, 'd mmmm yyyy')}>
<Box ml={3}>
Expand All @@ -256,12 +259,12 @@ export class Changelog extends Component {
color={
icons[changeType]
? icons[changeType].color
: icons["unknown"].color
: icons['unknown'].color
}
name={
icons[changeType]
? icons[changeType].icon
: icons["unknown"].icon
: icons['unknown'].icon
}
/>
</Table.Cell>
Expand All @@ -285,8 +288,7 @@ export class Changelog extends Component {
<Window.Content scrollable>
{header}
{changes}
{!data && <p>Loading changelog data...</p>}
{data === 'error' && <p>Failed to load data after 3 attempts</p>}
{typeof data === 'string' && <p>{data}</p>}
{footer}
</Window.Content>
</Window>
Expand Down