mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
commit
f1e119651a
28 changed files with 1681 additions and 1532 deletions
|
@ -16,12 +16,12 @@
|
|||
},
|
||||
"devDependencies": {},
|
||||
"ignore": [],
|
||||
"version": "1.3.26",
|
||||
"_release": "1.3.26",
|
||||
"version": "1.3.27",
|
||||
"_release": "1.3.27",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "1.3.26",
|
||||
"commit": "094d2fc7c9e0c008e1c44744da95a69d1aa6516f"
|
||||
"tag": "1.3.27",
|
||||
"commit": "d50eb817e00a23afb8fd5c5fe5a08745de291951"
|
||||
},
|
||||
"_source": "https://github.com/MediaBrowser/emby-webcomponents.git",
|
||||
"_target": "^1.2.0",
|
||||
|
|
53
dashboard-ui/bower_components/emby-webcomponents/strings/kk.json
vendored
Normal file
53
dashboard-ui/bower_components/emby-webcomponents/strings/kk.json
vendored
Normal 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"
|
||||
}
|
53
dashboard-ui/bower_components/emby-webcomponents/strings/ru.json
vendored
Normal file
53
dashboard-ui/bower_components/emby-webcomponents/strings/ru.json
vendored
Normal 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"
|
||||
}
|
|
@ -30,14 +30,14 @@
|
|||
"web-component-tester": "polymer/web-component-tester#^3.4.0"
|
||||
},
|
||||
"ignore": [],
|
||||
"homepage": "https://github.com/PolymerElements/iron-a11y-announcer",
|
||||
"homepage": "https://github.com/polymerelements/iron-a11y-announcer",
|
||||
"_release": "1.0.4",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "v1.0.4",
|
||||
"commit": "5ce3eb8c4282bb53cd72e348858dc6be6b4c50b9"
|
||||
},
|
||||
"_source": "git://github.com/PolymerElements/iron-a11y-announcer.git",
|
||||
"_source": "git://github.com/polymerelements/iron-a11y-announcer.git",
|
||||
"_target": "^1.0.0",
|
||||
"_originalSource": "PolymerElements/iron-a11y-announcer"
|
||||
"_originalSource": "polymerelements/iron-a11y-announcer"
|
||||
}
|
|
@ -34,6 +34,6 @@
|
|||
"commit": "11c987b2eb3c73b388a79fc8aaea8ca01624f514"
|
||||
},
|
||||
"_source": "git://github.com/Polymer/polymer.git",
|
||||
"_target": "^1.0.0",
|
||||
"_target": "^1.1.0",
|
||||
"_originalSource": "Polymer/polymer"
|
||||
}
|
|
@ -185,7 +185,6 @@
|
|||
text-transform: uppercase;
|
||||
white-space: nowrap;
|
||||
padding: 0 0 0;
|
||||
box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
.libraryViewNav.bottom {
|
||||
|
@ -195,7 +194,6 @@
|
|||
|
||||
|
||||
.libraryViewNav {
|
||||
justify-content: center;
|
||||
display: flex;
|
||||
display: block;
|
||||
text-align: center;
|
||||
|
@ -224,8 +222,17 @@
|
|||
height: auto;
|
||||
min-width: 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 {
|
||||
font-weight: 500 !important;
|
||||
}
|
||||
|
@ -234,19 +241,21 @@
|
|||
color: #fff !important;
|
||||
}
|
||||
|
||||
.libraryViewNav .pageTabButton:before {
|
||||
.libraryViewNav .pageTabButton:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 0;
|
||||
border: 0;
|
||||
bottom: 0;
|
||||
height: 2px;
|
||||
transition: all .12s cubic-bezier(.4,0,1,1);
|
||||
transition: all .2s cubic-bezier(.4,0,1,1);
|
||||
right: 0;
|
||||
transform: translateX(-100%);
|
||||
border-radius: 0;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.libraryViewNav .pageTabButton.is-active:before {
|
||||
.libraryViewNav .pageTabButton.is-active:after {
|
||||
transform: none;
|
||||
background: #52B54B;
|
||||
}
|
||||
|
@ -448,6 +457,9 @@ body:not(.dashboardDocument) .btnNotifications {
|
|||
|
||||
.darkDrawerPanel #drawer {
|
||||
background-color: #212121 !important;
|
||||
/*background-color: rgba(40,40,40,.8) !important;
|
||||
-webkit-backdrop-filter: blur(5px);
|
||||
backdrop-filter: blur(5px);*/
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
|
|
|
@ -1562,12 +1562,12 @@ emby-collapsible > .style-scope {
|
|||
|
||||
.ui-body-b .emby-collapsible-button {
|
||||
border: 1px solid #222;
|
||||
background-color: #444;
|
||||
background-color: #383838;
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
.ui-body-b .emby-collapsible-title {
|
||||
margin: .25em 0;
|
||||
margin: 0;
|
||||
color: #fff;
|
||||
padding: 0 0 0 .5em;
|
||||
font-weight: 500;
|
||||
|
|
|
@ -10,6 +10,10 @@
|
|||
font-weight: bold !important;
|
||||
}
|
||||
|
||||
/*.libraryViewNav {
|
||||
box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.2);
|
||||
}*/
|
||||
|
||||
@media all and (min-width: 300px) {
|
||||
|
||||
.libraryViewNav {
|
||||
|
|
|
@ -52,20 +52,18 @@ body:not(.dashboardDocument) .mainDrawerButton {
|
|||
box-shadow: none;
|
||||
}
|
||||
|
||||
.libraryViewNav a {
|
||||
.libraryViewNav .pageTabButton {
|
||||
font-weight: 400;
|
||||
text-transform: none;
|
||||
color: #ccc !important;
|
||||
padding: 12px 13px 8px;
|
||||
}
|
||||
|
||||
.libraryViewNav .pageTabButton.is-active:after {
|
||||
display: none !important;
|
||||
}
|
||||
.libraryViewNav .pageTabButton.is-active:after {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.libraryViewNav .pageTabButton.is-active {
|
||||
color: #52B54B !important;
|
||||
}
|
||||
.libraryViewNav .pageTabButton.is-active {
|
||||
color: #52B54B !important;
|
||||
}
|
||||
|
||||
.ui-body-b .paperList:not(.criticReviewPaperList) {
|
||||
background-color: transparent;
|
||||
|
|
|
@ -17,14 +17,10 @@
|
|||
background: #161616;
|
||||
}
|
||||
|
||||
.libraryViewNav .mdl-tabs__tab.is-active {
|
||||
.libraryViewNav .pageTabButton.is-active {
|
||||
color: #52B54B !important;
|
||||
}
|
||||
|
||||
.libraryViewNav .mdl-tabs__tab.is-active:after {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
|
||||
.libraryPage:not(.noSecondaryNavPage) {
|
||||
padding-top: 105px !important;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<div id="liveTvSuggestedPage" data-dom-cache="true" data-role="page" class="page libraryPage liveTvPage pageWithAbsoluteTabs" data-contextname="${HeaderLiveTv}" data-backdroptype="series,movie" data-require="scripts/livetvsuggested,livetvcss,scripts/livetvcomponents,paper-checkbox">
|
||||
<div id="liveTvSuggestedPage" data-dom-cache="true" data-role="page" class="page libraryPage liveTvPage pageWithAbsoluteTabs" data-contextname="${HeaderLiveTv}" data-backdroptype="series,movie">
|
||||
|
||||
<div class="libraryViewNav">
|
||||
<button class="pageTabButton is-active" data-index="0">${TabSuggestions}</button>
|
||||
|
|
|
@ -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">
|
||||
<button class="pageTabButton is-active" data-index="0">${TabSuggestions}</button>
|
||||
|
|
|
@ -76,7 +76,7 @@
|
|||
|
||||
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) {
|
||||
loadTab(page, parseInt(e.detail.selectedTabIndex));
|
||||
|
|
|
@ -249,7 +249,7 @@
|
|||
|
||||
var mdlTabs = view.querySelector('.libraryViewNav');
|
||||
|
||||
libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'));
|
||||
libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'), true);
|
||||
|
||||
var tabControllers = [];
|
||||
var renderedTabs = [];
|
||||
|
|
|
@ -225,7 +225,7 @@
|
|||
});
|
||||
},
|
||||
|
||||
configurePaperLibraryTabs: function (ownerpage, tabs, panels) {
|
||||
configurePaperLibraryTabs: function (ownerpage, tabs, panels, animate) {
|
||||
|
||||
if (!browserInfo.safari) {
|
||||
LibraryBrowser.configureSwipeTabs(ownerpage, tabs);
|
||||
|
@ -235,6 +235,8 @@
|
|||
for (var i = 0, length = buttons.length; i < length; i++) {
|
||||
buttons[i].classList.add('mdl-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');
|
||||
|
@ -275,9 +277,9 @@
|
|||
|
||||
panels[index].classList.add('is-active');
|
||||
|
||||
//if (browserInfo.animate) {
|
||||
// fadeInRight(panels[index]);
|
||||
//}
|
||||
if (browserInfo.animate && animate) {
|
||||
fadeInRight(panels[index]);
|
||||
}
|
||||
|
||||
// If toCenter is called syncronously within the click event, it sometimes ends up canceling it
|
||||
//setTimeout(function() {
|
||||
|
@ -1905,7 +1907,8 @@
|
|||
|
||||
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;
|
||||
}
|
||||
var coverImage = options.coverImage;
|
||||
|
|
|
@ -1,122 +1,126 @@
|
|||
define(['jQuery'], function ($) {
|
||||
|
||||
var data = {};
|
||||
|
||||
function getPageData(context) {
|
||||
var key = getSavedQueryKey(context);
|
||||
var pageData = data[key];
|
||||
|
||||
if (!pageData) {
|
||||
pageData = data[key] = {
|
||||
query: {
|
||||
StartIndex: 0,
|
||||
EnableFavoriteSorting: true,
|
||||
Limit: LibraryBrowser.getDefaultPageSize()
|
||||
}
|
||||
};
|
||||
|
||||
LibraryBrowser.loadSavedQueryValues(key, pageData.query);
|
||||
}
|
||||
return pageData;
|
||||
}
|
||||
|
||||
function getQuery(context) {
|
||||
|
||||
return getPageData(context).query;
|
||||
}
|
||||
|
||||
function getSavedQueryKey(context) {
|
||||
|
||||
if (!context.savedQueryKey) {
|
||||
context.savedQueryKey = LibraryBrowser.getSavedQueryKey('channels');
|
||||
}
|
||||
return context.savedQueryKey;
|
||||
}
|
||||
|
||||
function getChannelsHtml(channels) {
|
||||
|
||||
return LibraryBrowser.getPosterViewHtml({
|
||||
items: channels,
|
||||
shape: "square",
|
||||
showTitle: true,
|
||||
lazy: true,
|
||||
cardLayout: true,
|
||||
showDetailsMenu: true
|
||||
});
|
||||
}
|
||||
|
||||
function renderChannels(page, result) {
|
||||
|
||||
var query = getQuery(page);
|
||||
|
||||
$('.listTopPaging', page).html(LibraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
showLimit: false,
|
||||
updatePageSizeSetting: false,
|
||||
filterButton: true
|
||||
}));
|
||||
|
||||
var html = getChannelsHtml(result.Items);
|
||||
|
||||
var elem = page.querySelector('#items');
|
||||
elem.innerHTML = html;
|
||||
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);
|
||||
});
|
||||
|
||||
LibraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
|
||||
}
|
||||
|
||||
function showFilterMenu(page) {
|
||||
|
||||
require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
|
||||
|
||||
var filterDialog = new filterDialogFactory({
|
||||
query: getQuery(page),
|
||||
mode: 'livetvchannels'
|
||||
});
|
||||
|
||||
Events.on(filterDialog, 'filterchange', function () {
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
filterDialog.show();
|
||||
});
|
||||
}
|
||||
|
||||
function reloadItems(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var query = getQuery(page);
|
||||
|
||||
query.UserId = Dashboard.getCurrentUserId();
|
||||
|
||||
ApiClient.getLiveTvChannels(query).then(function (result) {
|
||||
|
||||
renderChannels(page, result);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
window.LiveTvPage.renderChannelsTab = function (page, tabContent) {
|
||||
|
||||
reloadItems(tabContent);
|
||||
};
|
||||
|
||||
define(['jQuery'], function ($) {
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
|
||||
var self = this;
|
||||
var data = {};
|
||||
|
||||
function getPageData(context) {
|
||||
var key = getSavedQueryKey(context);
|
||||
var pageData = data[key];
|
||||
|
||||
if (!pageData) {
|
||||
pageData = data[key] = {
|
||||
query: {
|
||||
StartIndex: 0,
|
||||
EnableFavoriteSorting: true,
|
||||
Limit: LibraryBrowser.getDefaultPageSize()
|
||||
}
|
||||
};
|
||||
|
||||
LibraryBrowser.loadSavedQueryValues(key, pageData.query);
|
||||
}
|
||||
return pageData;
|
||||
}
|
||||
|
||||
function getQuery(context) {
|
||||
|
||||
return getPageData(context).query;
|
||||
}
|
||||
|
||||
function getSavedQueryKey(context) {
|
||||
|
||||
if (!context.savedQueryKey) {
|
||||
context.savedQueryKey = LibraryBrowser.getSavedQueryKey('channels');
|
||||
}
|
||||
return context.savedQueryKey;
|
||||
}
|
||||
|
||||
function getChannelsHtml(channels) {
|
||||
|
||||
return LibraryBrowser.getPosterViewHtml({
|
||||
items: channels,
|
||||
shape: "square",
|
||||
showTitle: true,
|
||||
lazy: true,
|
||||
cardLayout: true,
|
||||
showDetailsMenu: true
|
||||
});
|
||||
}
|
||||
|
||||
function renderChannels(context, result) {
|
||||
|
||||
var query = getQuery(context);
|
||||
|
||||
$('.listTopPaging', context).html(LibraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
showLimit: false,
|
||||
updatePageSizeSetting: false,
|
||||
filterButton: true
|
||||
}));
|
||||
|
||||
var html = getChannelsHtml(result.Items);
|
||||
|
||||
var elem = context.querySelector('#items');
|
||||
elem.innerHTML = html;
|
||||
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);
|
||||
});
|
||||
|
||||
LibraryBrowser.saveQueryValues(getSavedQueryKey(context), query);
|
||||
}
|
||||
|
||||
function showFilterMenu(context) {
|
||||
|
||||
require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
|
||||
|
||||
var filterDialog = new filterDialogFactory({
|
||||
query: getQuery(context),
|
||||
mode: 'livetvchannels'
|
||||
});
|
||||
|
||||
Events.on(filterDialog, 'filterchange', function () {
|
||||
reloadItems(context);
|
||||
});
|
||||
|
||||
filterDialog.show();
|
||||
});
|
||||
}
|
||||
|
||||
function reloadItems(context) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var query = getQuery(context);
|
||||
|
||||
query.UserId = Dashboard.getCurrentUserId();
|
||||
|
||||
ApiClient.getLiveTvChannels(query).then(function (result) {
|
||||
|
||||
renderChannels(context, result);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
self.renderTab = function () {
|
||||
|
||||
reloadItems(tabContent);
|
||||
};
|
||||
};
|
||||
|
||||
});
|
|
@ -1,17 +1,15 @@
|
|||
define(['tvguide'], function (tvguide) {
|
||||
|
||||
window.LiveTvPage.initGuideTab = function (page, tabContent) {
|
||||
|
||||
};
|
||||
|
||||
window.LiveTvPage.renderGuideTab = function (page, tabContent) {
|
||||
|
||||
if (!page.guideInstance) {
|
||||
|
||||
page.guideInstance = new tvguide({
|
||||
element: tabContent
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
define(['tvguide'], function (tvguide) {
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
|
||||
var self = this;
|
||||
var guideInstance;
|
||||
self.renderTab = function () {
|
||||
if (!guideInstance) {
|
||||
guideInstance = new tvguide({
|
||||
element: tabContent
|
||||
});
|
||||
}
|
||||
};
|
||||
};
|
||||
});
|
|
@ -1,170 +1,170 @@
|
|||
define(['jQuery'], function ($) {
|
||||
|
||||
function getRecordingGroupHtml(group) {
|
||||
|
||||
var html = '';
|
||||
|
||||
html += '<paper-icon-item>';
|
||||
|
||||
html += '<paper-fab mini class="blue" icon="live-tv" item-icon></paper-fab>';
|
||||
|
||||
html += '<paper-item-body two-line>';
|
||||
html += '<a href="livetvrecordinglist.html?groupid=' + group.Id + '" class="clearLink">';
|
||||
|
||||
html += '<div>';
|
||||
html += group.Name;
|
||||
html += '</div>';
|
||||
|
||||
html += '<div secondary>';
|
||||
if (group.RecordingCount == 1) {
|
||||
html += Globalize.translate('ValueItemCount', group.RecordingCount);
|
||||
} else {
|
||||
html += Globalize.translate('ValueItemCountPlural', group.RecordingCount);
|
||||
}
|
||||
html += '</div>';
|
||||
|
||||
html += '</a>';
|
||||
html += '</paper-item-body>';
|
||||
html += '</paper-icon-item>';
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
function renderRecordingGroups(page, groups) {
|
||||
|
||||
if (groups.length) {
|
||||
$('#recordingGroups', page).show();
|
||||
} else {
|
||||
$('#recordingGroups', page).hide();
|
||||
}
|
||||
|
||||
var html = '';
|
||||
|
||||
html += '<div class="paperList">';
|
||||
|
||||
for (var i = 0, length = groups.length; i < length; i++) {
|
||||
|
||||
html += getRecordingGroupHtml(groups[i]);
|
||||
}
|
||||
|
||||
html += '</div>';
|
||||
|
||||
page.querySelector('#recordingGroupItems').innerHTML = html;
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
}
|
||||
|
||||
function renderRecordings(elem, recordings) {
|
||||
|
||||
if (recordings.length) {
|
||||
elem.classList.remove('hide');
|
||||
} else {
|
||||
elem.classList.add('hide');
|
||||
}
|
||||
|
||||
var recordingItems = elem.querySelector('.recordingItems');
|
||||
recordingItems.innerHTML = LibraryBrowser.getPosterViewHtml({
|
||||
items: recordings,
|
||||
shape: "auto",
|
||||
showTitle: true,
|
||||
showParentTitle: true,
|
||||
centerText: true,
|
||||
coverImage: true,
|
||||
lazy: true,
|
||||
overlayPlayButton: true
|
||||
|
||||
});
|
||||
|
||||
ImageLoader.lazyChildren(recordingItems);
|
||||
}
|
||||
|
||||
function renderActiveRecordings(page) {
|
||||
|
||||
ApiClient.getLiveTvRecordings({
|
||||
|
||||
userId: Dashboard.getCurrentUserId(),
|
||||
IsInProgress: true,
|
||||
Fields: 'CanDelete'
|
||||
|
||||
}).then(function (result) {
|
||||
|
||||
renderRecordings(page.querySelector('#activeRecordings'), result.Items);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function renderLatestRecordings(page) {
|
||||
|
||||
ApiClient.getLiveTvRecordings({
|
||||
|
||||
userId: Dashboard.getCurrentUserId(),
|
||||
limit: 4,
|
||||
IsInProgress: false,
|
||||
Fields: 'CanDelete,PrimaryImageAspectRatio'
|
||||
|
||||
}).then(function (result) {
|
||||
|
||||
renderRecordings(page.querySelector('#latestRecordings'), result.Items);
|
||||
});
|
||||
}
|
||||
|
||||
function renderTimers(page, timers) {
|
||||
|
||||
LiveTvHelpers.getTimersHtml(timers).then(function (html) {
|
||||
|
||||
var elem = page.querySelector('#upcomingRecordings');
|
||||
|
||||
if (html) {
|
||||
elem.classList.remove('hide');
|
||||
} else {
|
||||
elem.classList.add('hide');
|
||||
}
|
||||
|
||||
elem.querySelector('.recordingItems').innerHTML = html;
|
||||
|
||||
ImageLoader.lazyChildren(elem);
|
||||
$(elem).createCardMenus();
|
||||
});
|
||||
}
|
||||
|
||||
function renderUpcomingRecordings(page) {
|
||||
|
||||
ApiClient.getLiveTvTimers().then(function (result) {
|
||||
|
||||
renderTimers(page, result.Items);
|
||||
});
|
||||
}
|
||||
|
||||
function reload(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
renderUpcomingRecordings(page);
|
||||
renderActiveRecordings(page);
|
||||
renderLatestRecordings(page);
|
||||
|
||||
ApiClient.getLiveTvRecordingGroups({
|
||||
|
||||
userId: Dashboard.getCurrentUserId()
|
||||
|
||||
}).then(function (result) {
|
||||
|
||||
require(['paper-fab', 'paper-item-body', 'paper-icon-item'], function () {
|
||||
renderRecordingGroups(page, result.Items);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
window.LiveTvPage.initRecordingsTab = function (page, tabContent) {
|
||||
|
||||
tabContent.querySelector('#upcomingRecordings .recordingItems').addEventListener('timercancelled', function () {
|
||||
reload(tabContent);
|
||||
});
|
||||
};
|
||||
|
||||
window.LiveTvPage.renderRecordingsTab = function (page, tabContent) {
|
||||
|
||||
reload(tabContent);
|
||||
};
|
||||
|
||||
define(['jQuery', 'scripts/livetvcomponents'], function ($) {
|
||||
|
||||
function getRecordingGroupHtml(group) {
|
||||
|
||||
var html = '';
|
||||
|
||||
html += '<paper-icon-item>';
|
||||
|
||||
html += '<paper-fab mini class="blue" icon="live-tv" item-icon></paper-fab>';
|
||||
|
||||
html += '<paper-item-body two-line>';
|
||||
html += '<a href="livetvrecordinglist.html?groupid=' + group.Id + '" class="clearLink">';
|
||||
|
||||
html += '<div>';
|
||||
html += group.Name;
|
||||
html += '</div>';
|
||||
|
||||
html += '<div secondary>';
|
||||
if (group.RecordingCount == 1) {
|
||||
html += Globalize.translate('ValueItemCount', group.RecordingCount);
|
||||
} else {
|
||||
html += Globalize.translate('ValueItemCountPlural', group.RecordingCount);
|
||||
}
|
||||
html += '</div>';
|
||||
|
||||
html += '</a>';
|
||||
html += '</paper-item-body>';
|
||||
html += '</paper-icon-item>';
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
function renderRecordingGroups(context, groups) {
|
||||
|
||||
if (groups.length) {
|
||||
$('#recordingGroups', context).show();
|
||||
} else {
|
||||
$('#recordingGroups', context).hide();
|
||||
}
|
||||
|
||||
var html = '';
|
||||
|
||||
html += '<div class="paperList">';
|
||||
|
||||
for (var i = 0, length = groups.length; i < length; i++) {
|
||||
|
||||
html += getRecordingGroupHtml(groups[i]);
|
||||
}
|
||||
|
||||
html += '</div>';
|
||||
|
||||
context.querySelector('#recordingGroupItems').innerHTML = html;
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
}
|
||||
|
||||
function renderRecordings(elem, recordings) {
|
||||
|
||||
if (recordings.length) {
|
||||
elem.classList.remove('hide');
|
||||
} else {
|
||||
elem.classList.add('hide');
|
||||
}
|
||||
|
||||
var recordingItems = elem.querySelector('.recordingItems');
|
||||
recordingItems.innerHTML = LibraryBrowser.getPosterViewHtml({
|
||||
items: recordings,
|
||||
shape: "auto",
|
||||
showTitle: true,
|
||||
showParentTitle: true,
|
||||
centerText: true,
|
||||
coverImage: true,
|
||||
lazy: true,
|
||||
overlayPlayButton: true
|
||||
|
||||
});
|
||||
|
||||
ImageLoader.lazyChildren(recordingItems);
|
||||
}
|
||||
|
||||
function renderActiveRecordings(context) {
|
||||
|
||||
ApiClient.getLiveTvRecordings({
|
||||
|
||||
userId: Dashboard.getCurrentUserId(),
|
||||
IsInProgress: true,
|
||||
Fields: 'CanDelete'
|
||||
|
||||
}).then(function (result) {
|
||||
|
||||
renderRecordings(context.querySelector('#activeRecordings'), result.Items);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function renderLatestRecordings(context) {
|
||||
|
||||
ApiClient.getLiveTvRecordings({
|
||||
|
||||
userId: Dashboard.getCurrentUserId(),
|
||||
limit: 4,
|
||||
IsInProgress: false,
|
||||
Fields: 'CanDelete,PrimaryImageAspectRatio'
|
||||
|
||||
}).then(function (result) {
|
||||
|
||||
renderRecordings(context.querySelector('#latestRecordings'), result.Items);
|
||||
});
|
||||
}
|
||||
|
||||
function renderTimers(context, timers) {
|
||||
|
||||
LiveTvHelpers.getTimersHtml(timers).then(function (html) {
|
||||
|
||||
var elem = context.querySelector('#upcomingRecordings');
|
||||
|
||||
if (html) {
|
||||
elem.classList.remove('hide');
|
||||
} else {
|
||||
elem.classList.add('hide');
|
||||
}
|
||||
|
||||
elem.querySelector('.recordingItems').innerHTML = html;
|
||||
|
||||
ImageLoader.lazyChildren(elem);
|
||||
$(elem).createCardMenus();
|
||||
});
|
||||
}
|
||||
|
||||
function renderUpcomingRecordings(context) {
|
||||
|
||||
ApiClient.getLiveTvTimers().then(function (result) {
|
||||
|
||||
renderTimers(context, result.Items);
|
||||
});
|
||||
}
|
||||
|
||||
function reload(context) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
renderUpcomingRecordings(context);
|
||||
renderActiveRecordings(context);
|
||||
renderLatestRecordings(context);
|
||||
|
||||
ApiClient.getLiveTvRecordingGroups({
|
||||
|
||||
userId: Dashboard.getCurrentUserId()
|
||||
|
||||
}).then(function (result) {
|
||||
|
||||
require(['paper-fab', 'paper-item-body', 'paper-icon-item'], function () {
|
||||
renderRecordingGroups(context, result.Items);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
|
||||
var self = this;
|
||||
tabContent.querySelector('#upcomingRecordings .recordingItems').addEventListener('timercancelled', function () {
|
||||
reload(tabContent);
|
||||
});
|
||||
|
||||
self.renderTab = function () {
|
||||
reload(tabContent);
|
||||
};
|
||||
};
|
||||
|
||||
});
|
|
@ -1,119 +1,123 @@
|
|||
define(['datetime', 'jQuery', 'paper-icon-button-light'], function (datetime, $) {
|
||||
|
||||
var query = {
|
||||
|
||||
SortBy: "SortName",
|
||||
SortOrder: "Ascending"
|
||||
};
|
||||
|
||||
function deleteSeriesTimer(page, id) {
|
||||
|
||||
require(['confirm'], function (confirm) {
|
||||
|
||||
confirm(Globalize.translate('MessageConfirmSeriesCancellation'), Globalize.translate('HeaderConfirmSeriesCancellation')).then(function () {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ApiClient.cancelLiveTvSeriesTimer(id).then(function () {
|
||||
|
||||
require(['toast'], function (toast) {
|
||||
toast(Globalize.translate('MessageSeriesCancelled'));
|
||||
});
|
||||
|
||||
reload(page);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function renderTimers(page, timers) {
|
||||
|
||||
var html = '';
|
||||
|
||||
if (timers.length) {
|
||||
html += '<div class="paperList">';
|
||||
}
|
||||
|
||||
for (var i = 0, length = timers.length; i < length; i++) {
|
||||
|
||||
var timer = timers[i];
|
||||
|
||||
html += '<paper-icon-item>';
|
||||
|
||||
html += '<paper-fab mini icon="live-tv" item-icon></paper-fab>';
|
||||
|
||||
html += '<paper-item-body three-line>';
|
||||
html += '<a class="clearLink" href="livetvseriestimer.html?id=' + timer.Id + '">';
|
||||
|
||||
html += '<div>';
|
||||
html += timer.Name;
|
||||
html += '</div>';
|
||||
|
||||
html += '<div secondary>';
|
||||
if (timer.DayPattern) {
|
||||
html += timer.DayPattern;
|
||||
}
|
||||
else {
|
||||
var days = timer.Days || [];
|
||||
|
||||
html += days.join(', ');
|
||||
}
|
||||
|
||||
if (timer.RecordAnyTime) {
|
||||
|
||||
html += ' - ' + Globalize.translate('LabelAnytime');
|
||||
} else {
|
||||
html += ' - ' + datetime.getDisplayTime(timer.StartDate);
|
||||
}
|
||||
html += '</div>';
|
||||
|
||||
html += '<div secondary>';
|
||||
if (timer.RecordAnyChannel) {
|
||||
html += Globalize.translate('LabelAllChannels');
|
||||
}
|
||||
else if (timer.ChannelId) {
|
||||
html += timer.ChannelName;
|
||||
}
|
||||
html += '</div>';
|
||||
html += '</a>';
|
||||
|
||||
html += '</paper-item-body>';
|
||||
|
||||
html += '<button type="button" is="paper-icon-button-light" data-seriestimerid="' + timer.Id + '" title="' + Globalize.translate('ButtonCancelSeries') + '" class="btnCancelSeries"><iron-icon icon="cancel"></iron-icon></button>';
|
||||
|
||||
html += '</paper-icon-item>';
|
||||
}
|
||||
|
||||
if (timers.length) {
|
||||
html += '</div>';
|
||||
}
|
||||
|
||||
var elem = $('#items', page).html(html);
|
||||
|
||||
$('.btnCancelSeries', elem).on('click', function () {
|
||||
|
||||
deleteSeriesTimer(page, this.getAttribute('data-seriestimerid'));
|
||||
|
||||
});
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
}
|
||||
|
||||
function reload(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ApiClient.getLiveTvSeriesTimers(query).then(function (result) {
|
||||
|
||||
require(['paper-fab', 'paper-item-body', 'paper-icon-item'], function () {
|
||||
renderTimers(page, result.Items);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
window.LiveTvPage.renderSeriesTimersTab = function (page, tabContent) {
|
||||
|
||||
reload(tabContent);
|
||||
};
|
||||
|
||||
define(['datetime', 'jQuery', 'paper-icon-button-light'], function (datetime, $) {
|
||||
|
||||
var query = {
|
||||
|
||||
SortBy: "SortName",
|
||||
SortOrder: "Ascending"
|
||||
};
|
||||
|
||||
function deleteSeriesTimer(context, id) {
|
||||
|
||||
require(['confirm'], function (confirm) {
|
||||
|
||||
confirm(Globalize.translate('MessageConfirmSeriesCancellation'), Globalize.translate('HeaderConfirmSeriesCancellation')).then(function () {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ApiClient.cancelLiveTvSeriesTimer(id).then(function () {
|
||||
|
||||
require(['toast'], function (toast) {
|
||||
toast(Globalize.translate('MessageSeriesCancelled'));
|
||||
});
|
||||
|
||||
reload(context);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function renderTimers(context, timers) {
|
||||
|
||||
var html = '';
|
||||
|
||||
if (timers.length) {
|
||||
html += '<div class="paperList">';
|
||||
}
|
||||
|
||||
for (var i = 0, length = timers.length; i < length; i++) {
|
||||
|
||||
var timer = timers[i];
|
||||
|
||||
html += '<paper-icon-item>';
|
||||
|
||||
html += '<paper-fab mini icon="live-tv" item-icon></paper-fab>';
|
||||
|
||||
html += '<paper-item-body three-line>';
|
||||
html += '<a class="clearLink" href="livetvseriestimer.html?id=' + timer.Id + '">';
|
||||
|
||||
html += '<div>';
|
||||
html += timer.Name;
|
||||
html += '</div>';
|
||||
|
||||
html += '<div secondary>';
|
||||
if (timer.DayPattern) {
|
||||
html += timer.DayPattern;
|
||||
}
|
||||
else {
|
||||
var days = timer.Days || [];
|
||||
|
||||
html += days.join(', ');
|
||||
}
|
||||
|
||||
if (timer.RecordAnyTime) {
|
||||
|
||||
html += ' - ' + Globalize.translate('LabelAnytime');
|
||||
} else {
|
||||
html += ' - ' + datetime.getDisplayTime(timer.StartDate);
|
||||
}
|
||||
html += '</div>';
|
||||
|
||||
html += '<div secondary>';
|
||||
if (timer.RecordAnyChannel) {
|
||||
html += Globalize.translate('LabelAllChannels');
|
||||
}
|
||||
else if (timer.ChannelId) {
|
||||
html += timer.ChannelName;
|
||||
}
|
||||
html += '</div>';
|
||||
html += '</a>';
|
||||
|
||||
html += '</paper-item-body>';
|
||||
|
||||
html += '<button type="button" is="paper-icon-button-light" data-seriestimerid="' + timer.Id + '" title="' + Globalize.translate('ButtonCancelSeries') + '" class="btnCancelSeries"><iron-icon icon="cancel"></iron-icon></button>';
|
||||
|
||||
html += '</paper-icon-item>';
|
||||
}
|
||||
|
||||
if (timers.length) {
|
||||
html += '</div>';
|
||||
}
|
||||
|
||||
var elem = $('#items', context).html(html);
|
||||
|
||||
$('.btnCancelSeries', elem).on('click', function () {
|
||||
|
||||
deleteSeriesTimer(context, this.getAttribute('data-seriestimerid'));
|
||||
|
||||
});
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
}
|
||||
|
||||
function reload(context) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ApiClient.getLiveTvSeriesTimers(query).then(function (result) {
|
||||
|
||||
require(['paper-fab', 'paper-item-body', 'paper-icon-item'], function () {
|
||||
renderTimers(context, result.Items);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
|
||||
var self = this;
|
||||
self.renderTab = function () {
|
||||
|
||||
reload(tabContent);
|
||||
};
|
||||
};
|
||||
|
||||
});
|
|
@ -125,106 +125,110 @@
|
|||
ImageLoader.lazyChildren(elem);
|
||||
}
|
||||
|
||||
function initSuggestedTab(page, tabContent) {
|
||||
return function (view, params) {
|
||||
|
||||
if (enableScrollX()) {
|
||||
$('.itemsContainer', tabContent).addClass('hiddenScrollX').createCardMenus();
|
||||
} else {
|
||||
$('.itemsContainer', tabContent).removeClass('hiddenScrollX').createCardMenus();
|
||||
}
|
||||
}
|
||||
var self = this;
|
||||
|
||||
function renderSuggestedTab(page, tabContent) {
|
||||
self.initTab = function () {
|
||||
|
||||
reload(tabContent);
|
||||
}
|
||||
var tabContent = view.querySelector('.pageTabContent[data-index=\'' + 0 + '\']');
|
||||
if (enableScrollX()) {
|
||||
$('.itemsContainer', tabContent).addClass('hiddenScrollX').createCardMenus();
|
||||
} else {
|
||||
$('.itemsContainer', tabContent).removeClass('hiddenScrollX').createCardMenus();
|
||||
}
|
||||
};
|
||||
|
||||
function loadTab(page, index) {
|
||||
self.renderTab = function () {
|
||||
var tabContent = view.querySelector('.pageTabContent[data-index=\'' + 0 + '\']');
|
||||
reload(tabContent);
|
||||
};
|
||||
|
||||
var tabContent = page.querySelector('.pageTabContent[data-index=\'' + index + '\']');
|
||||
var depends = [];
|
||||
var scope = 'LiveTvPage';
|
||||
var renderMethod = '';
|
||||
var initMethod = '';
|
||||
var tabControllers = [];
|
||||
var renderedTabs = [];
|
||||
|
||||
var viewMenuBar = document.querySelector('.viewMenuBar');
|
||||
function loadTab(page, index) {
|
||||
|
||||
switch (index) {
|
||||
var tabContent = page.querySelector('.pageTabContent[data-index=\'' + index + '\']');
|
||||
var depends = [];
|
||||
|
||||
case 0:
|
||||
renderMethod = 'renderSuggestedTab';
|
||||
initMethod = 'initSuggestedTab';
|
||||
break;
|
||||
case 1:
|
||||
depends.push('registrationservices');
|
||||
depends.push('scripts/livetvguide');
|
||||
renderMethod = 'renderGuideTab';
|
||||
initMethod = 'initGuideTab';
|
||||
break;
|
||||
case 2:
|
||||
depends.push('scripts/livetvchannels');
|
||||
depends.push('paper-icon-item');
|
||||
depends.push('paper-item-body');
|
||||
renderMethod = 'renderChannelsTab';
|
||||
break;
|
||||
case 3:
|
||||
depends.push('scripts/livetvrecordings');
|
||||
initMethod = 'initRecordingsTab';
|
||||
renderMethod = 'renderRecordingsTab';
|
||||
break;
|
||||
case 4:
|
||||
depends.push('scripts/livetvseriestimers');
|
||||
renderMethod = 'renderSeriesTimersTab';
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
switch (index) {
|
||||
|
||||
require(depends, function () {
|
||||
|
||||
if (initMethod && !tabContent.initComplete) {
|
||||
|
||||
window[scope][initMethod](page, tabContent);
|
||||
tabContent.initComplete = true;
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
depends.push('scripts/livetvguide');
|
||||
break;
|
||||
case 2:
|
||||
depends.push('scripts/livetvchannels');
|
||||
depends.push('paper-icon-item');
|
||||
depends.push('paper-item-body');
|
||||
break;
|
||||
case 3:
|
||||
depends.push('scripts/livetvrecordings');
|
||||
break;
|
||||
case 4:
|
||||
depends.push('scripts/livetvseriestimers');
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
window[scope][renderMethod](page, tabContent);
|
||||
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;
|
||||
|
||||
pageIdOn('pageinit', "liveTvSuggestedPage", function () {
|
||||
if (controller.initTab) {
|
||||
controller.initTab();
|
||||
}
|
||||
}
|
||||
|
||||
var page = this;
|
||||
if (renderedTabs.indexOf(index) == -1) {
|
||||
renderedTabs.push(index);
|
||||
controller.renderTab();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
var mdlTabs = page.querySelector('.libraryViewNav');
|
||||
var mdlTabs = view.querySelector('.libraryViewNav');
|
||||
|
||||
libraryBrowser.configurePaperLibraryTabs(page, mdlTabs, page.querySelectorAll('.pageTabContent'));
|
||||
var baseUrl = 'tv.html';
|
||||
var topParentId = params.topParentId;
|
||||
if (topParentId) {
|
||||
baseUrl += '?topParentId=' + topParentId;
|
||||
}
|
||||
|
||||
libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'), true);
|
||||
|
||||
mdlTabs.addEventListener('tabchange', function (e) {
|
||||
loadTab(page, parseInt(e.detail.selectedTabIndex));
|
||||
loadTab(view, parseInt(e.detail.selectedTabIndex));
|
||||
});
|
||||
});
|
||||
|
||||
pageIdOn('viewshow', "liveTvSuggestedPage", function () {
|
||||
view.addEventListener('viewshow', function (e) {
|
||||
|
||||
var page = this;
|
||||
// Needed on the guide tab
|
||||
// Ideally this should be moved to the guide tab on show/hide
|
||||
document.body.classList.add('autoScrollY');
|
||||
});
|
||||
|
||||
// Needed on the guide tab
|
||||
// Ideally this should be moved to the guide tab on show/hide
|
||||
document.body.classList.add('autoScrollY');
|
||||
});
|
||||
view.addEventListener('viewbeforehide', function (e) {
|
||||
|
||||
pageIdOn('viewbeforehide', "liveTvSuggestedPage", function () {
|
||||
document.body.classList.remove('autoScrollY');
|
||||
});
|
||||
|
||||
var page = this;
|
||||
view.addEventListener('viewdestroy', function (e) {
|
||||
|
||||
document.body.classList.remove('autoScrollY');
|
||||
});
|
||||
|
||||
window.LiveTvPage = {
|
||||
renderSuggestedTab: renderSuggestedTab,
|
||||
initSuggestedTab: initSuggestedTab
|
||||
tabControllers.forEach(function (t) {
|
||||
if (t.destroy) {
|
||||
t.destroy();
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
});
|
|
@ -1,161 +1,163 @@
|
|||
define(['jQuery'], function ($) {
|
||||
|
||||
var data = {};
|
||||
function getPageData(context) {
|
||||
var key = getSavedQueryKey(context);
|
||||
var pageData = data[key];
|
||||
return function (view, params, tabContent) {
|
||||
|
||||
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')
|
||||
};
|
||||
var self = this;
|
||||
|
||||
pageData.query.ParentId = LibraryMenu.getTopParentId();
|
||||
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: "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;
|
||||
}
|
||||
|
||||
function getSavedQueryKey(context) {
|
||||
|
||||
if (!context.savedQueryKey) {
|
||||
context.savedQueryKey = LibraryBrowser.getSavedQueryKey('albumartists');
|
||||
return getPageData(context).query;
|
||||
}
|
||||
return context.savedQueryKey;
|
||||
}
|
||||
|
||||
function reloadItems(page) {
|
||||
function getSavedQueryKey(context) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
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
|
||||
});
|
||||
if (!context.savedQueryKey) {
|
||||
context.savedQueryKey = LibraryBrowser.getSavedQueryKey('albumartists');
|
||||
}
|
||||
else if (view == "Poster") {
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "square",
|
||||
context: 'music',
|
||||
showTitle: true,
|
||||
coverImage: true,
|
||||
lazy: true,
|
||||
centerText: true,
|
||||
overlayPlayButton: true
|
||||
return context.savedQueryKey;
|
||||
}
|
||||
|
||||
function reloadItems(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
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
|
||||
});
|
||||
}
|
||||
else if (view == "PosterCard") {
|
||||
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "square",
|
||||
context: 'music',
|
||||
showTitle: true,
|
||||
coverImage: true,
|
||||
lazy: true,
|
||||
cardLayout: true,
|
||||
showSongCount: 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") {
|
||||
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');
|
||||
elem.innerHTML = html + pagingHtml;
|
||||
ImageLoader.lazyChildren(elem);
|
||||
$('.btnPreviousPage', page).on('click', function () {
|
||||
query.StartIndex -= query.Limit;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.btnNextPage', page).on('click', function () {
|
||||
query.StartIndex += query.Limit;
|
||||
reloadItems(page);
|
||||
$('.btnChangeLayout', page).on('layoutchange', function (e, layout) {
|
||||
getPageData(page).view = layout;
|
||||
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 () {
|
||||
query.StartIndex -= query.Limit;
|
||||
reloadItems(page);
|
||||
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();
|
||||
});
|
||||
}
|
||||
|
||||
$('.btnChangeLayout', page).on('layoutchange', function (e, layout) {
|
||||
getPageData(page).view = layout;
|
||||
LibraryBrowser.saveViewSetting(getSavedQueryKey(page), layout);
|
||||
reloadItems(page);
|
||||
});
|
||||
function updateFilterControls(tabContent) {
|
||||
|
||||
$('.btnFilter', page).on('click', function () {
|
||||
showFilterMenu(page);
|
||||
});
|
||||
var query = getQuery(tabContent);
|
||||
|
||||
LibraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
|
||||
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).alphaValue(query.NameStartsWithOrGreater);
|
||||
}
|
||||
|
||||
$('.alphabetPicker', tabContent).on('alphaselect', function (e, character) {
|
||||
|
||||
|
@ -174,16 +176,11 @@
|
|||
|
||||
reloadItems(tabContent);
|
||||
});
|
||||
}
|
||||
|
||||
window.MusicPage.initAlbumArtistsTab = function (page, tabContent) {
|
||||
self.renderTab = function () {
|
||||
|
||||
initPage(tabContent);
|
||||
};
|
||||
|
||||
window.MusicPage.renderAlbumArtistsTab = function (page, tabContent) {
|
||||
|
||||
reloadItems(tabContent);
|
||||
reloadItems(tabContent);
|
||||
};
|
||||
};
|
||||
|
||||
});
|
|
@ -1,214 +1,216 @@
|
|||
define(['jQuery'], function ($) {
|
||||
|
||||
var data = {};
|
||||
function getPageData(context) {
|
||||
var key = getSavedQueryKey(context);
|
||||
var pageData = data[key];
|
||||
return function (view, params, tabContent) {
|
||||
|
||||
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')
|
||||
};
|
||||
var self = this;
|
||||
|
||||
pageData.query.ParentId = LibraryMenu.getTopParentId();
|
||||
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: "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;
|
||||
}
|
||||
|
||||
function getSavedQueryKey(context) {
|
||||
|
||||
if (!context.savedQueryKey) {
|
||||
context.savedQueryKey = LibraryBrowser.getSavedQueryKey('albums');
|
||||
return getPageData(context).query;
|
||||
}
|
||||
return context.savedQueryKey;
|
||||
}
|
||||
|
||||
function reloadItems(page) {
|
||||
function getSavedQueryKey(context) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
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
|
||||
});
|
||||
if (!context.savedQueryKey) {
|
||||
context.savedQueryKey = LibraryBrowser.getSavedQueryKey('albums');
|
||||
}
|
||||
else if (view == "PosterCard") {
|
||||
return context.savedQueryKey;
|
||||
}
|
||||
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "square",
|
||||
context: 'music',
|
||||
showTitle: true,
|
||||
coverImage: true,
|
||||
showParentTitle: true,
|
||||
lazy: true,
|
||||
cardLayout: true
|
||||
function reloadItems(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
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
|
||||
});
|
||||
}
|
||||
else if (view == "List") {
|
||||
|
||||
html = LibraryBrowser.getListViewHtml({
|
||||
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
|
||||
});
|
||||
}
|
||||
page.querySelector('.listTopPaging').innerHTML = pagingHtml;
|
||||
|
||||
var elem = page.querySelector('#items');
|
||||
elem.innerHTML = html + pagingHtml;
|
||||
ImageLoader.lazyChildren(elem);
|
||||
updateFilterControls(page);
|
||||
|
||||
$('.btnNextPage', page).on('click', function () {
|
||||
query.StartIndex += query.Limit;
|
||||
reloadItems(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") {
|
||||
|
||||
$('.btnPreviousPage', page).on('click', function () {
|
||||
query.StartIndex -= query.Limit;
|
||||
reloadItems(page);
|
||||
});
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "square",
|
||||
context: 'music',
|
||||
showTitle: true,
|
||||
coverImage: true,
|
||||
showParentTitle: true,
|
||||
lazy: true,
|
||||
cardLayout: true
|
||||
});
|
||||
}
|
||||
else if (view == "List") {
|
||||
|
||||
$('.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';
|
||||
html = LibraryBrowser.getListViewHtml({
|
||||
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
|
||||
});
|
||||
}
|
||||
|
||||
getPageData(page).view = layout;
|
||||
LibraryBrowser.saveViewSetting(getSavedQueryKey(page), layout);
|
||||
reloadItems(page);
|
||||
});
|
||||
var elem = page.querySelector('#items');
|
||||
elem.innerHTML = html + pagingHtml;
|
||||
ImageLoader.lazyChildren(elem);
|
||||
|
||||
// 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
|
||||
$('.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);
|
||||
});
|
||||
|
||||
$('.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);
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
function showFilterMenu(page) {
|
||||
|
||||
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({
|
||||
query: getQuery(page),
|
||||
mode: 'albums'
|
||||
Events.on(filterDialog, 'filterchange', function () {
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
filterDialog.show();
|
||||
});
|
||||
}
|
||||
|
||||
Events.on(filterDialog, 'filterchange', function () {
|
||||
reloadItems(page);
|
||||
});
|
||||
function updateFilterControls(page) {
|
||||
|
||||
filterDialog.show();
|
||||
});
|
||||
}
|
||||
var query = getQuery(page);
|
||||
|
||||
function updateFilterControls(page) {
|
||||
|
||||
var query = getQuery(page);
|
||||
|
||||
$('.alphabetPicker', page).alphaValue(query.NameStartsWithOrGreater);
|
||||
}
|
||||
|
||||
function initPage(tabContent) {
|
||||
$('.alphabetPicker', page).alphaValue(query.NameStartsWithOrGreater);
|
||||
}
|
||||
|
||||
$('.alphabetPicker', tabContent).on('alphaselect', function (e, character) {
|
||||
|
||||
|
@ -235,16 +237,10 @@
|
|||
|
||||
reloadItems(tabContent);
|
||||
});
|
||||
}
|
||||
|
||||
window.MusicPage.initAlbumsTab = function (page, tabContent) {
|
||||
self.renderTab = function () {
|
||||
|
||||
initPage(tabContent);
|
||||
reloadItems(tabContent);
|
||||
};
|
||||
};
|
||||
|
||||
window.MusicPage.renderAlbumsTab = function (page, tabContent) {
|
||||
|
||||
reloadItems(tabContent);
|
||||
};
|
||||
|
||||
});
|
|
@ -1,189 +1,184 @@
|
|||
define(['jQuery'], function ($) {
|
||||
|
||||
var data = {};
|
||||
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;
|
||||
}
|
||||
|
||||
function getQuery(context) {
|
||||
|
||||
return getPageData(context).query;
|
||||
}
|
||||
|
||||
function getSavedQueryKey(context) {
|
||||
|
||||
if (!context.savedQueryKey) {
|
||||
context.savedQueryKey = LibraryBrowser.getSavedQueryKey('artists');
|
||||
}
|
||||
return context.savedQueryKey;
|
||||
}
|
||||
|
||||
function reloadItems(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
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") {
|
||||
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);
|
||||
});
|
||||
|
||||
$('.btnPreviousPage', page).on('click', function () {
|
||||
query.StartIndex -= query.Limit;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.btnChangeLayout', page).on('layoutchange', function (e, layout) {
|
||||
getPageData(page).view = layout;
|
||||
LibraryBrowser.saveViewSetting(getSavedQueryKey(page), layout);
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.btnFilter', page).on('click', function () {
|
||||
showFilterMenu(page);
|
||||
});
|
||||
|
||||
LibraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
|
||||
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) {
|
||||
|
||||
var query = getQuery(tabContent);
|
||||
|
||||
query.NameStartsWithOrGreater = character;
|
||||
query.StartIndex = 0;
|
||||
|
||||
reloadItems(tabContent);
|
||||
|
||||
}).on('alphaclear', function (e) {
|
||||
|
||||
var query = getQuery(tabContent);
|
||||
|
||||
query.NameStartsWithOrGreater = '';
|
||||
|
||||
reloadItems(tabContent);
|
||||
});
|
||||
}
|
||||
|
||||
window.MusicPage.initArtistsTab = function (page, tabContent) {
|
||||
|
||||
initPage(tabContent);
|
||||
};
|
||||
|
||||
window.MusicPage.renderArtistsTab = function (page, tabContent) {
|
||||
|
||||
reloadItems(tabContent);
|
||||
};
|
||||
|
||||
define(['jQuery'], function ($) {
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
|
||||
var self = this;
|
||||
|
||||
var data = {};
|
||||
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;
|
||||
}
|
||||
|
||||
function getQuery(context) {
|
||||
|
||||
return getPageData(context).query;
|
||||
}
|
||||
|
||||
function getSavedQueryKey(context) {
|
||||
|
||||
if (!context.savedQueryKey) {
|
||||
context.savedQueryKey = LibraryBrowser.getSavedQueryKey('artists');
|
||||
}
|
||||
return context.savedQueryKey;
|
||||
}
|
||||
|
||||
function reloadItems(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
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") {
|
||||
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);
|
||||
});
|
||||
|
||||
$('.btnPreviousPage', page).on('click', function () {
|
||||
query.StartIndex -= query.Limit;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.btnChangeLayout', page).on('layoutchange', function (e, layout) {
|
||||
getPageData(page).view = layout;
|
||||
LibraryBrowser.saveViewSetting(getSavedQueryKey(page), layout);
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.btnFilter', page).on('click', function () {
|
||||
showFilterMenu(page);
|
||||
});
|
||||
|
||||
LibraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
|
||||
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);
|
||||
}
|
||||
|
||||
$('.alphabetPicker', tabContent).on('alphaselect', function (e, character) {
|
||||
|
||||
var query = getQuery(tabContent);
|
||||
|
||||
query.NameStartsWithOrGreater = character;
|
||||
query.StartIndex = 0;
|
||||
|
||||
reloadItems(tabContent);
|
||||
|
||||
}).on('alphaclear', function (e) {
|
||||
|
||||
var query = getQuery(tabContent);
|
||||
|
||||
query.NameStartsWithOrGreater = '';
|
||||
|
||||
reloadItems(tabContent);
|
||||
});
|
||||
self.renderTab = function () {
|
||||
|
||||
reloadItems(tabContent);
|
||||
};
|
||||
};
|
||||
});
|
|
@ -1,107 +1,107 @@
|
|||
define(['jQuery'], function ($) {
|
||||
|
||||
var data = {};
|
||||
function getPageData() {
|
||||
var key = getSavedQueryKey();
|
||||
var pageData = data[key];
|
||||
|
||||
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')
|
||||
};
|
||||
|
||||
pageData.query.ParentId = LibraryMenu.getTopParentId();
|
||||
LibraryBrowser.loadSavedQueryValues(key, pageData.query);
|
||||
}
|
||||
return pageData;
|
||||
}
|
||||
|
||||
function getQuery() {
|
||||
|
||||
return getPageData().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
|
||||
});
|
||||
}
|
||||
|
||||
var elem = page.querySelector('#items');
|
||||
elem.innerHTML = html + pagingHtml;
|
||||
ImageLoader.lazyChildren(elem);
|
||||
|
||||
$('.btnNextPage', page).on('click', function () {
|
||||
query.StartIndex += query.Limit;
|
||||
reloadItems(page, viewPanel);
|
||||
});
|
||||
|
||||
$('.btnPreviousPage', page).on('click', function () {
|
||||
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);
|
||||
};
|
||||
|
||||
define(['jQuery'], function ($) {
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
|
||||
var self = this;
|
||||
|
||||
var data = {};
|
||||
function getPageData() {
|
||||
var key = getSavedQueryKey();
|
||||
var pageData = data[key];
|
||||
|
||||
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')
|
||||
};
|
||||
|
||||
pageData.query.ParentId = LibraryMenu.getTopParentId();
|
||||
LibraryBrowser.loadSavedQueryValues(key, pageData.query);
|
||||
}
|
||||
return pageData;
|
||||
}
|
||||
|
||||
function getQuery() {
|
||||
|
||||
return getPageData().query;
|
||||
}
|
||||
|
||||
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 () {
|
||||
|
||||
reloadItems(tabContent);
|
||||
};
|
||||
};
|
||||
|
||||
});
|
|
@ -1,131 +1,136 @@
|
|||
define(['jQuery'], function ($) {
|
||||
|
||||
var data = {};
|
||||
function getPageData() {
|
||||
var key = getSavedQueryKey();
|
||||
var pageData = data[key];
|
||||
return function (view, params, tabContent) {
|
||||
|
||||
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')
|
||||
};
|
||||
var self = this;
|
||||
|
||||
pageData.query.ParentId = LibraryMenu.getTopParentId();
|
||||
LibraryBrowser.loadSavedQueryValues(key, pageData.query);
|
||||
var data = {};
|
||||
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
|
||||
window.scrollTo(0, 0);
|
||||
// Scroll back up so they can see the results from the beginning
|
||||
window.scrollTo(0, 0);
|
||||
|
||||
var html = '';
|
||||
var html = '';
|
||||
|
||||
var view = getPageData().view;
|
||||
var view = getPageData().view;
|
||||
|
||||
$('.listTopPaging', page).html(LibraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
showLimit: false,
|
||||
updatePageSizeSetting: false,
|
||||
addLayoutButton: true,
|
||||
currentLayout: view
|
||||
$('.listTopPaging', context).html(LibraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
showLimit: false,
|
||||
updatePageSizeSetting: false,
|
||||
addLayoutButton: true,
|
||||
currentLayout: view
|
||||
|
||||
}));
|
||||
}));
|
||||
|
||||
if (view == "Thumb") {
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
preferThumb: true,
|
||||
showItemCounts: true,
|
||||
context: 'music',
|
||||
lazy: true,
|
||||
centerText: true,
|
||||
overlayPlayButton: true
|
||||
if (view == "Thumb") {
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
preferThumb: true,
|
||||
showItemCounts: true,
|
||||
context: 'music',
|
||||
lazy: true,
|
||||
centerText: 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({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
preferThumb: true,
|
||||
context: 'music',
|
||||
showItemCounts: true,
|
||||
cardLayout: true,
|
||||
lazy: true,
|
||||
showTitle: true
|
||||
$('.btnPreviousPage', context).on('click', function () {
|
||||
query.StartIndex -= query.Limit;
|
||||
reloadItems(context);
|
||||
});
|
||||
}
|
||||
else if (view == "Poster") {
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "portrait",
|
||||
context: 'music',
|
||||
centerText: true,
|
||||
showItemCounts: true,
|
||||
lazy: true
|
||||
|
||||
$('.btnChangeLayout', context).on('layoutchange', function (e, layout) {
|
||||
getPageData().view = layout;
|
||||
LibraryBrowser.saveViewSetting(getSavedQueryKey(), layout);
|
||||
reloadItems(context);
|
||||
});
|
||||
}
|
||||
|
||||
var elem = page.querySelector('#items');
|
||||
elem.innerHTML = html;
|
||||
ImageLoader.lazyChildren(elem);
|
||||
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
|
||||
|
||||
$('.btnNextPage', page).on('click', function () {
|
||||
query.StartIndex += query.Limit;
|
||||
reloadItems(page);
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
$('.btnPreviousPage', page).on('click', function () {
|
||||
query.StartIndex -= query.Limit;
|
||||
reloadItems(page);
|
||||
});
|
||||
self.renderTab = function () {
|
||||
|
||||
$('.btnChangeLayout', page).on('layoutchange', function (e, layout) {
|
||||
getPageData().view = layout;
|
||||
LibraryBrowser.saveViewSetting(getSavedQueryKey(), layout);
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
window.MusicPage.renderGenresTab = function (page, tabContent) {
|
||||
|
||||
reloadItems(tabContent);
|
||||
reloadItems(tabContent);
|
||||
};
|
||||
};
|
||||
|
||||
});
|
|
@ -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) {
|
||||
|
||||
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 () {
|
||||
|
||||
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();
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
});
|
|
@ -2281,7 +2281,7 @@ var AppInfo = {};
|
|||
|
||||
var baseUrl = 'bower_components/emby-webcomponents/strings/';
|
||||
|
||||
var languages = ['en-US'];
|
||||
var languages = ['en-US', 'kk', 'ru'];
|
||||
|
||||
var translations = languages.map(function (i) {
|
||||
return {
|
||||
|
@ -2613,7 +2613,8 @@ var AppInfo = {};
|
|||
|
||||
defineRoute({
|
||||
path: '/livetv.html',
|
||||
dependencies: ['paper-button'],
|
||||
dependencies: ['paper-button', 'livetvcss'],
|
||||
controller: 'scripts/livetvsuggested',
|
||||
autoFocus: false
|
||||
});
|
||||
|
||||
|
@ -2735,7 +2736,8 @@ var AppInfo = {};
|
|||
|
||||
defineRoute({
|
||||
path: '/music.html',
|
||||
dependencies: [],
|
||||
dependencies: ['scripts/alphapicker'],
|
||||
controller: 'scripts/musicrecommended',
|
||||
autoFocus: false
|
||||
});
|
||||
|
||||
|
|
|
@ -1,166 +1,171 @@
|
|||
define(['jQuery'], function ($) {
|
||||
|
||||
var defaultSortBy = "Album,SortName";
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
function getQuery(context) {
|
||||
|
||||
return getPageData(context).query;
|
||||
}
|
||||
|
||||
function getSavedQueryKey(context) {
|
||||
|
||||
if (!context.savedQueryKey) {
|
||||
context.savedQueryKey = LibraryBrowser.getSavedQueryKey('songs');
|
||||
}
|
||||
return context.savedQueryKey;
|
||||
}
|
||||
|
||||
function reloadItems(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
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 pagingHtml = LibraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
showLimit: false,
|
||||
sortButton: true,
|
||||
updatePageSizeSetting: false,
|
||||
filterButton: true
|
||||
});
|
||||
|
||||
page.querySelector('.listTopPaging').innerHTML = pagingHtml;
|
||||
|
||||
html += LibraryBrowser.getListViewHtml({
|
||||
items: result.Items,
|
||||
showIndex: true,
|
||||
defaultAction: 'play',
|
||||
smallIcon: true
|
||||
});
|
||||
|
||||
var elem = page.querySelector('#items');
|
||||
elem.innerHTML = html + pagingHtml;
|
||||
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
|
||||
});
|
||||
});
|
||||
|
||||
LibraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
function showFilterMenu(page) {
|
||||
|
||||
require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
|
||||
|
||||
var filterDialog = new filterDialogFactory({
|
||||
query: getQuery(page),
|
||||
mode: 'songs'
|
||||
});
|
||||
|
||||
Events.on(filterDialog, 'filterchange', function () {
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
filterDialog.show();
|
||||
});
|
||||
}
|
||||
|
||||
window.MusicPage.renderSongsTab = function (page, tabContent) {
|
||||
|
||||
reloadItems(tabContent);
|
||||
};
|
||||
|
||||
define(['jQuery'], function ($) {
|
||||
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
|
||||
var self = this;
|
||||
|
||||
var defaultSortBy = "Album,SortName";
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
function getQuery(context) {
|
||||
|
||||
return getPageData(context).query;
|
||||
}
|
||||
|
||||
function getSavedQueryKey(context) {
|
||||
|
||||
if (!context.savedQueryKey) {
|
||||
context.savedQueryKey = LibraryBrowser.getSavedQueryKey('songs');
|
||||
}
|
||||
return context.savedQueryKey;
|
||||
}
|
||||
|
||||
function reloadItems(context) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var query = getQuery(context);
|
||||
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 pagingHtml = LibraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
showLimit: false,
|
||||
sortButton: true,
|
||||
updatePageSizeSetting: false,
|
||||
filterButton: true
|
||||
});
|
||||
|
||||
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();
|
||||
});
|
||||
}
|
||||
|
||||
function showFilterMenu(context) {
|
||||
|
||||
require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
|
||||
|
||||
var filterDialog = new filterDialogFactory({
|
||||
query: getQuery(context),
|
||||
mode: 'songs'
|
||||
});
|
||||
|
||||
Events.on(filterDialog, 'filterchange', function () {
|
||||
reloadItems(context);
|
||||
});
|
||||
|
||||
filterDialog.show();
|
||||
});
|
||||
}
|
||||
self.renderTab = function () {
|
||||
|
||||
reloadItems(tabContent);
|
||||
};
|
||||
};
|
||||
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue