• Y
  • List All
  • Feedback
    • This Project
    • All Projects
Profile Account Log out
  • Favorite
  • Project
  • Recent History
Loading...
  • Log in
  • Sign up
kadrians / Testing_for_YONA star
  • Project homeH
  • CodeC
  • IssueI 1
  • Pull requestP
  • Review R
  • MilestoneM
  • BoardB 2
  • Files
  • Commit
  • Branches
Testing_for_YONAsourcepublicjavascriptscommonyobi.Interval.js
Download as .zip file
File name
Commit message
Commit date
bin
Yona 1.16.0 Upload
02-04
lib
Yona 1.16.0 Upload
02-04
share/doc/api
Yona 1.16.0 Upload
02-04
source
Source Code Upload
02-04
README.md
Yona 1.16.0 Upload
02-04
File name
Commit message
Commit date
app
Source Code Upload
02-04
conf
Source Code Upload
02-04
docs
Source Code Upload
02-04
lib
Source Code Upload
02-04
project
Source Code Upload
02-04
public
Source Code Upload
02-04
support-script
Source Code Upload
02-04
test
Source Code Upload
02-04
.gitignore
Source Code Upload
02-04
.mailmap
Source Code Upload
02-04
.travis.yml
Source Code Upload
02-04
AUTHORS
Source Code Upload
02-04
LICENSE
Source Code Upload
02-04
NOTICE
Source Code Upload
02-04
README.md
Source Code Upload
02-04
build.sbt
Source Code Upload
02-04
dev.sh
Source Code Upload
02-04
dist.sh
Source Code Upload
02-04
is-alive-bot.sh
Source Code Upload
02-04
minify-js.sh
Source Code Upload
02-04
restart.sh
Source Code Upload
02-04
File name
Commit message
Commit date
bootstrap
Source Code Upload
02-04
help
Source Code Upload
02-04
images
Source Code Upload
02-04
javascripts
Source Code Upload
02-04
stylesheets
Source Code Upload
02-04
compiler.jar
Source Code Upload
02-04
File name
Commit message
Commit date
common
Source Code Upload
02-04
lib
Source Code Upload
02-04
service
Source Code Upload
02-04
template
Source Code Upload
02-04
yona-common.js
Source Code Upload
02-04
yona-layout.js
Source Code Upload
02-04
yona-lib.js
Source Code Upload
02-04
File name
Commit message
Commit date
yobi.Attachments.js
Source Code Upload
02-04
yobi.CodeCommentBlock.js
Source Code Upload
02-04
yobi.CodeCommentBox.js
Source Code Upload
02-04
yobi.Comment.js
Source Code Upload
02-04
yobi.CommentForm.js
Source Code Upload
02-04
yobi.Common.js
Source Code Upload
02-04
yobi.Files.js
Source Code Upload
02-04
yobi.Interval.js
Source Code Upload
02-04
yobi.LoginDialog.js
Source Code Upload
02-04
yobi.Markdown.js
Source Code Upload
02-04
yobi.Mention.js
Source Code Upload
02-04
yobi.OriginalMessage.js
Source Code Upload
02-04
yobi.Pagination.js
Source Code Upload
02-04
yobi.ShortcutKey.js
Source Code Upload
02-04
yobi.WatcherList.js
Source Code Upload
02-04
yobi.ui.Calendar.js
Source Code Upload
02-04
yobi.ui.Dialog.js
Source Code Upload
02-04
yobi.ui.Dropdown.js
Source Code Upload
02-04
yobi.ui.Mergely.js
Source Code Upload
02-04
yobi.ui.Select2.js
Source Code Upload
02-04
yobi.ui.Tabs.js
Source Code Upload
02-04
yobi.ui.Toast.js
Source Code Upload
02-04
yobi.ui.Typeahead.js
Source Code Upload
02-04
yona.CommentAttachmentsUpdate.js
Source Code Upload
02-04
yona.KeyControl.js
Source Code Upload
02-04
yona.ReceiverList.js
Source Code Upload
02-04
yona.Sha1.js
Source Code Upload
02-04
yona.SubComment.js
Source Code Upload
02-04
yona.Subtask.js
Source Code Upload
02-04
yona.Tasklist.js
Source Code Upload
02-04
yona.TitleHeadAutoCompletion.js
Source Code Upload
02-04
yona.Usermenu.js
Source Code Upload
02-04
Nell 02-04 2600fe6 Source Code Upload UNIX
Raw Open in browser Change history
/** * Yobi, Project Hosting SW * * Copyright 2013 NAVER Corp. * http://yobi.io * * @author Jihan Kim * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ yobi = yobi || {}; yobi.Interval = (function(htOptions){ var htVar = {}; var htTimers = {}; /** * Initialize yobi.Interval */ function _init(htOptions){ htVar.bSleep = false; htVar.nTimerInput = null; htVar.nLastInput = new Date().getTime(); _attachEvent(); // if bCaffeine true // timers will not get sleep with input idle if(!htOptions.bCaffeine){ _watchUserInput(); } } /** * wrapper of window.setInterval * * @param {Function} fRunner * @param {Number} nInterval * @return {Number} nTimerId */ function _setInterval(fRunner, nInterval){ var nTimerId = setInterval(fRunner, nInterval); htTimers[nTimerId] = { "fRunner" : fRunner, "nInterval": nInterval, "bActive" : true }; return nTimerId; } /** * wrapper of window.clearInterval * * @param {Number} nTimerId */ function _clearInterval(nTimerId){ clearInterval(nTimerId); delete htTimers[nTimerId]; } /** * add listeners to window object */ function _attachEvent(){ $(window).on({ "scroll" : _onUserInput, "mousedown": _onUserInput, "mousemove": _onUserInput, "keypress" : _onUserInput, "beforeunload": _destroy }); } /** * remove listeners to window object */ function _detachEvent(){ $(window).off({ "scroll" : _onUserInput, "mousedown": _onUserInput, "mousemove": _onUserInput, "keypress" : _onUserInput, }); } /** * activate timers */ function _activateTimers(){ var htTimer; for(var nTimerId in htTimers){ htTimer = htTimers[nTimerId]; if(htTimer.bActive === false){ _setInterval(htTimer.fRunner, htTimer.nInterval); delete htTimers[nTimerId]; } } } /** * deactivate timers */ function _deactivateTimers(){ for(var nTimerId in htTimers){ htTimers[nTimerId].bActive = false; clearInterval(nTimerId); } } /** * detect user interaction events */ function _onUserInput(weEvt){ htVar.nLastInput = weEvt.timeStamp; } /** * start to watch userInput * deactivate all timers automatically if no user input in 60sec, * and reactivate when any input has detected */ function _watchUserInput(){ if(htVar.nTimerInput !== null){ return; } htVar.nTimerInput = setInterval(function(){ var nFromLastInput = (new Date().getTime() - htVar.nLastInput); if(!htVar.bSleep && nFromLastInput >= 60000){ // get sleep if no input in 60s _deactivateTimers(); htVar.bSleep = true; } else if(htVar.bSleep && (nFromLastInput <= 1000)){ // wake up if new input detected htVar.bSleep = false; _activateTimers(); return; } }, 500); } /** * stop to watch userInput */ function _unwatchUserInput(){ clearInterval(htVar.nTimerInput); htVar.nTimerInput = null; } /** * set lastInput to now */ function _updateLastInput(){ htVar.nLastInput = new Date().getTime(); } /** * deactivate all timers beforeunload */ function _destroy(){ _unwatchUserInput(); _deactivateTimers(); _detachEvent(); htTimers = htVar = null; } _init(htOptions || {}); /** * pubilc interface * * set/clear method * and timers hashTable for debug */ return { "set" : _setInterval, "clear" : _clearInterval, "timers": htTimers }; })({"bCaffeine": false});

          
        
    
    
Copyright Yona authors & © NAVER Corp. & NAVER LABS Supported by NAVER CLOUD PLATFORM

or
login with Google Sign in with Google
Reset password | Sign up