22
33var storage = new LocalStorage ( ) ;
44var totalTime ;
5+ var tabsFromStorage ;
6+
7+ document . addEventListener ( 'DOMContentLoaded' , function ( ) {
8+ document . getElementById ( 'btnToday' ) . addEventListener ( 'click' , function ( ) {
9+ document . getElementById ( 'btnToday' ) . classList . add ( 'active' ) ;
10+ document . getElementById ( 'btnAll' ) . classList . remove ( 'active' ) ;
11+ document . getElementById ( 'btnByDays' ) . classList . remove ( 'active' ) ;
12+ getDataFromStorageToday ( ) ;
13+ } ) ;
14+ document . getElementById ( 'btnAll' ) . addEventListener ( 'click' , function ( ) {
15+ document . getElementById ( 'btnAll' ) . classList . add ( 'active' ) ;
16+ document . getElementById ( 'btnToday' ) . classList . remove ( 'active' ) ;
17+ document . getElementById ( 'btnByDays' ) . classList . remove ( 'active' ) ;
18+ getDataFromStorageAll ( ) ;
19+ } ) ;
20+ document . getElementById ( 'btnByDays' ) . addEventListener ( 'click' , function ( ) {
21+ document . getElementById ( 'btnByDays' ) . classList . add ( 'active' ) ;
22+ document . getElementById ( 'btnAll' ) . classList . remove ( 'active' ) ;
23+ document . getElementById ( 'btnToday' ) . classList . remove ( 'active' ) ;
24+
25+ document . getElementById ( 'resultTable' ) . innerHTML = null ;
26+ document . getElementById ( 'chart' ) . innerHTML = null ;
27+ } ) ;
28+ } ) ;
529
6- getDataFromStorage ( ) ;
30+ getDataFromStorageToday ( ) ;
731
8- function getDataFromStorage ( ) {
32+ function getDataFromStorageToday ( ) {
933 storage . load ( STORAGE_TABS , getTabsFromStorage ) ;
1034}
1135
12- function getTabsFromStorage ( tabs ) {
36+ function getDataFromStorageAll ( ) {
37+ storage . load ( STORAGE_TABS , getTabsFromStorage , true ) ;
38+ }
39+
40+ function getTabsFromStorage ( tabs , options ) {
41+ tabsFromStorage = tabs ;
42+ var targetTabs = [ ] ;
43+
1344 var table = document . getElementById ( 'resultTable' ) ;
1445 table . innerHTML = null ;
15- tabs = tabs . sort ( function ( a , b ) {
16- return b . summaryTime - a . summaryTime ;
17- } ) ;
46+ document . getElementById ( 'chart' ) . innerHTML = null ;
1847
19- totalTime = setTotalTime ( tabs ) ;
48+ if ( options !== undefined && options === true ) {
49+ targetTabs = tabs . sort ( function ( a , b ) {
50+ return b . summaryTime - a . summaryTime ;
51+ } ) ;
52+
53+ totalTime = setTotalTime ( targetTabs ) ;
54+ } else {
55+ var today = new Date ( ) . toLocaleDateString ( ) ;
56+
57+ targetTabs = tabs . filter ( x => x . days . find ( s => s . date === today ) ) ;
58+ targetTabs = targetTabs . sort ( function ( a , b ) {
59+ return b . days . find ( s => s . date === today ) - a . days . find ( s => s . date === today ) ;
60+ } ) ;
61+
62+ totalTime = setTotalTime ( targetTabs , today ) ;
63+ }
2064
2165 var currentTab = getCurrentTab ( ) ;
2266
2367 var tabsForChart = [ ] ;
24- for ( var i = 0 ; i < tabs . length ; i ++ ) {
68+ for ( var i = 0 ; i < targetTabs . length ; i ++ ) {
2569 var div = document . createElement ( 'div' ) ;
2670 div . classList . add ( 'inline-flex' ) ;
2771
2872 var img = document . createElement ( 'img' ) ;
2973 img . classList . add ( 'favicon' ) ;
3074 img . setAttribute ( 'height' , 15 ) ;
31- img . setAttribute ( 'src' , tabs [ i ] . favicon ) ;
75+ img . setAttribute ( 'src' , targetTabs [ i ] . favicon ) ;
3276
3377 var spanUrl = document . createElement ( 'span' ) ;
3478 spanUrl . classList . add ( 'span-url' ) ;
35- spanUrl . innerText = tabs [ i ] . url ;
36- if ( tabs [ i ] . url == currentTab ) {
79+ spanUrl . innerText = targetTabs [ i ] . url ;
80+ if ( targetTabs [ i ] . url == currentTab ) {
3781 spanUrl . classList . add ( 'span-active-url' ) ;
3882 }
3983
84+ var summaryTime ;
85+ if ( today !== undefined ) {
86+ summaryTime = targetTabs [ i ] . days . find ( x => x . date == today ) . summary ;
87+ } else {
88+ summaryTime = targetTabs [ i ] . summaryTime ;
89+ }
90+
4091 var spanPercentage = document . createElement ( 'span' ) ;
4192 spanPercentage . classList . add ( 'span-percentage' ) ;
42- spanPercentage . innerText = getPercentage ( tabs [ i ] . summaryTime ) ;
93+ spanPercentage . innerText = getPercentage ( summaryTime ) ;
4394
4495 if ( i <= 5 )
45- addTabForChart ( tabsForChart , tabs [ i ] . url , tabs [ i ] . summaryTime ) ;
46- else addTabOthersForChart ( tabsForChart , tabs [ i ] . summaryTime ) ;
96+ addTabForChart ( tabsForChart , targetTabs [ i ] . url , summaryTime ) ;
97+ else addTabOthersForChart ( tabsForChart , summaryTime ) ;
4798
4899 var spanTime = document . createElement ( 'span' ) ;
49100 spanTime . classList . add ( 'span-time' ) ;
50- spanTime . innerText = convertSummaryTimeToString ( tabs [ i ] . summaryTime ) ;
101+ spanTime . innerText = convertSummaryTimeToString ( summaryTime ) ;
51102
52103 div . appendChild ( img ) ;
53104 div . appendChild ( spanUrl ) ;
@@ -60,9 +111,15 @@ function getTabsFromStorage(tabs) {
60111 setActiveTooltipe ( currentTab ) ;
61112}
62113
63- function setTotalTime ( tabs ) {
64- var summaryTimeList = tabs . map ( function ( a ) { return a . summaryTime ; } ) ;
65- var total = summaryTimeList . reduce ( function ( a , b ) { return a + b ; } )
114+ function setTotalTime ( tabs , today ) {
115+ var total ;
116+ if ( today !== undefined ) {
117+ var summaryTimeList = tabs . map ( function ( a ) { return a . days . find ( s => s . date === today ) . summary ; } ) ;
118+ total = summaryTimeList . reduce ( function ( a , b ) { return a + b ; } )
119+ } else {
120+ var summaryTimeList = tabs . map ( function ( a ) { return a . summaryTime ; } ) ;
121+ total = summaryTimeList . reduce ( function ( a , b ) { return a + b ; } )
122+ }
66123 document . getElementById ( 'totalTime' ) . innerText = convertSummaryTimeToString ( total ) ;
67124
68125 return total ;
@@ -102,7 +159,7 @@ function addTabOthersForChart(tabsForChart, summaryTime) {
102159 ) ;
103160 }
104161 else {
105- tab [ 'summary' ] = tab [ 'summary' ] + summaryTime ;
162+ tab [ 'summary' ] += summaryTime ;
106163 tab [ 'percentage' ] = getPercentageForChart ( tab [ 'summary' ] ) ;
107164 }
108165}
@@ -121,7 +178,9 @@ function drawChart(tabs) {
121178 . call ( donut ) ; // draw chart in div
122179}
123180
124- function setActiveTooltipe ( currentTab ) {
125- var event = new Event ( "mouseenter" ) ;
126- document . getElementById ( currentTab ) . dispatchEvent ( event ) ;
181+ function setActiveTooltipe ( currentTab ) {
182+ if ( currentTab !== '' ) {
183+ var event = new Event ( "mouseenter" ) ;
184+ document . getElementById ( currentTab ) . dispatchEvent ( event ) ;
185+ }
127186}
0 commit comments