mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
update client sync
This commit is contained in:
parent
4ed9e6d637
commit
39d4daa2fb
10 changed files with 78 additions and 55 deletions
|
@ -1,7 +1,9 @@
|
||||||
(function () {
|
(function () {
|
||||||
|
|
||||||
function getLocalMediaSource(serverId, itemId) {
|
function getLocalMediaSource(serverId, itemId) {
|
||||||
return null;
|
var deferred = DeferredBuilder.Deferred();
|
||||||
|
deferred.resolveWith(null, [null]);
|
||||||
|
return deferred.promise();
|
||||||
}
|
}
|
||||||
|
|
||||||
function saveOfflineUser(user) {
|
function saveOfflineUser(user) {
|
||||||
|
|
|
@ -25,14 +25,14 @@
|
||||||
"web-component-tester": "*",
|
"web-component-tester": "*",
|
||||||
"webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
|
"webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/PolymerElements/iron-meta",
|
"homepage": "https://github.com/polymerelements/iron-meta",
|
||||||
"_release": "1.0.3",
|
"_release": "1.0.3",
|
||||||
"_resolution": {
|
"_resolution": {
|
||||||
"type": "version",
|
"type": "version",
|
||||||
"tag": "v1.0.3",
|
"tag": "v1.0.3",
|
||||||
"commit": "91529259262b0d8f33fed44bc3fd47aedf35cb04"
|
"commit": "91529259262b0d8f33fed44bc3fd47aedf35cb04"
|
||||||
},
|
},
|
||||||
"_source": "git://github.com/PolymerElements/iron-meta.git",
|
"_source": "git://github.com/polymerelements/iron-meta.git",
|
||||||
"_target": "^1.0.0",
|
"_target": "^1.0.0",
|
||||||
"_originalSource": "PolymerElements/iron-meta"
|
"_originalSource": "polymerelements/iron-meta"
|
||||||
}
|
}
|
|
@ -42,7 +42,7 @@
|
||||||
"tag": "v1.0.3",
|
"tag": "v1.0.3",
|
||||||
"commit": "90b54de14264c19693601b9fc16af6b68a9d48e4"
|
"commit": "90b54de14264c19693601b9fc16af6b68a9d48e4"
|
||||||
},
|
},
|
||||||
"_source": "git://github.com/polymerelements/paper-behaviors.git",
|
"_source": "git://github.com/PolymerElements/paper-behaviors.git",
|
||||||
"_target": "^1.0.0",
|
"_target": "^1.0.0",
|
||||||
"_originalSource": "polymerelements/paper-behaviors"
|
"_originalSource": "PolymerElements/paper-behaviors"
|
||||||
}
|
}
|
22
dashboard-ui/cordova/android/vlcplayer.js
vendored
22
dashboard-ui/cordova/android/vlcplayer.js
vendored
|
@ -90,7 +90,7 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function getPlaybackStartInfoForVideoActivity(videoUrl, mediaSource, item) {
|
function getPlaybackStartInfoForVideoActivity(streamInfo, mediaSource, item) {
|
||||||
|
|
||||||
var playbackStartInfo = {
|
var playbackStartInfo = {
|
||||||
QueueableMediaTypes: item.MediaType,
|
QueueableMediaTypes: item.MediaType,
|
||||||
|
@ -103,20 +103,21 @@
|
||||||
playbackStartInfo.NowPlayingItem.RunTimeTicks = mediaSource.RunTimeTicks;
|
playbackStartInfo.NowPlayingItem.RunTimeTicks = mediaSource.RunTimeTicks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var videoUrl = streamInfo.url;
|
||||||
var audioStreamIndex = getParameterByName('AudioStreamIndex', videoUrl);
|
var audioStreamIndex = getParameterByName('AudioStreamIndex', videoUrl);
|
||||||
|
|
||||||
if (audioStreamIndex) {
|
if (audioStreamIndex) {
|
||||||
playbackStartInfo.AudioStreamIndex = parseInt(audioStreamIndex);
|
playbackStartInfo.AudioStreamIndex = parseInt(audioStreamIndex);
|
||||||
}
|
}
|
||||||
if (self.currentSubtitleStreamIndex != null) {
|
|
||||||
playbackStartInfo.SubtitleStreamIndex = self.currentSubtitleStreamIndex;
|
// TODO: This should be passed in rather than going out to get it
|
||||||
|
if (MediaPlayer.currentSubtitleStreamIndex != null) {
|
||||||
|
playbackStartInfo.SubtitleStreamIndex = MediaPlayer.currentSubtitleStreamIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
playbackStartInfo.PlayMethod = getParameterByName('static', videoUrl) == 'true' ?
|
playbackStartInfo.PlayMethod = streamInfo.playMethod;
|
||||||
'DirectStream' :
|
|
||||||
'Transcode';
|
|
||||||
|
|
||||||
playbackStartInfo.LiveStreamId = getParameterByName('LiveStreamId', videoUrl);
|
playbackStartInfo.LiveStreamId = mediaSource.LiveStreamId;
|
||||||
playbackStartInfo.PlaySessionId = getParameterByName('PlaySessionId', videoUrl);
|
playbackStartInfo.PlaySessionId = getParameterByName('PlaySessionId', videoUrl);
|
||||||
|
|
||||||
// Seeing some deserialization errors around this property
|
// Seeing some deserialization errors around this property
|
||||||
|
@ -127,13 +128,14 @@
|
||||||
return playbackStartInfo;
|
return playbackStartInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
self.setCurrentSrc = function (val, item, mediaSource, tracks) {
|
self.setCurrentSrc = function (streamInfo, item, mediaSource, tracks) {
|
||||||
|
|
||||||
if (!val) {
|
if (!streamInfo) {
|
||||||
self.destroy();
|
self.destroy();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var val = streamInfo.url;
|
||||||
var tIndex = val.indexOf('#t=');
|
var tIndex = val.indexOf('#t=');
|
||||||
var startPosMs = 0;
|
var startPosMs = 0;
|
||||||
|
|
||||||
|
@ -148,7 +150,7 @@
|
||||||
AndroidVlcPlayer.playAudioVlc(val, JSON.stringify(item), JSON.stringify(mediaSource), options.poster);
|
AndroidVlcPlayer.playAudioVlc(val, JSON.stringify(item), JSON.stringify(mediaSource), options.poster);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
var playbackStartInfo = getPlaybackStartInfoForVideoActivity(val, mediaSource, item);
|
var playbackStartInfo = getPlaybackStartInfoForVideoActivity(streamInfo, mediaSource, item);
|
||||||
|
|
||||||
var serverUrl = ApiClient.serverAddress();
|
var serverUrl = ApiClient.serverAddress();
|
||||||
|
|
||||||
|
|
9
dashboard-ui/cordova/localassetmanager.js
vendored
9
dashboard-ui/cordova/localassetmanager.js
vendored
|
@ -2,16 +2,21 @@
|
||||||
|
|
||||||
function getLocalMediaSource(serverId, itemId) {
|
function getLocalMediaSource(serverId, itemId) {
|
||||||
|
|
||||||
|
var deferred = DeferredBuilder.Deferred();
|
||||||
|
|
||||||
// android
|
// android
|
||||||
if (window.ApiClientBridge) {
|
if (window.ApiClientBridge) {
|
||||||
var json = ApiClientBridge.getLocalMediaSource(serverId, itemId);
|
var json = ApiClientBridge.getLocalMediaSource(serverId, itemId);
|
||||||
|
|
||||||
if (json) {
|
if (json) {
|
||||||
return JSON.parse(json);
|
deferred.resolveWith(null, [JSON.parse(json)]);
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
deferred.resolveWith(null, [null]);
|
||||||
|
}
|
||||||
|
return deferred.promise();
|
||||||
}
|
}
|
||||||
|
|
||||||
var deferred = DeferredBuilder.Deferred();
|
|
||||||
getLocalItem(itemId, serverId).done(function (localItem) {
|
getLocalItem(itemId, serverId).done(function (localItem) {
|
||||||
|
|
||||||
if (localItem && localItem.MediaSources.length) {
|
if (localItem && localItem.MediaSources.length) {
|
||||||
|
|
|
@ -331,7 +331,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
var currentSrc;
|
var currentSrc;
|
||||||
self.setCurrentSrc = function (val, item, mediaSource, tracks) {
|
self.setCurrentSrc = function (streamInfo, item, mediaSource, tracks) {
|
||||||
|
|
||||||
var elem = mediaElement;
|
var elem = mediaElement;
|
||||||
|
|
||||||
|
@ -340,7 +340,7 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!val) {
|
if (!streamInfo) {
|
||||||
currentSrc = null;
|
currentSrc = null;
|
||||||
elem.src = null;
|
elem.src = null;
|
||||||
elem.src = "";
|
elem.src = "";
|
||||||
|
@ -354,6 +354,7 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var val = streamInfo.url;
|
||||||
requiresSettingStartTimeOnStart = false;
|
requiresSettingStartTimeOnStart = false;
|
||||||
var startTime = getStartTime(val);
|
var startTime = getStartTime(val);
|
||||||
var playNow = false;
|
var playNow = false;
|
||||||
|
|
|
@ -755,8 +755,7 @@
|
||||||
var serverInfo = ApiClient.serverInfo();
|
var serverInfo = ApiClient.serverInfo();
|
||||||
|
|
||||||
if (serverInfo.Id) {
|
if (serverInfo.Id) {
|
||||||
var localMediaSource = window.LocalAssetManager.getLocalMediaSource(serverInfo.Id, itemId);
|
LocalAssetManager.getLocalMediaSource(serverInfo.Id, itemId).done(function (localMediaSource) {
|
||||||
|
|
||||||
// Use the local media source if a specific one wasn't requested, or the smae one was requested
|
// Use the local media source if a specific one wasn't requested, or the smae one was requested
|
||||||
if (localMediaSource && (!mediaSource || mediaSource.Id == localMediaSource.Id)) {
|
if (localMediaSource && (!mediaSource || mediaSource.Id == localMediaSource.Id)) {
|
||||||
|
|
||||||
|
@ -765,16 +764,24 @@
|
||||||
deferred.resolveWith(null, [playbackInfo]);
|
deferred.resolveWith(null, [playbackInfo]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getPlaybackInfoWithoutLocalMediaSource(itemId, deviceProfile, startPosition, mediaSource, audioStreamIndex, subtitleStreamIndex, liveStreamId, deferred);
|
||||||
|
});
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getPlaybackInfoWithoutLocalMediaSource(itemId, deviceProfile, startPosition, mediaSource, audioStreamIndex, subtitleStreamIndex, liveStreamId, deferred);
|
||||||
|
});
|
||||||
|
|
||||||
|
return deferred.promise();
|
||||||
|
}
|
||||||
|
|
||||||
|
function getPlaybackInfoWithoutLocalMediaSource(itemId, deviceProfile, startPosition, mediaSource, audioStreamIndex, subtitleStreamIndex, liveStreamId, deferred) {
|
||||||
self.getPlaybackInfoInternal(itemId, deviceProfile, startPosition, mediaSource, audioStreamIndex, subtitleStreamIndex, liveStreamId).done(function (result) {
|
self.getPlaybackInfoInternal(itemId, deviceProfile, startPosition, mediaSource, audioStreamIndex, subtitleStreamIndex, liveStreamId).done(function (result) {
|
||||||
deferred.resolveWith(null, [result]);
|
deferred.resolveWith(null, [result]);
|
||||||
}).fail(function () {
|
}).fail(function () {
|
||||||
deferred.reject();
|
deferred.reject();
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
|
||||||
return deferred.promise();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
self.getPlaybackInfoInternal = function (itemId, deviceProfile, startPosition, mediaSource, audioStreamIndex, subtitleStreamIndex, liveStreamId) {
|
self.getPlaybackInfoInternal = function (itemId, deviceProfile, startPosition, mediaSource, audioStreamIndex, subtitleStreamIndex, liveStreamId) {
|
||||||
|
@ -859,7 +866,9 @@
|
||||||
|
|
||||||
if (mediaSource.Protocol == 'File') {
|
if (mediaSource.Protocol == 'File') {
|
||||||
|
|
||||||
return FileSystemBridge.fileExists(mediaSource.Path);
|
var exists = FileSystemBridge.fileExists(mediaSource.Path);
|
||||||
|
Logger.log('FileSystemBridge.fileExists: path: ' + mediaSource.Path + ' result: ' + exists);
|
||||||
|
return exists;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -918,8 +918,6 @@
|
||||||
|
|
||||||
self.playVideoInternal = function (item, mediaSource, startPosition, streamInfo, callback) {
|
self.playVideoInternal = function (item, mediaSource, startPosition, streamInfo, callback) {
|
||||||
|
|
||||||
var videoUrl = streamInfo.url;
|
|
||||||
|
|
||||||
self.startTimeTicksOffset = streamInfo.startTimeTicksOffset;
|
self.startTimeTicksOffset = streamInfo.startTimeTicksOffset;
|
||||||
|
|
||||||
var mediaStreams = mediaSource.MediaStreams || [];
|
var mediaStreams = mediaSource.MediaStreams || [];
|
||||||
|
@ -928,8 +926,8 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
// Reports of stuttering with h264 stream copy in IE
|
// Reports of stuttering with h264 stream copy in IE
|
||||||
if (streamInfo.playMethod == 'Transcode' && videoUrl.indexOf('.m3u8') == -1) {
|
if (streamInfo.playMethod == 'Transcode' && streamInfo.url.indexOf('.m3u8') == -1) {
|
||||||
videoUrl += '&EnableAutoStreamCopy=false';
|
streamInfo.url += '&EnableAutoStreamCopy=false';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create video player
|
// Create video player
|
||||||
|
@ -1079,7 +1077,8 @@
|
||||||
|
|
||||||
mediaRenderer.init().done(function () {
|
mediaRenderer.init().done(function () {
|
||||||
|
|
||||||
self.setSrcIntoRenderer(mediaRenderer, videoUrl, item, self.currentMediaSource);
|
self.setSrcIntoRenderer(mediaRenderer, streamInfo, item, self.currentMediaSource);
|
||||||
|
self.streamInfo = streamInfo;
|
||||||
|
|
||||||
if (callback) {
|
if (callback) {
|
||||||
callback();
|
callback();
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
|
|
||||||
self.isLocalPlayer = true;
|
self.isLocalPlayer = true;
|
||||||
self.isDefaultPlayer = true;
|
self.isDefaultPlayer = true;
|
||||||
|
self.streamInfo = {};
|
||||||
|
|
||||||
self.name = 'Html5 Player';
|
self.name = 'Html5 Player';
|
||||||
|
|
||||||
|
@ -649,13 +650,12 @@
|
||||||
|
|
||||||
self.currentSubtitleStreamIndex = subtitleStreamIndex;
|
self.currentSubtitleStreamIndex = subtitleStreamIndex;
|
||||||
|
|
||||||
currentSrc = streamInfo.url;
|
changeStreamToUrl(mediaRenderer, playSessionId, streamInfo, streamInfo.startTimeTicksOffset || 0);
|
||||||
changeStreamToUrl(mediaRenderer, playSessionId, currentSrc, streamInfo.startTimeTicksOffset || 0);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
function changeStreamToUrl(mediaRenderer, playSessionId, url, newPositionTicks) {
|
function changeStreamToUrl(mediaRenderer, playSessionId, streamInfo, newPositionTicks) {
|
||||||
|
|
||||||
clearProgressInterval();
|
clearProgressInterval();
|
||||||
|
|
||||||
|
@ -679,7 +679,7 @@
|
||||||
ApiClient.stopActiveEncodings(playSessionId).done(function () {
|
ApiClient.stopActiveEncodings(playSessionId).done(function () {
|
||||||
|
|
||||||
//self.startTimeTicksOffset = newPositionTicks;
|
//self.startTimeTicksOffset = newPositionTicks;
|
||||||
self.setSrcIntoRenderer(mediaRenderer, url, self.currentItem, self.currentMediaSource);
|
self.setSrcIntoRenderer(mediaRenderer, streamInfo, self.currentItem, self.currentMediaSource);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -687,11 +687,11 @@
|
||||||
self.updateTextStreamUrls(newPositionTicks || 0);
|
self.updateTextStreamUrls(newPositionTicks || 0);
|
||||||
} else {
|
} else {
|
||||||
self.startTimeTicksOffset = newPositionTicks || 0;
|
self.startTimeTicksOffset = newPositionTicks || 0;
|
||||||
self.setSrcIntoRenderer(mediaRenderer, url, self.currentItem, self.currentMediaSource);
|
self.setSrcIntoRenderer(mediaRenderer, streamInfo, self.currentItem, self.currentMediaSource);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self.setSrcIntoRenderer = function (mediaRenderer, url, item, mediaSource) {
|
self.setSrcIntoRenderer = function (mediaRenderer, streamInfo, item, mediaSource) {
|
||||||
|
|
||||||
var subtitleStreams = mediaSource.MediaStreams.filter(function (s) {
|
var subtitleStreams = mediaSource.MediaStreams.filter(function (s) {
|
||||||
return s.Type == 'Subtitle';
|
return s.Type == 'Subtitle';
|
||||||
|
@ -715,7 +715,8 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
mediaRenderer.setCurrentSrc(url, item, mediaSource, tracks);
|
mediaRenderer.setCurrentSrc(streamInfo, item, mediaSource, tracks);
|
||||||
|
self.streamInfo = streamInfo;
|
||||||
};
|
};
|
||||||
|
|
||||||
self.setCurrentTime = function (ticks, positionSlider, currentTimeElement) {
|
self.setCurrentTime = function (ticks, positionSlider, currentTimeElement) {
|
||||||
|
@ -1523,6 +1524,8 @@
|
||||||
self.currentMediaRenderer = null;
|
self.currentMediaRenderer = null;
|
||||||
self.currentItem = null;
|
self.currentItem = null;
|
||||||
self.currentMediaSource = null;
|
self.currentMediaSource = null;
|
||||||
|
self.currentSubtitleStreamIndex = null;
|
||||||
|
self.streamInfo = {};
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1532,6 +1535,8 @@
|
||||||
self.currentMediaRenderer = null;
|
self.currentMediaRenderer = null;
|
||||||
self.currentItem = null;
|
self.currentItem = null;
|
||||||
self.currentMediaSource = null;
|
self.currentMediaSource = null;
|
||||||
|
self.currentSubtitleStreamIndex = null;
|
||||||
|
self.streamInfo = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (self.isFullScreen()) {
|
if (self.isFullScreen()) {
|
||||||
|
@ -1561,8 +1566,6 @@
|
||||||
PlayState: {}
|
PlayState: {}
|
||||||
};
|
};
|
||||||
|
|
||||||
var currentSrc = mediaRenderer ? mediaRenderer.currentSrc() : null;
|
|
||||||
|
|
||||||
if (mediaRenderer) {
|
if (mediaRenderer) {
|
||||||
|
|
||||||
state.PlayState.VolumeLevel = mediaRenderer.volume() * 100;
|
state.PlayState.VolumeLevel = mediaRenderer.volume() * 100;
|
||||||
|
@ -1571,6 +1574,8 @@
|
||||||
state.PlayState.PositionTicks = self.getCurrentTicks(mediaRenderer);
|
state.PlayState.PositionTicks = self.getCurrentTicks(mediaRenderer);
|
||||||
state.PlayState.RepeatMode = self.getRepeatMode();
|
state.PlayState.RepeatMode = self.getRepeatMode();
|
||||||
|
|
||||||
|
var currentSrc = mediaRenderer.currentSrc();
|
||||||
|
|
||||||
if (currentSrc) {
|
if (currentSrc) {
|
||||||
|
|
||||||
var audioStreamIndex = getParameterByName('AudioStreamIndex', currentSrc);
|
var audioStreamIndex = getParameterByName('AudioStreamIndex', currentSrc);
|
||||||
|
@ -1580,11 +1585,9 @@
|
||||||
}
|
}
|
||||||
state.PlayState.SubtitleStreamIndex = self.currentSubtitleStreamIndex;
|
state.PlayState.SubtitleStreamIndex = self.currentSubtitleStreamIndex;
|
||||||
|
|
||||||
state.PlayState.PlayMethod = getParameterByName('static', currentSrc) == 'true' ?
|
state.PlayState.PlayMethod = self.streamInfo.playMethod;
|
||||||
'DirectStream' :
|
|
||||||
'Transcode';
|
|
||||||
|
|
||||||
state.PlayState.LiveStreamId = getParameterByName('LiveStreamId', currentSrc);
|
state.PlayState.LiveStreamId = mediaSource.LiveStreamId;
|
||||||
state.PlayState.PlaySessionId = getParameterByName('PlaySessionId', currentSrc);
|
state.PlayState.PlaySessionId = getParameterByName('PlaySessionId', currentSrc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1911,7 +1914,8 @@
|
||||||
// Set volume first to avoid an audible change
|
// Set volume first to avoid an audible change
|
||||||
mediaRenderer.volume(initialVolume);
|
mediaRenderer.volume(initialVolume);
|
||||||
|
|
||||||
mediaRenderer.setCurrentSrc(audioUrl, item, mediaSource);
|
mediaRenderer.setCurrentSrc(streamInfo, item, mediaSource);
|
||||||
|
self.streamInfo = streamInfo;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
var folderHtml = '';
|
var folderHtml = '';
|
||||||
|
|
||||||
folderHtml += '<div class="paperCheckboxList">';
|
folderHtml += '<div class="paperCheckboxList">';
|
||||||
folderHtml += result.Items.map(function (i) {
|
folderHtml += result.map(function (i) {
|
||||||
|
|
||||||
var currentHtml = '';
|
var currentHtml = '';
|
||||||
|
|
||||||
|
@ -141,10 +141,11 @@
|
||||||
});
|
});
|
||||||
var promise2 = ApiClient.getUserViews({}, user.Id);
|
var promise2 = ApiClient.getUserViews({}, user.Id);
|
||||||
var promise3 = ApiClient.getJSON(ApiClient.getUrl("Users/" + user.Id + "/SpecialViewOptions"));
|
var promise3 = ApiClient.getJSON(ApiClient.getUrl("Users/" + user.Id + "/SpecialViewOptions"));
|
||||||
|
var promise4 = ApiClient.getJSON(ApiClient.getUrl("Users/" + user.Id + "/GroupingOptions"));
|
||||||
|
|
||||||
$.when(promise1, promise2, promise3).done(function (r1, r2, r3) {
|
$.when(promise1, promise2, promise3, promise4).done(function (r1, r2, r3, r4) {
|
||||||
|
|
||||||
renderViews(page, user, r1[0]);
|
renderViews(page, user, r4[0]);
|
||||||
renderLatestItems(page, user, r1[0]);
|
renderLatestItems(page, user, r1[0]);
|
||||||
renderViewOrder(page, user, r2[0]);
|
renderViewOrder(page, user, r2[0]);
|
||||||
renderViewStyles(page, user, r3[0]);
|
renderViewStyles(page, user, r3[0]);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue