1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

update music tabs

This commit is contained in:
Luke Pulverenti 2016-05-15 14:52:36 -04:00
parent 2fd65cdcd9
commit 48da4f1c8d
21 changed files with 1160 additions and 1029 deletions

View file

@ -16,12 +16,12 @@
}, },
"devDependencies": {}, "devDependencies": {},
"ignore": [], "ignore": [],
"version": "1.3.26", "version": "1.3.27",
"_release": "1.3.26", "_release": "1.3.27",
"_resolution": { "_resolution": {
"type": "version", "type": "version",
"tag": "1.3.26", "tag": "1.3.27",
"commit": "094d2fc7c9e0c008e1c44744da95a69d1aa6516f" "commit": "d50eb817e00a23afb8fd5c5fe5a08745de291951"
}, },
"_source": "https://github.com/MediaBrowser/emby-webcomponents.git", "_source": "https://github.com/MediaBrowser/emby-webcomponents.git",
"_target": "^1.2.0", "_target": "^1.2.0",

View file

@ -0,0 +1,53 @@
{
"ValueSpecialEpisodeName": "\u0410\u0440\u043d\u0430\u0439\u044b - {0}",
"Share": "\u041e\u0440\u0442\u0430\u049b\u0442\u0430\u0441\u0443",
"ServerUpdateNeeded": "\u041e\u0441\u044b Emby Server \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u0443\u044b \u049b\u0430\u0436\u0435\u0442. \u0421\u043e\u04a3\u0493\u044b \u043d\u04b1\u0441\u049b\u0430\u0441\u044b\u043d \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443 \u04af\u0448\u0456\u043d, {0} \u043a\u0456\u0440\u0456\u04a3\u0456\u0437",
"LiveTvGuideRequiresUnlock": "\u042d\u0444\u0438\u0440\u043b\u0456\u043a \u0422\u0435\u043b\u0435\u0433\u0438\u0434\u0442\u0435 \u049b\u0430\u0437\u0456\u0440\u0433\u0456 \u0443\u0430\u049b\u044b\u0442\u0442\u0430 {0} \u0430\u0440\u043d\u0430\u043b\u0430\u0440 \u0448\u0435\u043a\u0442\u0435\u043b\u0435\u0434\u0456. \u0422\u043e\u043b\u044b\u049b \u0442\u04d9\u0436\u0440\u0438\u0431\u0435 \u0430\u043b\u0443\u0493\u0430 \u04af\u0439\u0440\u0435\u043d\u0443 \u04af\u0448\u0456\u043d \u049a\u04b1\u0440\u0441\u0430\u0443\u044b\u043d \u0431\u043e\u0441\u0430\u0442\u0443 \u0442\u04af\u0439\u043c\u0435\u0448\u0456\u0433\u0456\u043d \u0431\u0430\u0441\u044b\u04a3\u044b\u0437.",
"AttributeNew": "\u0416\u0430\u04a3\u0430",
"AttributePremiere": "\u0422\u04b1\u0441\u0430\u0443\u043a\u0435\u0441\u0435\u0440\u0456",
"AttributeLive": "\u0422\u0456\u043a\u0435\u043b\u0435\u0439",
"TrackCount": "{0} \u0436\u043e\u043b\u0448\u044b\u049b",
"ItemCount": "{0} \u0442\u0430\u0440\u043c\u0430\u049b",
"ValueSeriesYearToPresent": "{0} - \u049b\u0430\u0437\u0456\u0440\u0434\u0435",
"ReleaseYearValue": "\u0428\u044b\u0493\u0430\u0440\u0443 \u0436\u043e\u043b\u044b: {0}",
"OriginalAirDateValue": "\u0411\u0430\u0441\u0442\u0430\u043f\u049b\u044b \u044d\u0444\u0438\u0440: {0}",
"EndsAtValue": "\u0410\u044f\u049b\u0442\u0430\u043b\u0443\u044b: {0}",
"OptionSundayShort": "\u0436\u0435\u043a",
"OptionMondayShort": "\u0434\u04af\u0439",
"OptionTuesdayShort": "\u0441\u0435\u0439",
"OptionWednesdayShort": "\u0441\u04d9\u0440",
"OptionThursdayShort": "\u0431\u0435\u0439",
"OptionFridayShort": "\u0436\u04b1\u043c",
"OptionSaturdayShort": "\u0441\u0435\u043d",
"HeaderSelectDate": "\u041a\u0435\u0437\u0434\u0456 \u0442\u0430\u04a3\u0434\u0430\u0443",
"ButtonOk": "\u0416\u0430\u0440\u0430\u0439\u0434\u044b",
"ButtonCancel": "\u0411\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443",
"ButtonGotIt": "\u0422\u04af\u0441\u0456\u043d\u0456\u043a\u0442\u0456",
"RecordingScheduled": "\u0416\u0430\u0437\u0443 \u0436\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u0430\u043d.",
"HeaderNewRecording": "\u0416\u0430\u04a3\u0430 \u0436\u0430\u0437\u0443",
"Sunday": "\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456",
"Monday": "\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456",
"Tuesday": "\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456",
"Wednesday": "\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456",
"Thursday": "\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456",
"Friday": "\u0436\u04b1\u043c\u0430",
"Saturday": "\u0441\u0435\u043d\u0431\u0456",
"Days": "\u041a\u04af\u043d\u0434\u0435\u0440",
"RecordSeries": "\u0422\u0435\u043b\u0435\u0445\u0438\u043a\u0430\u044f\u043d\u044b \u0436\u0430\u0437\u0443",
"PrePaddingMinutes": "\u0410\u043b\u0493\u0430 \u0448\u0435\u0433\u0456\u043d\u0456\u0441, \u043c\u0438\u043d:",
"PostPaddingMinutes": "\u0410\u0440\u0442\u049b\u0430 \u0448\u0435\u0433\u0456\u043d\u0456\u0441, \u043c\u0438\u043d",
"RecordOnAllChannels": "\u0411\u0430\u0440\u043b\u044b\u049b \u0430\u0440\u043d\u0430\u043b\u0430\u0440\u0434\u0430\u043d \u0436\u0430\u0437\u044b\u043f \u0430\u043b\u0443",
"RecordAnytime": "\u04d8\u0440 \u0443\u0430\u049b\u044b\u0442\u0442\u0430 \u0436\u0430\u0437\u044b\u043f \u0430\u043b\u0443",
"RecordOnlyNewEpisodes": "\u0422\u0435\u043a \u049b\u0430\u043d\u0430 \u0436\u0430\u04a3\u0430 \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u0436\u0430\u0437\u044b\u043f \u0430\u043b\u0443",
"HeaderBecomeProjectSupporter": "Emby Premiere \u0430\u043b\u0443",
"HeaderEnjoyDayTrial": "\u0422\u0435\u0433\u0456\u043d \u0441\u044b\u043d\u0430\u0443\u0434\u044b 14 \u043a\u04af\u043d \u0442\u0430\u043c\u0430\u0448\u0430\u043b\u0430\u04a3\u044b\u0456\u0437",
"MessageActiveSubscriptionRequiredSeriesRecordings": "\u0422\u0435\u043b\u0435\u0445\u0438\u043a\u0430\u044f\u043b\u0430\u0440\u0434\u044b\u04a3 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0436\u0430\u0437\u0431\u0430\u0441\u044b\u043d \u0436\u0430\u0441\u0430\u0443 \u04af\u0448\u0456\u043d \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456 Emby Premiere \u0436\u0430\u0437\u044b\u043b\u044b\u043c\u044b \u049b\u0430\u0436\u0435\u0442.",
"OptionConvertRecordingsToStreamingFormat": "\u0416\u0430\u0437\u0443\u043b\u0430\u0440\u0434\u044b \u0442\u0430\u0440\u0430\u0442\u0443 \u04af\u0448\u0456\u043d \u043e\u04a3\u0430\u0439 \u043f\u0456\u0448\u0456\u043c\u0433\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0443",
"OptionConvertRecordingsToStreamingFormatHelp": "\u0416\u0430\u0437\u0431\u0430\u043b\u0430\u0440 \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440\u044b\u04a3\u044b\u0437\u0434\u0430 \u043e\u04a3\u0430\u0439 \u043e\u0439\u043d\u0430\u0442\u0443 \u04af\u0448\u0456\u043d \u043d\u0430\u049b\u0442\u044b \u0443\u0430\u049b\u044b\u0442\u0442\u0430 MP4 \u043f\u0456\u0448\u0456\u043c\u0456\u043d\u0435 \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0456\u043b\u0435\u0434\u0456.",
"FeatureRequiresEmbyPremiere": "\u041e\u0441\u044b \u049b\u04b1\u0440\u0430\u043c\u0434\u0430\u0441 \u04af\u0448\u0456\u043d \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456 Emby Premiere \u0436\u0430\u0437\u044b\u043b\u044b\u043c\u044b \u049b\u0430\u0436\u0435\u0442",
"Record": "\u0416\u0430\u0437\u0443",
"Download": "\u0416\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443",
"Advanced": "\u041a\u0435\u04a3\u0435\u0439\u0442\u0456\u043b\u0433\u0435\u043d",
"Refresh": "\u0416\u0430\u04a3\u0493\u044b\u0440\u0442\u0443",
"RefreshQueued": "\u0416\u0430\u04a3\u0493\u044b\u0440\u0442\u0443 \u043a\u0435\u0437\u0435\u043a\u0442\u0435"
}

View file

@ -0,0 +1,53 @@
{
"ValueSpecialEpisodeName": "\u0421\u043f\u0435\u0446\u044d\u043f\u0438\u0437\u043e\u0434 - {0}",
"Share": "\u041f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f",
"ServerUpdateNeeded": "\u0414\u0430\u043d\u043d\u044b\u0439 Emby \u0421\u0435\u0440\u0432\u0435\u0440 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438. \u0427\u0442\u043e\u0431\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e, \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435 {0}",
"LiveTvGuideRequiresUnlock": "\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0442\u0435\u043b\u0435\u0433\u0438\u0434 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d {0} \u043a\u0430\u043d\u0430\u043b(\u043e\u043c\/\u0430\u043c\u0438). \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u0420\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442.",
"AttributeNew": "\u041d\u043e\u0432\u043e\u0435",
"AttributePremiere": "\u041f\u0440\u0435\u043c\u044c\u0435\u0440\u0430",
"AttributeLive": "\u042d\u0444\u0438\u0440",
"TrackCount": "{0} \u0434\u043e\u0440\u043e\u0436(\u043a\u0438\/\u0435\u043a)",
"ItemCount": "{0} \u044d\u043b\u0435\u043c\u0435\u043d\u0442(\u0430\/\u043e\u0432)",
"ValueSeriesYearToPresent": "{0} - \u041d.\u0412.",
"ReleaseYearValue": "\u0413\u043e\u0434 \u0432\u044b\u043f\u0443\u0441\u043a\u0430: {0}",
"OriginalAirDateValue": "\u0414\u0430\u0442\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u044d\u0444\u0438\u0440\u0430: {0}",
"EndsAtValue": "\u041a\u043e\u043d\u0447\u0430\u0435\u0442\u0441\u044f \u0432 {0}",
"OptionSundayShort": "\u0432\u0441\u043a",
"OptionMondayShort": "\u043f\u043d\u0434",
"OptionTuesdayShort": "\u0432\u0442\u0440",
"OptionWednesdayShort": "\u0441\u0440\u0434",
"OptionThursdayShort": "\u0447\u0442\u0432",
"OptionFridayShort": "\u043f\u0442\u043d",
"OptionSaturdayShort": "\u0441\u0431\u0442",
"HeaderSelectDate": "\u0412\u044b\u0431\u043e\u0440 \u0434\u0430\u0442\u044b",
"ButtonOk": "\u041e\u043a",
"ButtonCancel": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c",
"ButtonGotIt": "\u041f\u043e\u043d\u044f\u0442\u043d\u043e",
"RecordingScheduled": "\u0417\u0430\u043f\u0438\u0441\u044c \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430.",
"HeaderNewRecording": "\u041d\u043e\u0432\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c",
"Sunday": "\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435",
"Monday": "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a",
"Tuesday": "\u0432\u0442\u043e\u0440\u043d\u0438\u043a",
"Wednesday": "\u0441\u0440\u0435\u0434\u0430",
"Thursday": "\u0447\u0435\u0442\u0432\u0435\u0440\u0433",
"Friday": "\u043f\u044f\u0442\u043d\u0438\u0446\u0430",
"Saturday": "\u0441\u0443\u0431\u0431\u043e\u0442\u0430",
"Days": "\u0414\u043d\u0438",
"RecordSeries": "\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0435\u0440\u0438\u0430\u043b",
"PrePaddingMinutes": "\u041d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u043e\u0442\u0431\u0438\u0432\u043a\u0430, \u043c\u0438\u043d:",
"PostPaddingMinutes": "\u041a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u043e\u0442\u0431\u0438\u0432\u043a\u0430, \u043c\u0438\u043d:",
"RecordOnAllChannels": "\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0441\u043e \u0432\u0441\u0435\u0445 \u043a\u0430\u043d\u0430\u043b\u043e\u0432",
"RecordAnytime": "\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u0435 \u0432\u0440\u0435\u043c\u044f",
"RecordOnlyNewEpisodes": "\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u043e\u0432\u044b\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b",
"HeaderBecomeProjectSupporter": "\u041f\u0440\u0438\u043e\u0431\u0440\u0435\u0441\u0442\u0438 Emby Premiere",
"HeaderEnjoyDayTrial": "\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043d\u0430 14 \u0434\u043d\u0435\u0439",
"MessageActiveSubscriptionRequiredSeriesRecordings": "\u0414\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0430\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0430 Emby Premiere \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u0435\u0440\u0438\u0439.",
"OptionConvertRecordingsToStreamingFormat": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0434\u043b\u044f \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438 \u0444\u043e\u0440\u043c\u0430\u0442",
"OptionConvertRecordingsToStreamingFormatHelp": "\u0417\u0430\u043f\u0438\u0441\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432 MP4 \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u0430\u0448\u0438\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445.",
"FeatureRequiresEmbyPremiere": "\u0414\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0430\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0430 Emby Premiere.",
"Record": "\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c",
"Download": "\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c",
"Advanced": "\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0435",
"Refresh": "\u041f\u043e\u0434\u043d\u043e\u0432\u0438\u0442\u044c",
"RefreshQueued": "\u041f\u043e\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438"
}

View file

@ -30,14 +30,14 @@
"web-component-tester": "polymer/web-component-tester#^3.4.0" "web-component-tester": "polymer/web-component-tester#^3.4.0"
}, },
"ignore": [], "ignore": [],
"homepage": "https://github.com/PolymerElements/iron-a11y-announcer", "homepage": "https://github.com/polymerelements/iron-a11y-announcer",
"_release": "1.0.4", "_release": "1.0.4",
"_resolution": { "_resolution": {
"type": "version", "type": "version",
"tag": "v1.0.4", "tag": "v1.0.4",
"commit": "5ce3eb8c4282bb53cd72e348858dc6be6b4c50b9" "commit": "5ce3eb8c4282bb53cd72e348858dc6be6b4c50b9"
}, },
"_source": "git://github.com/PolymerElements/iron-a11y-announcer.git", "_source": "git://github.com/polymerelements/iron-a11y-announcer.git",
"_target": "^1.0.0", "_target": "^1.0.0",
"_originalSource": "PolymerElements/iron-a11y-announcer" "_originalSource": "polymerelements/iron-a11y-announcer"
} }

View file

@ -34,6 +34,6 @@
"commit": "11c987b2eb3c73b388a79fc8aaea8ca01624f514" "commit": "11c987b2eb3c73b388a79fc8aaea8ca01624f514"
}, },
"_source": "git://github.com/Polymer/polymer.git", "_source": "git://github.com/Polymer/polymer.git",
"_target": "^1.0.0", "_target": "^1.1.0",
"_originalSource": "Polymer/polymer" "_originalSource": "Polymer/polymer"
} }

View file

@ -195,7 +195,6 @@
.libraryViewNav { .libraryViewNav {
justify-content: center;
display: flex; display: flex;
display: block; display: block;
text-align: center; text-align: center;
@ -224,8 +223,17 @@
height: auto; height: auto;
min-width: initial; min-width: initial;
line-height: initial; line-height: initial;
border-radius: 0 !important;
} }
.libraryViewNav .pageTabButton:hover {
background-color: transparent;
}
.libraryViewNav .pageTabButton:active {
background-color: rgba(100,100,100, 0.20);
}
.libraryViewNav .pageTabButton:focus { .libraryViewNav .pageTabButton:focus {
font-weight: 500 !important; font-weight: 500 !important;
} }
@ -234,19 +242,20 @@
color: #fff !important; color: #fff !important;
} }
.libraryViewNav .pageTabButton:before { .libraryViewNav .pageTabButton:after {
content: ''; content: '';
position: absolute; position: absolute;
left: 0; left: 0;
border: 0; border: 0;
bottom: 0; bottom: 0;
height: 2px; height: 2px;
transition: all .12s cubic-bezier(.4,0,1,1); transition: all .2s cubic-bezier(.4,0,1,1);
right: 0; right: 0;
transform: translateX(-100%); transform: translateX(-100%);
border-radius: 0;
} }
.libraryViewNav .pageTabButton.is-active:before { .libraryViewNav .pageTabButton.is-active:after {
transform: none; transform: none;
background: #52B54B; background: #52B54B;
} }

View file

@ -52,20 +52,18 @@ body:not(.dashboardDocument) .mainDrawerButton {
box-shadow: none; box-shadow: none;
} }
.libraryViewNav a { .libraryViewNav .pageTabButton {
font-weight: 400; font-weight: 400;
text-transform: none; text-transform: none;
color: #ccc !important;
padding: 12px 13px 8px;
} }
.libraryViewNav .pageTabButton.is-active:after { .libraryViewNav .pageTabButton.is-active:after {
display: none !important; display: none !important;
} }
.libraryViewNav .pageTabButton.is-active { .libraryViewNav .pageTabButton.is-active {
color: #52B54B !important; color: #52B54B !important;
} }
.ui-body-b .paperList:not(.criticReviewPaperList) { .ui-body-b .paperList:not(.criticReviewPaperList) {
background-color: transparent; background-color: transparent;

View file

@ -17,14 +17,10 @@
background: #161616; background: #161616;
} }
.libraryViewNav .mdl-tabs__tab.is-active { .libraryViewNav .pageTabButton.is-active {
color: #52B54B !important; color: #52B54B !important;
} }
.libraryViewNav .mdl-tabs__tab.is-active:after {
background-color: transparent !important;
}
.libraryPage:not(.noSecondaryNavPage) { .libraryPage:not(.noSecondaryNavPage) {
padding-top: 105px !important; padding-top: 105px !important;
} }

View file

@ -1,4 +1,4 @@
<div id="musicRecommendedPage" data-dom-cache="true" data-role="page" class="page libraryPage backdropPage pageWithAbsoluteTabs" data-backdroptype="musicartist" data-require="scripts/musicrecommended,paper-checkbox,scripts/alphapicker"> <div id="musicRecommendedPage" data-dom-cache="true" data-role="page" class="page libraryPage backdropPage pageWithAbsoluteTabs" data-backdroptype="musicartist">
<div class="libraryViewNav"> <div class="libraryViewNav">
<button class="pageTabButton is-active" data-index="0">${TabSuggestions}</button> <button class="pageTabButton is-active" data-index="0">${TabSuggestions}</button>

View file

@ -76,7 +76,7 @@
var mdlTabs = page.querySelector('.libraryViewNav'); var mdlTabs = page.querySelector('.libraryViewNav');
libraryBrowser.configurePaperLibraryTabs(page, mdlTabs, page.querySelectorAll('.pageTabContent')); libraryBrowser.configurePaperLibraryTabs(page, mdlTabs, page.querySelectorAll('.pageTabContent'), true);
mdlTabs.addEventListener('tabchange', function (e) { mdlTabs.addEventListener('tabchange', function (e) {
loadTab(page, parseInt(e.detail.selectedTabIndex)); loadTab(page, parseInt(e.detail.selectedTabIndex));

View file

@ -249,7 +249,7 @@
var mdlTabs = view.querySelector('.libraryViewNav'); var mdlTabs = view.querySelector('.libraryViewNav');
libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent')); libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'), true);
var tabControllers = []; var tabControllers = [];
var renderedTabs = []; var renderedTabs = [];

View file

@ -225,7 +225,7 @@
}); });
}, },
configurePaperLibraryTabs: function (ownerpage, tabs, panels) { configurePaperLibraryTabs: function (ownerpage, tabs, panels, animate) {
if (!browserInfo.safari) { if (!browserInfo.safari) {
LibraryBrowser.configureSwipeTabs(ownerpage, tabs); LibraryBrowser.configureSwipeTabs(ownerpage, tabs);
@ -235,6 +235,8 @@
for (var i = 0, length = buttons.length; i < length; i++) { for (var i = 0, length = buttons.length; i < length; i++) {
buttons[i].classList.add('mdl-button'); buttons[i].classList.add('mdl-button');
buttons[i].classList.add('mdl-js-button'); buttons[i].classList.add('mdl-js-button');
buttons[i].classList.add('mdl-js-ripple-effect');
componentHandler.upgradeElement(buttons[i], 'MaterialButton');
} }
tabs.classList.add('hiddenScrollX'); tabs.classList.add('hiddenScrollX');
@ -275,9 +277,9 @@
panels[index].classList.add('is-active'); panels[index].classList.add('is-active');
//if (browserInfo.animate) { if (browserInfo.animate && animate) {
// fadeInRight(panels[index]); fadeInRight(panels[index]);
//} }
// If toCenter is called syncronously within the click event, it sometimes ends up canceling it // If toCenter is called syncronously within the click event, it sometimes ends up canceling it
//setTimeout(function() { //setTimeout(function() {
@ -1905,7 +1907,8 @@
var showTitle = options.showTitle == 'auto' ? true : options.showTitle; var showTitle = options.showTitle == 'auto' ? true : options.showTitle;
if (item.Type == 'PhotoAlbum') { // Force the title for these
if (item.Type == 'PhotoAlbum' || item.Type == 'Folder') {
showTitle = true; showTitle = true;
} }
var coverImage = options.coverImage; var coverImage = options.coverImage;

View file

@ -204,7 +204,7 @@
baseUrl += '?topParentId=' + topParentId; baseUrl += '?topParentId=' + topParentId;
} }
libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent')); libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'), true);
mdlTabs.addEventListener('tabchange', function (e) { mdlTabs.addEventListener('tabchange', function (e) {
loadTab(view, parseInt(e.detail.selectedTabIndex)); loadTab(view, parseInt(e.detail.selectedTabIndex));

View file

@ -1,161 +1,163 @@
define(['jQuery'], function ($) { define(['jQuery'], function ($) {
var data = {}; return function (view, params, tabContent) {
function getPageData(context) {
var key = getSavedQueryKey(context);
var pageData = data[key];
if (!pageData) { var self = this;
pageData = data[key] = {
query: {
SortBy: "SortName",
SortOrder: "Ascending",
Recursive: true,
Fields: "PrimaryImageAspectRatio,SortName,DateCreated,SyncInfo,ItemCounts",
StartIndex: 0,
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
Limit: LibraryBrowser.getDefaultPageSize()
},
view: LibraryBrowser.getSavedView(key) || LibraryBrowser.getDefaultItemsView('Poster', 'Poster')
};
pageData.query.ParentId = LibraryMenu.getTopParentId(); var data = {};
LibraryBrowser.loadSavedQueryValues(key, pageData.query); function getPageData(context) {
var key = getSavedQueryKey(context);
var pageData = data[key];
if (!pageData) {
pageData = data[key] = {
query: {
SortBy: "SortName",
SortOrder: "Ascending",
Recursive: true,
Fields: "PrimaryImageAspectRatio,SortName,DateCreated,SyncInfo,ItemCounts",
StartIndex: 0,
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
Limit: LibraryBrowser.getDefaultPageSize()
},
view: LibraryBrowser.getSavedView(key) || LibraryBrowser.getDefaultItemsView('Poster', 'Poster')
};
pageData.query.ParentId = LibraryMenu.getTopParentId();
LibraryBrowser.loadSavedQueryValues(key, pageData.query);
}
return pageData;
} }
return pageData;
}
function getQuery(context) { function getQuery(context) {
return getPageData(context).query; return getPageData(context).query;
}
function getSavedQueryKey(context) {
if (!context.savedQueryKey) {
context.savedQueryKey = LibraryBrowser.getSavedQueryKey('albumartists');
} }
return context.savedQueryKey;
}
function reloadItems(page) { function getSavedQueryKey(context) {
Dashboard.showLoadingMsg(); if (!context.savedQueryKey) {
context.savedQueryKey = LibraryBrowser.getSavedQueryKey('albumartists');
var query = getQuery(page);
ApiClient.getAlbumArtists(Dashboard.getCurrentUserId(), query).then(function (result) {
// Scroll back up so they can see the results from the beginning
window.scrollTo(0, 0);
var view = getPageData(page).view;
var html = '';
var pagingHtml = LibraryBrowser.getQueryPagingHtml({
startIndex: query.StartIndex,
limit: query.Limit,
totalRecordCount: result.TotalRecordCount,
showLimit: false,
updatePageSizeSetting: false,
addLayoutButton: true,
currentLayout: view,
filterButton: true
});
page.querySelector('.listTopPaging').innerHTML = pagingHtml;
updateFilterControls(page);
if (view == "List") {
html = LibraryBrowser.getListViewHtml({
items: result.Items,
context: 'music',
sortBy: query.SortBy
});
} }
else if (view == "Poster") { return context.savedQueryKey;
html = LibraryBrowser.getPosterViewHtml({ }
items: result.Items,
shape: "square", function reloadItems(page) {
context: 'music',
showTitle: true, Dashboard.showLoadingMsg();
coverImage: true,
lazy: true, var query = getQuery(page);
centerText: true,
overlayPlayButton: true ApiClient.getAlbumArtists(Dashboard.getCurrentUserId(), query).then(function (result) {
// Scroll back up so they can see the results from the beginning
window.scrollTo(0, 0);
var view = getPageData(page).view;
var html = '';
var pagingHtml = LibraryBrowser.getQueryPagingHtml({
startIndex: query.StartIndex,
limit: query.Limit,
totalRecordCount: result.TotalRecordCount,
showLimit: false,
updatePageSizeSetting: false,
addLayoutButton: true,
currentLayout: view,
filterButton: true
}); });
}
else if (view == "PosterCard") {
html = LibraryBrowser.getPosterViewHtml({ page.querySelector('.listTopPaging').innerHTML = pagingHtml;
items: result.Items,
shape: "square", updateFilterControls(page);
context: 'music',
showTitle: true, if (view == "List") {
coverImage: true,
lazy: true, html = LibraryBrowser.getListViewHtml({
cardLayout: true, items: result.Items,
showSongCount: true context: 'music',
sortBy: query.SortBy
});
}
else if (view == "Poster") {
html = LibraryBrowser.getPosterViewHtml({
items: result.Items,
shape: "square",
context: 'music',
showTitle: true,
coverImage: true,
lazy: true,
centerText: true,
overlayPlayButton: true
});
}
else if (view == "PosterCard") {
html = LibraryBrowser.getPosterViewHtml({
items: result.Items,
shape: "square",
context: 'music',
showTitle: true,
coverImage: true,
lazy: true,
cardLayout: true,
showSongCount: true
});
}
var elem = page.querySelector('#items');
elem.innerHTML = html + pagingHtml;
ImageLoader.lazyChildren(elem);
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);
}); });
}
var elem = page.querySelector('#items'); $('.btnPreviousPage', page).on('click', function () {
elem.innerHTML = html + pagingHtml; query.StartIndex -= query.Limit;
ImageLoader.lazyChildren(elem); reloadItems(page);
});
$('.btnNextPage', page).on('click', function () { $('.btnChangeLayout', page).on('layoutchange', function (e, layout) {
query.StartIndex += query.Limit; getPageData(page).view = layout;
reloadItems(page); LibraryBrowser.saveViewSetting(getSavedQueryKey(page), layout);
reloadItems(page);
});
$('.btnFilter', page).on('click', function () {
showFilterMenu(page);
});
LibraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
Dashboard.hideLoadingMsg();
}); });
}
$('.btnPreviousPage', page).on('click', function () { function showFilterMenu(page) {
query.StartIndex -= query.Limit;
reloadItems(page); require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
var filterDialog = new filterDialogFactory({
query: getQuery(page),
mode: 'albumartists'
});
Events.on(filterDialog, 'filterchange', function () {
reloadItems(page);
});
filterDialog.show();
}); });
}
$('.btnChangeLayout', page).on('layoutchange', function (e, layout) { function updateFilterControls(tabContent) {
getPageData(page).view = layout;
LibraryBrowser.saveViewSetting(getSavedQueryKey(page), layout);
reloadItems(page);
});
$('.btnFilter', page).on('click', function () { var query = getQuery(tabContent);
showFilterMenu(page);
});
LibraryBrowser.saveQueryValues(getSavedQueryKey(page), query); $('.alphabetPicker', tabContent).alphaValue(query.NameStartsWithOrGreater);
Dashboard.hideLoadingMsg(); }
});
}
function showFilterMenu(page) {
require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
var filterDialog = new filterDialogFactory({
query: getQuery(page),
mode: 'albumartists'
});
Events.on(filterDialog, 'filterchange', function () {
reloadItems(page);
});
filterDialog.show();
});
}
function updateFilterControls(tabContent) {
var query = getQuery(tabContent);
$('.alphabetPicker', tabContent).alphaValue(query.NameStartsWithOrGreater);
}
function initPage(tabContent) {
$('.alphabetPicker', tabContent).on('alphaselect', function (e, character) { $('.alphabetPicker', tabContent).on('alphaselect', function (e, character) {
@ -174,16 +176,11 @@
reloadItems(tabContent); reloadItems(tabContent);
}); });
}
window.MusicPage.initAlbumArtistsTab = function (page, tabContent) { self.renderTab = function () {
initPage(tabContent); reloadItems(tabContent);
}; };
window.MusicPage.renderAlbumArtistsTab = function (page, tabContent) {
reloadItems(tabContent);
}; };
}); });

View file

@ -1,214 +1,216 @@
define(['jQuery'], function ($) { define(['jQuery'], function ($) {
var data = {}; return function (view, params, tabContent) {
function getPageData(context) {
var key = getSavedQueryKey(context);
var pageData = data[key];
if (!pageData) { var self = this;
pageData = data[key] = {
query: {
SortBy: "SortName",
SortOrder: "Ascending",
IncludeItemTypes: "MusicAlbum",
Recursive: true,
Fields: "PrimaryImageAspectRatio,SortName,SyncInfo",
StartIndex: 0,
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
Limit: LibraryBrowser.getDefaultPageSize()
},
view: LibraryBrowser.getSavedView(key) || LibraryBrowser.getDefaultItemsView('Poster', 'Poster')
};
pageData.query.ParentId = LibraryMenu.getTopParentId(); var data = {};
LibraryBrowser.loadSavedQueryValues(key, pageData.query); function getPageData(context) {
var key = getSavedQueryKey(context);
var pageData = data[key];
if (!pageData) {
pageData = data[key] = {
query: {
SortBy: "SortName",
SortOrder: "Ascending",
IncludeItemTypes: "MusicAlbum",
Recursive: true,
Fields: "PrimaryImageAspectRatio,SortName,SyncInfo",
StartIndex: 0,
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
Limit: LibraryBrowser.getDefaultPageSize()
},
view: LibraryBrowser.getSavedView(key) || LibraryBrowser.getDefaultItemsView('Poster', 'Poster')
};
pageData.query.ParentId = LibraryMenu.getTopParentId();
LibraryBrowser.loadSavedQueryValues(key, pageData.query);
}
return pageData;
} }
return pageData;
}
function getQuery(context) { function getQuery(context) {
return getPageData(context).query; return getPageData(context).query;
}
function getSavedQueryKey(context) {
if (!context.savedQueryKey) {
context.savedQueryKey = LibraryBrowser.getSavedQueryKey('albums');
} }
return context.savedQueryKey;
}
function reloadItems(page) { function getSavedQueryKey(context) {
Dashboard.showLoadingMsg(); if (!context.savedQueryKey) {
context.savedQueryKey = LibraryBrowser.getSavedQueryKey('albums');
var query = getQuery(page);
ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) {
// Scroll back up so they can see the results from the beginning
window.scrollTo(0, 0);
var html = '';
var view = getPageData(page).view;
var pagingHtml = LibraryBrowser.getQueryPagingHtml({
startIndex: query.StartIndex,
limit: query.Limit,
totalRecordCount: result.TotalRecordCount,
showLimit: false,
sortButton: true,
addLayoutButton: true,
currentLayout: view,
updatePageSizeSetting: false,
layouts: 'List,Poster,PosterCard,Timeline',
filterButton: true
});
page.querySelector('.listTopPaging').innerHTML = pagingHtml;
updateFilterControls(page);
if (view == "Poster") {
html = LibraryBrowser.getPosterViewHtml({
items: result.Items,
shape: "square",
context: 'music',
showTitle: true,
showParentTitle: true,
lazy: true,
centerText: true,
overlayPlayButton: true
});
} }
else if (view == "PosterCard") { return context.savedQueryKey;
}
html = LibraryBrowser.getPosterViewHtml({ function reloadItems(page) {
items: result.Items,
shape: "square", Dashboard.showLoadingMsg();
context: 'music',
showTitle: true, var query = getQuery(page);
coverImage: true,
showParentTitle: true, ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) {
lazy: true,
cardLayout: true // Scroll back up so they can see the results from the beginning
window.scrollTo(0, 0);
var html = '';
var view = getPageData(page).view;
var pagingHtml = LibraryBrowser.getQueryPagingHtml({
startIndex: query.StartIndex,
limit: query.Limit,
totalRecordCount: result.TotalRecordCount,
showLimit: false,
sortButton: true,
addLayoutButton: true,
currentLayout: view,
updatePageSizeSetting: false,
layouts: 'List,Poster,PosterCard,Timeline',
filterButton: true
}); });
}
else if (view == "List") {
html = LibraryBrowser.getListViewHtml({ page.querySelector('.listTopPaging').innerHTML = pagingHtml;
items: result.Items,
context: 'music',
sortBy: query.SortBy
});
}
else if (view == "Timeline") {
html = LibraryBrowser.getPosterViewHtml({
items: result.Items,
shape: "square",
context: 'music',
showTitle: true,
showParentTitle: true,
timeline: true,
lazy: true
});
}
var elem = page.querySelector('#items'); updateFilterControls(page);
elem.innerHTML = html + pagingHtml;
ImageLoader.lazyChildren(elem);
$('.btnNextPage', page).on('click', function () { if (view == "Poster") {
query.StartIndex += query.Limit; html = LibraryBrowser.getPosterViewHtml({
reloadItems(page); items: result.Items,
}); shape: "square",
context: 'music',
showTitle: true,
showParentTitle: true,
lazy: true,
centerText: true,
overlayPlayButton: true
});
}
else if (view == "PosterCard") {
$('.btnPreviousPage', page).on('click', function () { html = LibraryBrowser.getPosterViewHtml({
query.StartIndex -= query.Limit; items: result.Items,
reloadItems(page); shape: "square",
}); context: 'music',
showTitle: true,
coverImage: true,
showParentTitle: true,
lazy: true,
cardLayout: true
});
}
else if (view == "List") {
$('.btnFilter', page).on('click', function () { html = LibraryBrowser.getListViewHtml({
showFilterMenu(page); items: result.Items,
}); context: 'music',
sortBy: query.SortBy
$('.btnChangeLayout', page).on('layoutchange', function (e, layout) { });
}
if (layout == 'Timeline') { else if (view == "Timeline") {
getQuery(page).SortBy = 'ProductionYear,PremiereDate,SortName'; html = LibraryBrowser.getPosterViewHtml({
getQuery(page).SortOrder = 'Descending'; items: result.Items,
shape: "square",
context: 'music',
showTitle: true,
showParentTitle: true,
timeline: true,
lazy: true
});
} }
getPageData(page).view = layout; var elem = page.querySelector('#items');
LibraryBrowser.saveViewSetting(getSavedQueryKey(page), layout); elem.innerHTML = html + pagingHtml;
reloadItems(page); ImageLoader.lazyChildren(elem);
});
// On callback make sure to set StartIndex = 0 $('.btnNextPage', page).on('click', function () {
$('.btnSort', page).on('click', function () { query.StartIndex += query.Limit;
LibraryBrowser.showSortMenu({ reloadItems(page);
items: [{
name: Globalize.translate('OptionNameSort'),
id: 'SortName'
},
{
name: Globalize.translate('OptionAlbumArtist'),
id: 'AlbumArtist,SortName'
},
{
name: Globalize.translate('OptionCommunityRating'),
id: 'CommunityRating,SortName'
},
{
name: Globalize.translate('OptionCriticRating'),
id: 'CriticRating,SortName'
},
{
name: Globalize.translate('OptionDateAdded'),
id: 'DateCreated,SortName'
},
{
name: Globalize.translate('OptionReleaseDate'),
id: 'ProductionYear,PremiereDate,SortName'
}],
callback: function () {
reloadItems(page);
},
query: query
}); });
$('.btnPreviousPage', page).on('click', function () {
query.StartIndex -= query.Limit;
reloadItems(page);
});
$('.btnFilter', page).on('click', function () {
showFilterMenu(page);
});
$('.btnChangeLayout', page).on('layoutchange', function (e, layout) {
if (layout == 'Timeline') {
getQuery(page).SortBy = 'ProductionYear,PremiereDate,SortName';
getQuery(page).SortOrder = 'Descending';
}
getPageData(page).view = layout;
LibraryBrowser.saveViewSetting(getSavedQueryKey(page), layout);
reloadItems(page);
});
// On callback make sure to set StartIndex = 0
$('.btnSort', page).on('click', function () {
LibraryBrowser.showSortMenu({
items: [{
name: Globalize.translate('OptionNameSort'),
id: 'SortName'
},
{
name: Globalize.translate('OptionAlbumArtist'),
id: 'AlbumArtist,SortName'
},
{
name: Globalize.translate('OptionCommunityRating'),
id: 'CommunityRating,SortName'
},
{
name: Globalize.translate('OptionCriticRating'),
id: 'CriticRating,SortName'
},
{
name: Globalize.translate('OptionDateAdded'),
id: 'DateCreated,SortName'
},
{
name: Globalize.translate('OptionReleaseDate'),
id: 'ProductionYear,PremiereDate,SortName'
}],
callback: function () {
reloadItems(page);
},
query: query
});
});
LibraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
Dashboard.hideLoadingMsg();
}); });
}
LibraryBrowser.saveQueryValues(getSavedQueryKey(page), query); function showFilterMenu(page) {
Dashboard.hideLoadingMsg();
});
}
function showFilterMenu(page) { require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
require(['components/filterdialog/filterdialog'], function (filterDialogFactory) { var filterDialog = new filterDialogFactory({
query: getQuery(page),
mode: 'albums'
});
var filterDialog = new filterDialogFactory({ Events.on(filterDialog, 'filterchange', function () {
query: getQuery(page), reloadItems(page);
mode: 'albums' });
filterDialog.show();
}); });
}
Events.on(filterDialog, 'filterchange', function () { function updateFilterControls(page) {
reloadItems(page);
});
filterDialog.show(); var query = getQuery(page);
});
}
function updateFilterControls(page) { $('.alphabetPicker', page).alphaValue(query.NameStartsWithOrGreater);
}
var query = getQuery(page);
$('.alphabetPicker', page).alphaValue(query.NameStartsWithOrGreater);
}
function initPage(tabContent) {
$('.alphabetPicker', tabContent).on('alphaselect', function (e, character) { $('.alphabetPicker', tabContent).on('alphaselect', function (e, character) {
@ -235,16 +237,10 @@
reloadItems(tabContent); reloadItems(tabContent);
}); });
}
window.MusicPage.initAlbumsTab = function (page, tabContent) { self.renderTab = function () {
initPage(tabContent); reloadItems(tabContent);
};
}; };
window.MusicPage.renderAlbumsTab = function (page, tabContent) {
reloadItems(tabContent);
};
}); });

View file

@ -1,161 +1,163 @@
define(['jQuery'], function ($) { define(['jQuery'], function ($) {
var data = {}; return function (view, params, tabContent) {
function getPageData(context) {
var key = getSavedQueryKey(context);
var pageData = data[key];
if (!pageData) { var self = this;
pageData = data[key] = {
query: {
SortBy: "SortName",
SortOrder: "Ascending",
Recursive: true,
Fields: "PrimaryImageAspectRatio,SortName,DateCreated,SyncInfo,ItemCounts",
StartIndex: 0,
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
Limit: LibraryBrowser.getDefaultPageSize()
},
view: LibraryBrowser.getSavedView(key) || LibraryBrowser.getDefaultItemsView('Poster', 'Poster')
};
pageData.query.ParentId = LibraryMenu.getTopParentId(); var data = {};
LibraryBrowser.loadSavedQueryValues(key, pageData.query); function getPageData(context) {
var key = getSavedQueryKey(context);
var pageData = data[key];
if (!pageData) {
pageData = data[key] = {
query: {
SortBy: "SortName",
SortOrder: "Ascending",
Recursive: true,
Fields: "PrimaryImageAspectRatio,SortName,DateCreated,SyncInfo,ItemCounts",
StartIndex: 0,
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
Limit: LibraryBrowser.getDefaultPageSize()
},
view: LibraryBrowser.getSavedView(key) || LibraryBrowser.getDefaultItemsView('Poster', 'Poster')
};
pageData.query.ParentId = LibraryMenu.getTopParentId();
LibraryBrowser.loadSavedQueryValues(key, pageData.query);
}
return pageData;
} }
return pageData;
}
function getQuery(context) { function getQuery(context) {
return getPageData(context).query; return getPageData(context).query;
}
function getSavedQueryKey(context) {
if (!context.savedQueryKey) {
context.savedQueryKey = LibraryBrowser.getSavedQueryKey('artists');
} }
return context.savedQueryKey;
}
function reloadItems(page) { function getSavedQueryKey(context) {
Dashboard.showLoadingMsg(); if (!context.savedQueryKey) {
context.savedQueryKey = LibraryBrowser.getSavedQueryKey('artists');
var query = getQuery(page);
ApiClient.getArtists(Dashboard.getCurrentUserId(), query).then(function (result) {
// Scroll back up so they can see the results from the beginning
window.scrollTo(0, 0);
var view = getPageData(page).view;
var html = '';
var pagingHtml = LibraryBrowser.getQueryPagingHtml({
startIndex: query.StartIndex,
limit: query.Limit,
totalRecordCount: result.TotalRecordCount,
showLimit: false,
updatePageSizeSetting: false,
addLayoutButton: true,
currentLayout: view,
filterButton: true
});
page.querySelector('.listTopPaging').innerHTML = pagingHtml;
updateFilterControls(page);
if (view == "List") {
html = LibraryBrowser.getListViewHtml({
items: result.Items,
context: 'music',
sortBy: query.SortBy
});
} }
else if (view == "Poster") { return context.savedQueryKey;
html = LibraryBrowser.getPosterViewHtml({ }
items: result.Items,
shape: "square", function reloadItems(page) {
context: 'music',
showTitle: true, Dashboard.showLoadingMsg();
coverImage: true,
lazy: true, var query = getQuery(page);
centerText: true,
overlayPlayButton: true ApiClient.getArtists(Dashboard.getCurrentUserId(), query).then(function (result) {
// Scroll back up so they can see the results from the beginning
window.scrollTo(0, 0);
var view = getPageData(page).view;
var html = '';
var pagingHtml = LibraryBrowser.getQueryPagingHtml({
startIndex: query.StartIndex,
limit: query.Limit,
totalRecordCount: result.TotalRecordCount,
showLimit: false,
updatePageSizeSetting: false,
addLayoutButton: true,
currentLayout: view,
filterButton: true
}); });
}
else if (view == "PosterCard") {
html = LibraryBrowser.getPosterViewHtml({ page.querySelector('.listTopPaging').innerHTML = pagingHtml;
items: result.Items,
shape: "square", updateFilterControls(page);
context: 'music',
showTitle: true, if (view == "List") {
coverImage: true,
lazy: true, html = LibraryBrowser.getListViewHtml({
cardLayout: true, items: result.Items,
showSongCount: true context: 'music',
sortBy: query.SortBy
});
}
else if (view == "Poster") {
html = LibraryBrowser.getPosterViewHtml({
items: result.Items,
shape: "square",
context: 'music',
showTitle: true,
coverImage: true,
lazy: true,
centerText: true,
overlayPlayButton: true
});
}
else if (view == "PosterCard") {
html = LibraryBrowser.getPosterViewHtml({
items: result.Items,
shape: "square",
context: 'music',
showTitle: true,
coverImage: true,
lazy: true,
cardLayout: true,
showSongCount: true
});
}
var elem = page.querySelector('#items');
elem.innerHTML = html + pagingHtml;
ImageLoader.lazyChildren(elem);
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);
}); });
}
var elem = page.querySelector('#items'); $('.btnPreviousPage', page).on('click', function () {
elem.innerHTML = html + pagingHtml; query.StartIndex -= query.Limit;
ImageLoader.lazyChildren(elem); reloadItems(page);
});
$('.btnNextPage', page).on('click', function () { $('.btnChangeLayout', page).on('layoutchange', function (e, layout) {
query.StartIndex += query.Limit; getPageData(page).view = layout;
reloadItems(page); LibraryBrowser.saveViewSetting(getSavedQueryKey(page), layout);
reloadItems(page);
});
$('.btnFilter', page).on('click', function () {
showFilterMenu(page);
});
LibraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
Dashboard.hideLoadingMsg();
}); });
}
$('.btnPreviousPage', page).on('click', function () { function showFilterMenu(page) {
query.StartIndex -= query.Limit;
reloadItems(page); require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
var filterDialog = new filterDialogFactory({
query: getQuery(page),
mode: 'artists'
});
Events.on(filterDialog, 'filterchange', function () {
reloadItems(page);
});
filterDialog.show();
}); });
}
$('.btnChangeLayout', page).on('layoutchange', function (e, layout) { function updateFilterControls(tabContent) {
getPageData(page).view = layout;
LibraryBrowser.saveViewSetting(getSavedQueryKey(page), layout);
reloadItems(page);
});
$('.btnFilter', page).on('click', function () { var query = getQuery(tabContent);
showFilterMenu(page);
});
LibraryBrowser.saveQueryValues(getSavedQueryKey(page), query); $('.alphabetPicker', tabContent).alphaValue(query.NameStartsWithOrGreater);
Dashboard.hideLoadingMsg(); }
});
}
function showFilterMenu(page) {
require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
var filterDialog = new filterDialogFactory({
query: getQuery(page),
mode: 'artists'
});
Events.on(filterDialog, 'filterchange', function () {
reloadItems(page);
});
filterDialog.show();
});
}
function updateFilterControls(tabContent) {
var query = getQuery(tabContent);
$('.alphabetPicker', tabContent).alphaValue(query.NameStartsWithOrGreater);
}
function initPage(tabContent) {
$('.alphabetPicker', tabContent).on('alphaselect', function (e, character) { $('.alphabetPicker', tabContent).on('alphaselect', function (e, character) {
@ -174,16 +176,9 @@
reloadItems(tabContent); reloadItems(tabContent);
}); });
} self.renderTab = function () {
window.MusicPage.initArtistsTab = function (page, tabContent) { reloadItems(tabContent);
};
initPage(tabContent);
}; };
window.MusicPage.renderArtistsTab = function (page, tabContent) {
reloadItems(tabContent);
};
}); });

View file

@ -1,107 +1,107 @@
define(['jQuery'], function ($) { define(['jQuery'], function ($) {
var data = {}; return function (view, params, tabContent) {
function getPageData() {
var key = getSavedQueryKey();
var pageData = data[key];
if (!pageData) { var self = this;
pageData = data[key] = {
query: {
SortBy: "SortName",
SortOrder: "Ascending",
Fields: "PrimaryImageAspectRatio,SortName,SyncInfo",
StartIndex: 0,
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
Limit: LibraryBrowser.getDefaultPageSize()
},
view: LibraryBrowser.getSavedView(key) || LibraryBrowser.getDefaultItemsView('Poster', 'Poster')
};
pageData.query.ParentId = LibraryMenu.getTopParentId(); var data = {};
LibraryBrowser.loadSavedQueryValues(key, pageData.query); function getPageData() {
} var key = getSavedQueryKey();
return pageData; var pageData = data[key];
}
function getQuery() { if (!pageData) {
pageData = data[key] = {
query: {
SortBy: "SortName",
SortOrder: "Ascending",
Fields: "PrimaryImageAspectRatio,SortName,SyncInfo",
StartIndex: 0,
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
Limit: LibraryBrowser.getDefaultPageSize()
},
view: LibraryBrowser.getSavedView(key) || LibraryBrowser.getDefaultItemsView('Poster', 'Poster')
};
return getPageData().query; pageData.query.ParentId = LibraryMenu.getTopParentId();
} LibraryBrowser.loadSavedQueryValues(key, pageData.query);
function getSavedQueryKey() {
return LibraryBrowser.getSavedQueryKey('folders');
}
function reloadItems(page, viewPanel) {
Dashboard.showLoadingMsg();
var query = getQuery();
ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) {
// Scroll back up so they can see the results from the beginning
window.scrollTo(0, 0);
var html = '';
var view = getPageData().view;
var pagingHtml = LibraryBrowser.getQueryPagingHtml({
startIndex: query.StartIndex,
limit: query.Limit,
totalRecordCount: result.TotalRecordCount,
viewButton: false,
showLimit: false,
sortButton: false,
addLayoutButton: false,
currentLayout: view,
updatePageSizeSetting: false,
viewIcon: 'filter-list',
layouts: 'List,Poster,PosterCard,Timeline'
});
page.querySelector('.listTopPaging').innerHTML = pagingHtml;
if (view == "Poster") {
html = LibraryBrowser.getPosterViewHtml({
items: result.Items,
shape: "square",
context: 'folders',
showTitle: true,
showParentTitle: true,
lazy: true,
centerText: true,
overlayPlayButton: true
});
} }
return pageData;
}
var elem = page.querySelector('#items'); function getQuery() {
elem.innerHTML = html + pagingHtml;
ImageLoader.lazyChildren(elem);
$('.btnNextPage', page).on('click', function () { return getPageData().query;
query.StartIndex += query.Limit; }
reloadItems(page, viewPanel);
function getSavedQueryKey() {
return LibraryBrowser.getSavedQueryKey('folders');
}
function reloadItems(context) {
Dashboard.showLoadingMsg();
var query = getQuery();
ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) {
// Scroll back up so they can see the results from the beginning
window.scrollTo(0, 0);
var html = '';
var view = getPageData().view;
var pagingHtml = LibraryBrowser.getQueryPagingHtml({
startIndex: query.StartIndex,
limit: query.Limit,
totalRecordCount: result.TotalRecordCount,
viewButton: false,
showLimit: false,
sortButton: false,
addLayoutButton: false,
currentLayout: view,
updatePageSizeSetting: false,
viewIcon: 'filter-list',
layouts: 'List,Poster,PosterCard,Timeline'
});
context.querySelector('.listTopPaging').innerHTML = pagingHtml;
if (view == "Poster") {
html = LibraryBrowser.getPosterViewHtml({
items: result.Items,
shape: "square",
context: 'folders',
showTitle: true,
showParentTitle: true,
lazy: true,
centerText: true,
overlayPlayButton: true
});
}
var elem = context.querySelector('#items');
elem.innerHTML = html + pagingHtml;
ImageLoader.lazyChildren(elem);
$('.btnNextPage', context).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(context);
});
$('.btnPreviousPage', context).on('click', function () {
query.StartIndex -= query.Limit;
reloadItems(context);
});
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
Dashboard.hideLoadingMsg();
}); });
}
self.renderTab = function () {
$('.btnPreviousPage', page).on('click', function () { reloadItems(tabContent);
query.StartIndex -= query.Limit; };
reloadItems(page, viewPanel);
});
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
Dashboard.hideLoadingMsg();
});
}
window.MusicPage.initFoldersTab = function (page, tabContent) {
};
window.MusicPage.renderFoldersTab = function (page, tabContent) {
reloadItems(tabContent);
}; };
}); });

View file

@ -1,131 +1,136 @@
define(['jQuery'], function ($) { define(['jQuery'], function ($) {
var data = {}; return function (view, params, tabContent) {
function getPageData() {
var key = getSavedQueryKey();
var pageData = data[key];
if (!pageData) { var self = this;
pageData = data[key] = {
query: {
SortBy: "SortName",
SortOrder: "Ascending",
IncludeItemTypes: "Audio,MusicVideo",
Recursive: true,
Fields: "DateCreated,SyncInfo,ItemCounts",
StartIndex: 0,
Limit: LibraryBrowser.getDefaultPageSize()
},
view: LibraryBrowser.getSavedView(key) || LibraryBrowser.getDefaultItemsView('Thumb', 'Thumb')
};
pageData.query.ParentId = LibraryMenu.getTopParentId(); var data = {};
LibraryBrowser.loadSavedQueryValues(key, pageData.query); function getPageData() {
var key = getSavedQueryKey();
var pageData = data[key];
if (!pageData) {
pageData = data[key] = {
query: {
SortBy: "SortName",
SortOrder: "Ascending",
IncludeItemTypes: "Audio,MusicVideo",
Recursive: true,
Fields: "DateCreated,SyncInfo,ItemCounts",
StartIndex: 0,
Limit: LibraryBrowser.getDefaultPageSize()
},
view: LibraryBrowser.getSavedView(key) || LibraryBrowser.getDefaultItemsView('Thumb', 'Thumb')
};
pageData.query.ParentId = LibraryMenu.getTopParentId();
LibraryBrowser.loadSavedQueryValues(key, pageData.query);
}
return pageData;
} }
return pageData;
}
function getQuery() { function getQuery() {
return getPageData().query; return getPageData().query;
} }
function getSavedQueryKey() { function getSavedQueryKey() {
return LibraryBrowser.getSavedQueryKey('genres'); return LibraryBrowser.getSavedQueryKey('genres');
} }
function reloadItems(page) { function reloadItems(context) {
Dashboard.showLoadingMsg(); Dashboard.showLoadingMsg();
var query = getQuery(); var query = getQuery();
ApiClient.getMusicGenres(Dashboard.getCurrentUserId(), query).then(function (result) { ApiClient.getMusicGenres(Dashboard.getCurrentUserId(), query).then(function (result) {
// Scroll back up so they can see the results from the beginning // Scroll back up so they can see the results from the beginning
window.scrollTo(0, 0); window.scrollTo(0, 0);
var html = ''; var html = '';
var view = getPageData().view; var view = getPageData().view;
$('.listTopPaging', page).html(LibraryBrowser.getQueryPagingHtml({ $('.listTopPaging', context).html(LibraryBrowser.getQueryPagingHtml({
startIndex: query.StartIndex, startIndex: query.StartIndex,
limit: query.Limit, limit: query.Limit,
totalRecordCount: result.TotalRecordCount, totalRecordCount: result.TotalRecordCount,
showLimit: false, showLimit: false,
updatePageSizeSetting: false, updatePageSizeSetting: false,
addLayoutButton: true, addLayoutButton: true,
currentLayout: view currentLayout: view
})); }));
if (view == "Thumb") { if (view == "Thumb") {
html = LibraryBrowser.getPosterViewHtml({ html = LibraryBrowser.getPosterViewHtml({
items: result.Items, items: result.Items,
shape: "backdrop", shape: "backdrop",
preferThumb: true, preferThumb: true,
showItemCounts: true, showItemCounts: true,
context: 'music', context: 'music',
lazy: true, lazy: true,
centerText: true, centerText: true,
overlayPlayButton: true overlayPlayButton: true
});
}
else if (view == "ThumbCard") {
html = LibraryBrowser.getPosterViewHtml({
items: result.Items,
shape: "backdrop",
preferThumb: true,
context: 'music',
showItemCounts: true,
cardLayout: true,
lazy: true,
showTitle: true
});
}
else if (view == "Poster") {
html = LibraryBrowser.getPosterViewHtml({
items: result.Items,
shape: "portrait",
context: 'music',
centerText: true,
showItemCounts: true,
lazy: true
});
}
var elem = context.querySelector('#items');
elem.innerHTML = html;
ImageLoader.lazyChildren(elem);
$('.btnNextPage', context).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(context);
}); });
}
else if (view == "ThumbCard") {
html = LibraryBrowser.getPosterViewHtml({ $('.btnPreviousPage', context).on('click', function () {
items: result.Items, query.StartIndex -= query.Limit;
shape: "backdrop", reloadItems(context);
preferThumb: true,
context: 'music',
showItemCounts: true,
cardLayout: true,
lazy: true,
showTitle: true
}); });
}
else if (view == "Poster") { $('.btnChangeLayout', context).on('layoutchange', function (e, layout) {
html = LibraryBrowser.getPosterViewHtml({ getPageData().view = layout;
items: result.Items, LibraryBrowser.saveViewSetting(getSavedQueryKey(), layout);
shape: "portrait", reloadItems(context);
context: 'music',
centerText: true,
showItemCounts: true,
lazy: true
}); });
}
var elem = page.querySelector('#items'); LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
elem.innerHTML = html;
ImageLoader.lazyChildren(elem);
$('.btnNextPage', page).on('click', function () { Dashboard.hideLoadingMsg();
query.StartIndex += query.Limit;
reloadItems(page);
}); });
}
$('.btnPreviousPage', page).on('click', function () { self.renderTab = function () {
query.StartIndex -= query.Limit;
reloadItems(page);
});
$('.btnChangeLayout', page).on('layoutchange', function (e, layout) { reloadItems(tabContent);
getPageData().view = layout; };
LibraryBrowser.saveViewSetting(getSavedQueryKey(), layout);
reloadItems(page);
});
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
Dashboard.hideLoadingMsg();
});
}
window.MusicPage.renderGenresTab = function (page, tabContent) {
reloadItems(tabContent);
}; };
}); });

View file

@ -185,18 +185,6 @@
}); });
} }
function initSuggestedTab(page, tabContent) {
var containers = tabContent.querySelectorAll('.itemsContainer');
if (enableScrollX()) {
$(containers).addClass('hiddenScrollX');
} else {
$(containers).removeClass('hiddenScrollX');
}
$(containers).createCardMenus();
}
function loadSuggestionsTab(page, tabContent) { function loadSuggestionsTab(page, tabContent) {
var parentId = LibraryMenu.getTopParentId(); var parentId = LibraryMenu.getTopParentId();
@ -214,93 +202,6 @@
}); });
} }
function loadTab(page, index) {
var tabContent = page.querySelector('.pageTabContent[data-index=\'' + index + '\']');
var depends = [];
var scope = 'MusicPage';
var renderMethod = '';
var initMethod = '';
switch (index) {
case 0:
initMethod = 'initSuggestedTab';
renderMethod = 'renderSuggestedTab';
break;
case 1:
depends.push('scripts/musicalbums');
renderMethod = 'renderAlbumsTab';
initMethod = 'initAlbumsTab';
break;
case 2:
depends.push('scripts/musicalbumartists');
renderMethod = 'renderAlbumArtistsTab';
initMethod = 'initAlbumArtistsTab';
break;
case 3:
depends.push('scripts/musicartists');
renderMethod = 'renderArtistsTab';
initMethod = 'initArtistsTab';
break;
case 4:
depends.push('scripts/songs');
renderMethod = 'renderSongsTab';
depends.push('paper-icon-item');
depends.push('paper-item-body');
break;
case 5:
depends.push('scripts/musicgenres');
renderMethod = 'renderGenresTab';
break;
case 6:
depends.push('scripts/musicfolders');
renderMethod = 'renderFoldersTab';
initMethod = 'initFoldersTab';
break;
default:
break;
}
require(depends, function () {
if (initMethod && !tabContent.initComplete) {
window[scope][initMethod](page, tabContent);
tabContent.initComplete = true;
}
window[scope][renderMethod](page, tabContent);
});
}
window.MusicPage = window.MusicPage || {};
window.MusicPage.renderSuggestedTab = loadSuggestionsTab;
window.MusicPage.initSuggestedTab = initSuggestedTab;
pageIdOn('pageinit', "musicRecommendedPage", function () {
var page = this;
$('.recommendations', page).createCardMenus();
var mdlTabs = page.querySelector('.libraryViewNav');
var baseUrl = 'music.html';
var topParentId = LibraryMenu.getTopParentId();
if (topParentId) {
baseUrl += '?topParentId=' + topParentId;
}
libraryBrowser.configurePaperLibraryTabs(page, mdlTabs, page.querySelectorAll('.pageTabContent'));
mdlTabs.addEventListener('tabchange', function (e) {
loadTab(page, parseInt(e.detail.selectedTabIndex));
});
});
pageIdOn('pagebeforeshow', "musicRecommendedPage", function () { pageIdOn('pagebeforeshow', "musicRecommendedPage", function () {
var page = this; var page = this;
@ -326,5 +227,124 @@
}); });
return function (view, params) {
var self = this;
function reload() {
Dashboard.showLoadingMsg();
var tabContent = view.querySelector('.pageTabContent[data-index=\'' + 0 + '\']');
loadSuggestionsTab(view, tabContent);
}
function enableScrollX() {
return browserInfo.mobile && AppInfo.enableAppLayouts;
}
function getThumbShape() {
return enableScrollX() ? 'overflowBackdrop' : 'backdrop';
}
self.initTab = function () {
var tabContent = view.querySelector('.pageTabContent[data-index=\'' + 0 + '\']');
var containers = tabContent.querySelectorAll('.itemsContainer');
if (enableScrollX()) {
$(containers).addClass('hiddenScrollX');
} else {
$(containers).removeClass('hiddenScrollX');
}
$(containers).createCardMenus();
};
self.renderTab = function () {
reload();
};
var tabControllers = [];
var renderedTabs = [];
function loadTab(page, index) {
var tabContent = page.querySelector('.pageTabContent[data-index=\'' + index + '\']');
var depends = [];
switch (index) {
case 0:
break;
case 1:
depends.push('scripts/musicalbums');
break;
case 2:
depends.push('scripts/musicalbumartists');
break;
case 3:
depends.push('scripts/musicartists');
break;
case 4:
depends.push('scripts/songs');
depends.push('paper-icon-item');
depends.push('paper-item-body');
break;
case 5:
depends.push('scripts/musicgenres');
break;
case 6:
depends.push('scripts/musicfolders');
break;
default:
break;
}
require(depends, function (controllerFactory) {
if (index == 0) {
self.tabContent = tabContent;
}
var controller = tabControllers[index];
if (!controller) {
controller = index ? new controllerFactory(view, params, tabContent) : self;
tabControllers[index] = controller;
if (controller.initTab) {
controller.initTab();
}
}
if (renderedTabs.indexOf(index) == -1) {
renderedTabs.push(index);
controller.renderTab();
}
});
}
var mdlTabs = view.querySelector('.libraryViewNav');
var baseUrl = 'music.html';
var topParentId = params.topParentId;
if (topParentId) {
baseUrl += '?topParentId=' + topParentId;
}
libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'));
mdlTabs.addEventListener('tabchange', function (e) {
loadTab(view, parseInt(e.detail.selectedTabIndex));
});
view.addEventListener('viewdestroy', function (e) {
tabControllers.forEach(function (t) {
if (t.destroy) {
t.destroy();
}
});
});
};
}); });

View file

@ -2281,7 +2281,7 @@ var AppInfo = {};
var baseUrl = 'bower_components/emby-webcomponents/strings/'; var baseUrl = 'bower_components/emby-webcomponents/strings/';
var languages = ['en-US']; var languages = ['en-US', 'kk', 'ru'];
var translations = languages.map(function (i) { var translations = languages.map(function (i) {
return { return {
@ -2613,7 +2613,7 @@ var AppInfo = {};
defineRoute({ defineRoute({
path: '/livetv.html', path: '/livetv.html',
dependencies: ['paper-button', 'livetvcss', 'paper-checkbox'], dependencies: ['paper-button', 'livetvcss'],
controller: 'scripts/livetvsuggested', controller: 'scripts/livetvsuggested',
autoFocus: false autoFocus: false
}); });
@ -2736,7 +2736,8 @@ var AppInfo = {};
defineRoute({ defineRoute({
path: '/music.html', path: '/music.html',
dependencies: [], dependencies: ['scripts/alphapicker'],
controller: 'scripts/musicrecommended',
autoFocus: false autoFocus: false
}); });

View file

@ -1,166 +1,171 @@
define(['jQuery'], function ($) { define(['jQuery'], function ($) {
var defaultSortBy = "Album,SortName";
var data = {}; return function (view, params, tabContent) {
function getPageData(context) {
var key = getSavedQueryKey(context);
var pageData = data[key];
if (!pageData) { var self = this;
pageData = data[key] = {
query: {
SortBy: defaultSortBy,
SortOrder: "Ascending",
IncludeItemTypes: "Audio",
Recursive: true,
Fields: "AudioInfo,ParentId,SyncInfo",
Limit: 100,
StartIndex: 0,
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
}
};
pageData.query.ParentId = LibraryMenu.getTopParentId(); var defaultSortBy = "Album,SortName";
LibraryBrowser.loadSavedQueryValues(key, pageData.query);
var data = {};
function getPageData(context) {
var key = getSavedQueryKey(context);
var pageData = data[key];
if (!pageData) {
pageData = data[key] = {
query: {
SortBy: defaultSortBy,
SortOrder: "Ascending",
IncludeItemTypes: "Audio",
Recursive: true,
Fields: "AudioInfo,ParentId,SyncInfo",
Limit: 100,
StartIndex: 0,
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
}
};
pageData.query.ParentId = LibraryMenu.getTopParentId();
LibraryBrowser.loadSavedQueryValues(key, pageData.query);
}
return pageData;
} }
return pageData;
}
function getQuery(context) { function getQuery(context) {
return getPageData(context).query; return getPageData(context).query;
}
function getSavedQueryKey(context) {
if (!context.savedQueryKey) {
context.savedQueryKey = LibraryBrowser.getSavedQueryKey('songs');
} }
return context.savedQueryKey;
}
function reloadItems(page) { function getSavedQueryKey(context) {
Dashboard.showLoadingMsg(); if (!context.savedQueryKey) {
context.savedQueryKey = LibraryBrowser.getSavedQueryKey('songs');
}
return context.savedQueryKey;
}
var query = getQuery(page); function reloadItems(context) {
ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) {
// Scroll back up so they can see the results from the beginning Dashboard.showLoadingMsg();
window.scrollTo(0, 0);
var html = ''; var query = getQuery(context);
var pagingHtml = LibraryBrowser.getQueryPagingHtml({ ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) {
startIndex: query.StartIndex,
limit: query.Limit,
totalRecordCount: result.TotalRecordCount,
showLimit: false,
sortButton: true,
updatePageSizeSetting: false,
filterButton: true
});
page.querySelector('.listTopPaging').innerHTML = pagingHtml; // Scroll back up so they can see the results from the beginning
window.scrollTo(0, 0);
html += LibraryBrowser.getListViewHtml({ var html = '';
items: result.Items, var pagingHtml = LibraryBrowser.getQueryPagingHtml({
showIndex: true, startIndex: query.StartIndex,
defaultAction: 'play', limit: query.Limit,
smallIcon: true totalRecordCount: result.TotalRecordCount,
}); showLimit: false,
sortButton: true,
var elem = page.querySelector('#items'); updatePageSizeSetting: false,
elem.innerHTML = html + pagingHtml; filterButton: true
ImageLoader.lazyChildren(elem);
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);
});
$('.btnPreviousPage', page).on('click', function () {
query.StartIndex -= query.Limit;
reloadItems(page);
});
$('.btnFilter', page).on('click', function () {
showFilterMenu(page);
});
// On callback make sure to set StartIndex = 0
$('.btnSort', page).on('click', function () {
LibraryBrowser.showSortMenu({
items: [{
name: Globalize.translate('OptionTrackName'),
id: 'Name'
},
{
name: Globalize.translate('OptionAlbum'),
id: 'Album,SortName'
},
{
name: Globalize.translate('OptionAlbumArtist'),
id: 'AlbumArtist,Album,SortName'
},
{
name: Globalize.translate('OptionArtist'),
id: 'Artist,Album,SortName'
},
{
name: Globalize.translate('OptionDateAdded'),
id: 'DateCreated,SortName'
},
{
name: Globalize.translate('OptionDatePlayed'),
id: 'DatePlayed,SortName'
},
{
name: Globalize.translate('OptionPlayCount'),
id: 'PlayCount,SortName'
},
{
name: Globalize.translate('OptionReleaseDate'),
id: 'PremiereDate,AlbumArtist,Album,SortName'
},
{
name: Globalize.translate('OptionRuntime'),
id: 'Runtime,AlbumArtist,Album,SortName'
}],
callback: function () {
reloadItems(page);
},
query: query
}); });
context.querySelector('.listTopPaging').innerHTML = pagingHtml;
html += LibraryBrowser.getListViewHtml({
items: result.Items,
showIndex: true,
defaultAction: 'play',
smallIcon: true
});
var elem = context.querySelector('#items');
elem.innerHTML = html + pagingHtml;
ImageLoader.lazyChildren(elem);
$('.btnNextPage', context).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(context);
});
$('.btnPreviousPage', context).on('click', function () {
query.StartIndex -= query.Limit;
reloadItems(context);
});
$('.btnFilter', context).on('click', function () {
showFilterMenu(context);
});
// On callback make sure to set StartIndex = 0
$('.btnSort', context).on('click', function () {
LibraryBrowser.showSortMenu({
items: [{
name: Globalize.translate('OptionTrackName'),
id: 'Name'
},
{
name: Globalize.translate('OptionAlbum'),
id: 'Album,SortName'
},
{
name: Globalize.translate('OptionAlbumArtist'),
id: 'AlbumArtist,Album,SortName'
},
{
name: Globalize.translate('OptionArtist'),
id: 'Artist,Album,SortName'
},
{
name: Globalize.translate('OptionDateAdded'),
id: 'DateCreated,SortName'
},
{
name: Globalize.translate('OptionDatePlayed'),
id: 'DatePlayed,SortName'
},
{
name: Globalize.translate('OptionPlayCount'),
id: 'PlayCount,SortName'
},
{
name: Globalize.translate('OptionReleaseDate'),
id: 'PremiereDate,AlbumArtist,Album,SortName'
},
{
name: Globalize.translate('OptionRuntime'),
id: 'Runtime,AlbumArtist,Album,SortName'
}],
callback: function () {
reloadItems(context);
},
query: query
});
});
LibraryBrowser.saveQueryValues(getSavedQueryKey(context), query);
Dashboard.hideLoadingMsg();
}); });
}
LibraryBrowser.saveQueryValues(getSavedQueryKey(page), query); function showFilterMenu(context) {
Dashboard.hideLoadingMsg(); require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
});
}
function showFilterMenu(page) { var filterDialog = new filterDialogFactory({
query: getQuery(context),
mode: 'songs'
});
require(['components/filterdialog/filterdialog'], function (filterDialogFactory) { Events.on(filterDialog, 'filterchange', function () {
reloadItems(context);
});
var filterDialog = new filterDialogFactory({ filterDialog.show();
query: getQuery(page),
mode: 'songs'
}); });
}
self.renderTab = function () {
Events.on(filterDialog, 'filterchange', function () { reloadItems(tabContent);
reloadItems(page); };
});
filterDialog.show();
});
}
window.MusicPage.renderSongsTab = function (page, tabContent) {
reloadItems(tabContent);
}; };
}); });