mirror of
https://github.com/WowUp/WowUp.git
synced 2026-04-23 23:37:11 -04:00
Add 'Released At' column for addon pages
This commit is contained in:
@@ -609,6 +609,7 @@ export class CurseAddonProvider implements AddonProvider {
|
||||
screenshotUrls: this.getScreenshotUrls(scanResult.searchResult),
|
||||
downloadCount: scanResult.searchResult.downloadCount,
|
||||
summary: scanResult.searchResult.summary,
|
||||
releasedAt: new Date(latestVersion.fileDate),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -176,6 +176,7 @@ export class TukUiAddonProvider implements AddonProvider {
|
||||
summary: tukUiAddon.small_desc,
|
||||
downloadCount: Number.parseFloat(tukUiAddon.downloads),
|
||||
screenshotUrls: [tukUiAddon.screenshot_url],
|
||||
releasedAt: new Date(`${tukUiAddon.lastupdate} UTC`),
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -195,14 +196,14 @@ export class TukUiAddonProvider implements AddonProvider {
|
||||
if (!addon) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
|
||||
var latestFile: AddonSearchResultFile = {
|
||||
channelType: AddonChannelType.Stable,
|
||||
folders: folderName ? [folderName] : [],
|
||||
downloadUrl: addon.url,
|
||||
gameVersion: addon.patch,
|
||||
version: addon.version,
|
||||
releaseDate: new Date(addon.lastUpdate),
|
||||
releaseDate: new Date(`${addon.lastupdate} UTC`),
|
||||
};
|
||||
|
||||
return {
|
||||
|
||||
@@ -199,6 +199,7 @@ export class WowInterfaceAddonProvider implements AddonProvider {
|
||||
summary: response.description,
|
||||
screenshotUrls: response.images?.map((img) => img.imageUrl),
|
||||
downloadCount: response.downloads,
|
||||
releasedAt: new Date(response.lastUpdate),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -213,7 +214,7 @@ export class WowInterfaceAddonProvider implements AddonProvider {
|
||||
downloadUrl: response.downloadUri,
|
||||
folders: folderName ? [folderName] : [],
|
||||
gameVersion: "",
|
||||
releaseDate: new Date(),
|
||||
releaseDate: new Date(response.lastUpdate),
|
||||
};
|
||||
|
||||
return {
|
||||
|
||||
@@ -28,4 +28,5 @@ export interface Addon {
|
||||
downloadCount?: number;
|
||||
summary?: string;
|
||||
screenshotUrls?: string[];
|
||||
releasedAt?: Date;
|
||||
}
|
||||
@@ -8,7 +8,7 @@ export interface TukUiAddon {
|
||||
url: string;
|
||||
category: string;
|
||||
downloads: string;
|
||||
lastUpdate: string;
|
||||
lastupdate: string;
|
||||
patch: string;
|
||||
web_url: string;
|
||||
last_download: string;
|
||||
|
||||
@@ -12,4 +12,5 @@ export interface AddonSearchResult {
|
||||
screenshotUrls?: string[];
|
||||
summary?: string;
|
||||
thumbnailUrl: string;
|
||||
releasedAt?: Date;
|
||||
}
|
||||
|
||||
@@ -58,7 +58,16 @@
|
||||
{{element.downloadCount | downloadCount}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
|
||||
<ng-container matColumnDef="releasedAt">
|
||||
<th mat-header-cell mat-sort-header *matHeaderCellDef>
|
||||
{{'PAGES.GET_ADDONS.TABLE.RELEASED_AT_COLUMN_HEADER' | translate}}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{element | getAddonListItemFileProp:'releaseDate':defaultAddonChannel | date:'short'}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="providerName">
|
||||
<th mat-header-cell mat-sort-header *matHeaderCellDef class="provider-column">
|
||||
{{'PAGES.GET_ADDONS.TABLE.PROVIDER_COLUMN_HEADER' | translate}}
|
||||
|
||||
@@ -16,7 +16,6 @@ import { MatSort } from "@angular/material/sort";
|
||||
import * as _ from "lodash";
|
||||
import { GetAddonListItem } from "app/business-objects/get-addon-list-item";
|
||||
import { AddonSearchResult } from "app/models/wowup/addon-search-result";
|
||||
import { AddonChannelType } from "app/models/wowup/addon-channel-type";
|
||||
import { WowUpService } from "app/services/wowup/wowup.service";
|
||||
|
||||
@Component({
|
||||
@@ -35,13 +34,13 @@ export class GetAddonsComponent implements OnInit, OnDestroy {
|
||||
private readonly _destroyed$ = new Subject<void>();
|
||||
private subscriptions: Subscription[] = [];
|
||||
private isSelectedTab: boolean = false;
|
||||
private channelTypeKey: string = "";
|
||||
|
||||
public dataSource = new MatTableDataSource<GetAddonListItem>([]);
|
||||
|
||||
columns: ColumnState[] = [
|
||||
{ name: "name", display: "Addon", visible: true },
|
||||
{ name: "downloadCount", display: "Downloads", visible: true },
|
||||
{ name: "releasedAt", display: "Released At", visible: true },
|
||||
{ name: "author", display: "Author", visible: true },
|
||||
{ name: "providerName", display: "Provider", visible: true },
|
||||
{ name: "status", display: "Status", visible: true },
|
||||
@@ -104,7 +103,12 @@ export class GetAddonsComponent implements OnInit, OnDestroy {
|
||||
const displayAddonSubscription = this._displayAddonsSrc.subscribe(
|
||||
(items: GetAddonListItem[]) => {
|
||||
this.dataSource.data = items;
|
||||
this.dataSource.sortingDataAccessor = _.get;
|
||||
this.dataSource.sortingDataAccessor = (item: GetAddonListItem, prop: string) => {
|
||||
if (prop === 'releasedAt') {
|
||||
return item.getLatestFile(this.defaultAddonChannel)?.releaseDate;
|
||||
}
|
||||
return _.get(item, prop);
|
||||
}
|
||||
this.dataSource.sort = this.sort;
|
||||
}
|
||||
);
|
||||
|
||||
@@ -15,6 +15,7 @@ import { MyAddonsAddonCellComponent } from "app/components/my-addons-addon-cell/
|
||||
import { ProgressSpinnerComponent } from "app/components/progress-spinner/progress-spinner.component";
|
||||
import { DownloadCountPipe } from "app/pipes/download-count.pipe";
|
||||
import { InterfaceFormatPipe } from "app/pipes/interface-format.pipe";
|
||||
import { GetAddonListItemFilePropPipe } from "app/pipes/get-addon-list-item-file-prop.pipe";
|
||||
import { TelemetryDialogComponent } from "app/components/telemetry-dialog/telemetry-dialog.component";
|
||||
import { ConfirmDialogComponent } from "app/components/confirm-dialog/confirm-dialog.component";
|
||||
import { AlertDialogComponent } from "app/components/alert-dialog/alert-dialog.component";
|
||||
@@ -40,6 +41,7 @@ import { MyAddonStatusColumnComponent } from "app/components/my-addon-status-col
|
||||
PotentialAddonTableColumnComponent,
|
||||
DownloadCountPipe,
|
||||
InterfaceFormatPipe,
|
||||
GetAddonListItemFilePropPipe,
|
||||
TelemetryDialogComponent,
|
||||
ConfirmDialogComponent,
|
||||
AlertDialogComponent,
|
||||
|
||||
@@ -78,6 +78,15 @@
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="addon.releasedAt">
|
||||
<th mat-header-cell mat-sort-header *matHeaderCellDef>
|
||||
{{'PAGES.MY_ADDONS.TABLE.RELEASED_AT_COLUMN_HEADER' | translate}}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let element" class="cell-padding">
|
||||
{{element.addon.releasedAt | date:'short'}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="addon.gameVersion">
|
||||
<th class="game-version-cell" mat-header-cell mat-sort-header *matHeaderCellDef>
|
||||
{{'PAGES.MY_ADDONS.TABLE.GAME_VERSION_COLUMN_HEADER' | translate}}
|
||||
|
||||
@@ -73,6 +73,12 @@ export class MyAddonsComponent implements OnInit, OnDestroy {
|
||||
visible: true,
|
||||
allowToggle: true,
|
||||
},
|
||||
{
|
||||
name: "addon.releasedAt",
|
||||
display: "Released At",
|
||||
visible: true,
|
||||
allowToggle: true,
|
||||
},
|
||||
{
|
||||
name: "addon.gameVersion",
|
||||
display: "Game Version",
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
import { GetAddonListItemFilePropPipe } from './get-addon-list-item-file-prop.pipe';
|
||||
|
||||
describe('GetAddonListItemFilePropPipe', () => {
|
||||
it('create an instance', () => {
|
||||
const pipe = new GetAddonListItemFilePropPipe();
|
||||
expect(pipe).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,13 @@
|
||||
import { Pipe, PipeTransform } from "@angular/core";
|
||||
import { GetAddonListItem } from "../business-objects/get-addon-list-item";
|
||||
import { AddonChannelType } from "../models/wowup/addon-channel-type";
|
||||
|
||||
@Pipe({
|
||||
name: "getAddonListItemFileProp",
|
||||
})
|
||||
export class GetAddonListItemFilePropPipe implements PipeTransform {
|
||||
transform(item: GetAddonListItem, prop: string, channel: AddonChannelType): any {
|
||||
const file = item.getLatestFile(channel);
|
||||
return file && file.hasOwnProperty(prop) ? file[prop] : '';
|
||||
}
|
||||
}
|
||||
@@ -495,12 +495,16 @@ export class AddonService {
|
||||
if (
|
||||
!result ||
|
||||
!latestFile ||
|
||||
latestFile.version === addon.latestVersion
|
||||
(
|
||||
latestFile.version === addon.latestVersion &&
|
||||
latestFile.releaseDate === addon.releasedAt
|
||||
)
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
|
||||
addon.latestVersion = latestFile.version;
|
||||
addon.releasedAt = latestFile.releaseDate;
|
||||
addon.downloadUrl = latestFile.downloadUrl;
|
||||
addon.name = result.name;
|
||||
addon.author = result.author;
|
||||
@@ -687,6 +691,7 @@ export class AddonService {
|
||||
channelType: this._wowUpService.getDefaultAddonChannel(clientType),
|
||||
isIgnored: false,
|
||||
autoUpdateEnabled: this._wowUpService.getDefaultAutoUpdate(clientType),
|
||||
releasedAt: latestFile.releaseDate,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
"AUTHOR_COLUMN_HEADER": "Autor",
|
||||
"PROVIDER_COLUMN_HEADER": "Anbieter",
|
||||
"STATUS_COLUMN_HEADER": "Status",
|
||||
"DOWNLOAD_COUNT_COLUMN_HEADER": "TEXT_ELEMENT"
|
||||
"DOWNLOAD_COUNT_COLUMN_HEADER": "DOWNLOAD_COUNT_COLUMN_HEADER",
|
||||
"RELEASED_AT_COLUMN_HEADER": "RELEASED_AT_COLUMN_HEADER"
|
||||
}
|
||||
},
|
||||
"HOME": {
|
||||
@@ -43,7 +44,8 @@
|
||||
"GAME_VERSION_COLUMN_HEADER": "Spielversion",
|
||||
"LATEST_VERSION_COLUMN_HEADER": "Neueste Version",
|
||||
"PROVIDER_COLUMN_HEADER": "Anbieter",
|
||||
"STATUS_COLUMN_HEADER": "Status"
|
||||
"STATUS_COLUMN_HEADER": "Status",
|
||||
"RELEASED_AT_COLUMN_HEADER": "RELEASED_AT_COLUMN_HEADER"
|
||||
},
|
||||
"ADDON_CONTEXT_MENU": {
|
||||
"IGNORE_ADDON_BUTTON": "Ignorieren",
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
"AUTHOR_COLUMN_HEADER": "Author",
|
||||
"PROVIDER_COLUMN_HEADER": "Provider",
|
||||
"STATUS_COLUMN_HEADER": "Status",
|
||||
"DOWNLOAD_COUNT_COLUMN_HEADER": "Downloads"
|
||||
"DOWNLOAD_COUNT_COLUMN_HEADER": "Downloads",
|
||||
"RELEASED_AT_COLUMN_HEADER": "Released At"
|
||||
}
|
||||
},
|
||||
"HOME": {
|
||||
@@ -44,7 +45,8 @@
|
||||
"GAME_VERSION_COLUMN_HEADER": "Game Version",
|
||||
"LATEST_VERSION_COLUMN_HEADER": "Latest Version",
|
||||
"PROVIDER_COLUMN_HEADER": "Provider",
|
||||
"STATUS_COLUMN_HEADER": "Status"
|
||||
"STATUS_COLUMN_HEADER": "Status",
|
||||
"RELEASED_AT_COLUMN_HEADER": "Released At"
|
||||
},
|
||||
"ADDON_CONTEXT_MENU": {
|
||||
"IGNORE_ADDON_BUTTON": "Ignore",
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
"AUTHOR_COLUMN_HEADER": "Autor",
|
||||
"PROVIDER_COLUMN_HEADER": "Proveedor",
|
||||
"STATUS_COLUMN_HEADER": "Estado",
|
||||
"DOWNLOAD_COUNT_COLUMN_HEADER": "TEXT_ELEMENT"
|
||||
"DOWNLOAD_COUNT_COLUMN_HEADER": "DOWNLOAD_COUNT_COLUMN_HEADER",
|
||||
"RELEASED_AT_COLUMN_HEADER": "RELEASED_AT_COLUMN_HEADER"
|
||||
}
|
||||
},
|
||||
"HOME": {
|
||||
@@ -43,7 +44,8 @@
|
||||
"GAME_VERSION_COLUMN_HEADER": "Versión del juego",
|
||||
"LATEST_VERSION_COLUMN_HEADER": "Última Versión",
|
||||
"PROVIDER_COLUMN_HEADER": "Proveedor",
|
||||
"STATUS_COLUMN_HEADER": "Situación"
|
||||
"STATUS_COLUMN_HEADER": "Situación",
|
||||
"RELEASED_AT_COLUMN_HEADER": "RELEASED_AT_COLUMN_HEADER"
|
||||
},
|
||||
"ADDON_CONTEXT_MENU": {
|
||||
"IGNORE_ADDON_BUTTON": "Ignorar",
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
"AUTHOR_COLUMN_HEADER": "Auteur",
|
||||
"PROVIDER_COLUMN_HEADER": "Fournisseur",
|
||||
"STATUS_COLUMN_HEADER": "Statut",
|
||||
"DOWNLOAD_COUNT_COLUMN_HEADER": "TEXT_ELEMENT"
|
||||
"DOWNLOAD_COUNT_COLUMN_HEADER": "DOWNLOAD_COUNT_COLUMN_HEADER",
|
||||
"RELEASED_AT_COLUMN_HEADER": "RELEASED_AT_COLUMN_HEADER"
|
||||
}
|
||||
},
|
||||
"HOME": {
|
||||
@@ -43,7 +44,8 @@
|
||||
"GAME_VERSION_COLUMN_HEADER": "Version du jeu",
|
||||
"LATEST_VERSION_COLUMN_HEADER": "Dernière version",
|
||||
"PROVIDER_COLUMN_HEADER": "Fournisseur",
|
||||
"STATUS_COLUMN_HEADER": "Statut"
|
||||
"STATUS_COLUMN_HEADER": "Statut",
|
||||
"RELEASED_AT_COLUMN_HEADER": "RELEASED_AT_COLUMN_HEADER"
|
||||
},
|
||||
"ADDON_CONTEXT_MENU": {
|
||||
"IGNORE_ADDON_BUTTON": "Ignorer",
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
"AUTHOR_COLUMN_HEADER": "Autore",
|
||||
"PROVIDER_COLUMN_HEADER": "Provveditore",
|
||||
"STATUS_COLUMN_HEADER": "Stato",
|
||||
"DOWNLOAD_COUNT_COLUMN_HEADER": "TEXT_ELEMENT"
|
||||
"DOWNLOAD_COUNT_COLUMN_HEADER": "DOWNLOAD_COUNT_COLUMN_HEADER",
|
||||
"RELEASED_AT_COLUMN_HEADER": "RELEASED_AT_COLUMN_HEADER"
|
||||
}
|
||||
},
|
||||
"HOME": {
|
||||
@@ -43,7 +44,8 @@
|
||||
"GAME_VERSION_COLUMN_HEADER": "Versione Del Gioco",
|
||||
"LATEST_VERSION_COLUMN_HEADER": "Ultima Versione",
|
||||
"PROVIDER_COLUMN_HEADER": "Provveditore",
|
||||
"STATUS_COLUMN_HEADER": "Stato"
|
||||
"STATUS_COLUMN_HEADER": "Stato",
|
||||
"RELEASED_AT_COLUMN_HEADER": "RELEASED_AT_COLUMN_HEADER"
|
||||
},
|
||||
"ADDON_CONTEXT_MENU": {
|
||||
"IGNORE_ADDON_BUTTON": "Ignora",
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
"AUTHOR_COLUMN_HEADER": "Autor",
|
||||
"PROVIDER_COLUMN_HEADER": "Provedor",
|
||||
"STATUS_COLUMN_HEADER": "Estado",
|
||||
"DOWNLOAD_COUNT_COLUMN_HEADER": "TEXT_ELEMENT"
|
||||
"DOWNLOAD_COUNT_COLUMN_HEADER": "DOWNLOAD_COUNT_COLUMN_HEADER",
|
||||
"RELEASED_AT_COLUMN_HEADER": "RELEASED_AT_COLUMN_HEADER"
|
||||
}
|
||||
},
|
||||
"HOME": {
|
||||
@@ -43,7 +44,8 @@
|
||||
"GAME_VERSION_COLUMN_HEADER": "Versão do Jogo",
|
||||
"LATEST_VERSION_COLUMN_HEADER": "Ultima versão",
|
||||
"PROVIDER_COLUMN_HEADER": "Provedor",
|
||||
"STATUS_COLUMN_HEADER": "Estado"
|
||||
"STATUS_COLUMN_HEADER": "Estado",
|
||||
"RELEASED_AT_COLUMN_HEADER": "RELEASED_AT_COLUMN_HEADER"
|
||||
},
|
||||
"ADDON_CONTEXT_MENU": {
|
||||
"IGNORE_ADDON_BUTTON": "Ignorar",
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
"AUTHOR_COLUMN_HEADER": "Автор",
|
||||
"PROVIDER_COLUMN_HEADER": "Источник",
|
||||
"STATUS_COLUMN_HEADER": "Статус",
|
||||
"DOWNLOAD_COUNT_COLUMN_HEADER": "Кол-во загрузок"
|
||||
"DOWNLOAD_COUNT_COLUMN_HEADER": "Кол-во загрузок",
|
||||
"RELEASED_AT_COLUMN_HEADER": "RELEASED_AT_COLUMN_HEADER"
|
||||
}
|
||||
},
|
||||
"HOME": {
|
||||
@@ -44,7 +45,8 @@
|
||||
"GAME_VERSION_COLUMN_HEADER": "Версия игры",
|
||||
"LATEST_VERSION_COLUMN_HEADER": "Последняя версия",
|
||||
"PROVIDER_COLUMN_HEADER": "Источник",
|
||||
"STATUS_COLUMN_HEADER": "Статус"
|
||||
"STATUS_COLUMN_HEADER": "Статус",
|
||||
"RELEASED_AT_COLUMN_HEADER": "RELEASED_AT_COLUMN_HEADER"
|
||||
},
|
||||
"ADDON_CONTEXT_MENU": {
|
||||
"IGNORE_ADDON_BUTTON": "Пропускать",
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
"AUTHOR_COLUMN_HEADER": "作者",
|
||||
"PROVIDER_COLUMN_HEADER": "提供商",
|
||||
"STATUS_COLUMN_HEADER": "状态",
|
||||
"DOWNLOAD_COUNT_COLUMN_HEADER": "TEXT_ELEMENT"
|
||||
"DOWNLOAD_COUNT_COLUMN_HEADER": "DOWNLOAD_COUNT_COLUMN_HEADER",
|
||||
"RELEASED_AT_COLUMN_HEADER": "RELEASED_AT_COLUMN_HEADER"
|
||||
}
|
||||
},
|
||||
"HOME": {
|
||||
@@ -43,7 +44,8 @@
|
||||
"GAME_VERSION_COLUMN_HEADER": "游戏版本",
|
||||
"LATEST_VERSION_COLUMN_HEADER": "最新版本",
|
||||
"PROVIDER_COLUMN_HEADER": "提供商",
|
||||
"STATUS_COLUMN_HEADER": "状态"
|
||||
"STATUS_COLUMN_HEADER": "状态",
|
||||
"RELEASED_AT_COLUMN_HEADER": "RELEASED_AT_COLUMN_HEADER"
|
||||
},
|
||||
"ADDON_CONTEXT_MENU": {
|
||||
"IGNORE_ADDON_BUTTON": "忽略",
|
||||
|
||||
Reference in New Issue
Block a user