Convert timer to javascript to cut down on requests.
This commit is contained in:
@@ -126,3 +126,19 @@ std::string WebInterface::getNotificationJs(std::string notificationText)
|
|||||||
std::string escapedText = std::regex_replace(notificationText,std::regex("\""),"'");
|
std::string escapedText = std::regex_replace(notificationText,std::regex("\""),"'");
|
||||||
return std::string("function notifyMe(a,b){var c=\"")+escapedText+std::string("\";if('Notification'in window)if('granted'===Notification.permission){new Notification(c)}else'denied'!==Notification.permission&&Notification.requestPermission(function(a){if('granted'===a){new Notification(c)}});else;}");
|
return std::string("function notifyMe(a,b){var c=\"")+escapedText+std::string("\";if('Notification'in window)if('granted'===Notification.permission){new Notification(c)}else'denied'!==Notification.permission&&Notification.requestPermission(function(a){if('granted'===a){new Notification(c)}});else;}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string WebInterface::getProgressNextTrackJs(std::string pgObj, std::string incValue, std::string startVal)
|
||||||
|
{
|
||||||
|
return pgObj+".incrementProgress = function(){if(1!="+pgObj+".isPaused&&'100%'!="+pgObj+".firstChild.style.width){if(parseFloat("+pgObj+".firstChild.style.width)+"+incValue+">=100)return void("+pgObj+".firstChild.style.width='100%');"+pgObj+".firstChild.style.width=parseFloat("+pgObj+".firstChild.style.width)+"+incValue+"+'%',setTimeout("+pgObj+".incrementProgress,1e3)}};"+pgObj+".firstChild.style.width = '"+startVal+"%';";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string WebInterface::getProgressPauseJs(std::string pgObj)
|
||||||
|
{
|
||||||
|
return pgObj+".isPaused = true;";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string WebInterface::getProgressResumeJs(std::string pgObj)
|
||||||
|
{
|
||||||
|
return pgObj+".isPaused = false;"+pgObj+".incrementProgress();";
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -41,6 +41,9 @@ public:
|
|||||||
void voteNextPollClosedFromServer(AudioTrack winner);
|
void voteNextPollClosedFromServer(AudioTrack winner);
|
||||||
void createUser(Wt::Dbo::Session* session, std::string username, std::string rawPassword, bool isAdmin);
|
void createUser(Wt::Dbo::Session* session, std::string username, std::string rawPassword, bool isAdmin);
|
||||||
User currentUser;
|
User currentUser;
|
||||||
|
std::string getProgressNextTrackJs(std::string pgObj, std::string incValue, std::string startVal);
|
||||||
|
std::string getProgressResumeJs(std::string pgObj);
|
||||||
|
std::string getProgressPauseJs(std::string pgObj);
|
||||||
private:
|
private:
|
||||||
struct internal;
|
struct internal;
|
||||||
internal* priv_int = 0;
|
internal* priv_int = 0;
|
||||||
|
|||||||
@@ -38,9 +38,6 @@ PlayerInterface::PlayerInterface(WebInterface* app)
|
|||||||
|
|
||||||
currentTrackProgress = new Wt::WProgressBar();
|
currentTrackProgress = new Wt::WProgressBar();
|
||||||
currentTrackProgress->setFormat("");
|
currentTrackProgress->setFormat("");
|
||||||
trackProgress = new Wt::WTimer();
|
|
||||||
trackProgress->setInterval(1000);
|
|
||||||
trackProgress->timeout().connect(this,&PlayerInterface::updateProgressFromTimer);
|
|
||||||
currentTrackDetails = new TrackDetails();
|
currentTrackDetails = new TrackDetails();
|
||||||
currentTrackDetails->setMinimumSize(Wt::WLength(100,Wt::WLength::Pixel),Wt::WLength(100,Wt::WLength::Pixel));
|
currentTrackDetails->setMinimumSize(Wt::WLength(100,Wt::WLength::Pixel),Wt::WLength(100,Wt::WLength::Pixel));
|
||||||
currentTrackDetails->changeBackgroundColor(Wt::WColor("#6FFF6F"));
|
currentTrackDetails->changeBackgroundColor(Wt::WColor("#6FFF6F"));
|
||||||
@@ -268,26 +265,13 @@ void PlayerInterface::playpauseUpdated()
|
|||||||
{
|
{
|
||||||
skipRequest->setEnabled(false);
|
skipRequest->setEnabled(false);
|
||||||
playpause->setText(Wt::WString::fromUTF8(""));
|
playpause->setText(Wt::WString::fromUTF8(""));
|
||||||
|
currentTrackProgress->doJavaScript(app->getProgressPauseJs(currentTrackProgress->jsRef()));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(!GroovePlayerMgr::getInstance()->voteEndedButNotNextTrackYet) skipRequest->setEnabled(true);
|
if(!GroovePlayerMgr::getInstance()->voteEndedButNotNextTrackYet) skipRequest->setEnabled(true);
|
||||||
playpause->setText(Wt::WString::fromUTF8(""));
|
playpause->setText(Wt::WString::fromUTF8(""));
|
||||||
}
|
currentTrackProgress->doJavaScript(app->getProgressResumeJs(currentTrackProgress->jsRef()));
|
||||||
}
|
|
||||||
|
|
||||||
void PlayerInterface::updateProgressFromTimer()
|
|
||||||
{
|
|
||||||
if(currentTrackProgress->maximum() >= currentTrackProgress->value()+1)
|
|
||||||
{
|
|
||||||
double secondsIn;
|
|
||||||
groove_player_position(GroovePlayerMgr::getInstance()->currentPlayer,nullptr, &secondsIn);
|
|
||||||
currentTrackProgress->setValue(secondsIn);
|
|
||||||
}
|
|
||||||
else if(currentTrackProgress->maximum() < currentTrackProgress->value()+1)
|
|
||||||
{
|
|
||||||
currentTrackProgress->setValue(currentTrackProgress->maximum());
|
|
||||||
trackProgress->stop();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -296,13 +280,10 @@ void PlayerInterface::updateDetailsFromServer(AudioTrack track)
|
|||||||
//Find current song playing and set progress state.
|
//Find current song playing and set progress state.
|
||||||
double secondsIn;
|
double secondsIn;
|
||||||
groove_player_position(GroovePlayerMgr::getInstance()->currentPlayer,nullptr, &secondsIn);
|
groove_player_position(GroovePlayerMgr::getInstance()->currentPlayer,nullptr, &secondsIn);
|
||||||
currentTrackProgress->setMaximum(track.trackLengthSeconds);
|
//currentTrackProgress->setMaximum(track.trackLengthSeconds);
|
||||||
currentTrackProgress->setValue(secondsIn);
|
//currentTrackProgress->setValue(secondsIn);
|
||||||
isPaused = groove_playlist_playing(GroovePlayerMgr::getInstance()->currentPlaylist) == 0;
|
isPaused = groove_playlist_playing(GroovePlayerMgr::getInstance()->currentPlaylist) == 0;
|
||||||
if(!isPaused)
|
currentTrackProgress->doJavaScript(app->getProgressNextTrackJs(currentTrackProgress->jsRef(),std::to_string(100/track.trackLengthSeconds),std::to_string((100/track.trackLengthSeconds)*secondsIn)));
|
||||||
{
|
|
||||||
trackProgress->start();
|
|
||||||
}
|
|
||||||
playpauseUpdated();
|
playpauseUpdated();
|
||||||
if(GroovePlayerMgr::getInstance()->currentSkipRequester.size() > 0)
|
if(GroovePlayerMgr::getInstance()->currentSkipRequester.size() > 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -49,7 +49,6 @@ public:
|
|||||||
//Play controls
|
//Play controls
|
||||||
TrackDetails* currentTrackDetails;
|
TrackDetails* currentTrackDetails;
|
||||||
Wt::WProgressBar* currentTrackProgress;
|
Wt::WProgressBar* currentTrackProgress;
|
||||||
Wt::WTimer* trackProgress;
|
|
||||||
Wt::WHBoxLayout* currentTrackLayout;
|
Wt::WHBoxLayout* currentTrackLayout;
|
||||||
Wt::WContainerWidget* currentTrackContainer;
|
Wt::WContainerWidget* currentTrackContainer;
|
||||||
Wt::WPushButton* playpause;
|
Wt::WPushButton* playpause;
|
||||||
@@ -96,7 +95,6 @@ public:
|
|||||||
void updateDetailsFromServer(AudioTrack track);
|
void updateDetailsFromServer(AudioTrack track);
|
||||||
void updateVoteableTracksFromServer(std::list<AudioTrack> tracks);
|
void updateVoteableTracksFromServer(std::list<AudioTrack> tracks);
|
||||||
void updateVoteTrackState();
|
void updateVoteTrackState();
|
||||||
void updateProgressFromTimer();
|
|
||||||
void updateSkipRequestedFromServer();
|
void updateSkipRequestedFromServer();
|
||||||
void updateSkipDeniedFromServer();
|
void updateSkipDeniedFromServer();
|
||||||
void updateVotingEnded(AudioTrack winner);
|
void updateVotingEnded(AudioTrack winner);
|
||||||
|
|||||||
Reference in New Issue
Block a user