11'use strict' ;
22
33var storage = new LocalStorage ( ) ;
4+ var ui = new UI ( ) ;
45var totalTime ;
56var tabsFromStorage ;
6- var donut ;
77var targetTabs ;
88var currentTypeOfList ;
99var today = new Date ( ) . toLocaleDateString ( ) ;
1010
1111document . addEventListener ( 'DOMContentLoaded' , function ( ) {
1212 document . getElementById ( 'btnToday' ) . addEventListener ( 'click' , function ( ) {
1313 currentTypeOfList = TypeListEnum . ToDay ;
14- setUIForToday ( ) ;
14+ ui . setUIForToday ( ) ;
1515 getDataFromStorageToday ( ) ;
1616 } ) ;
1717 document . getElementById ( 'btnAll' ) . addEventListener ( 'click' , function ( ) {
1818 currentTypeOfList = TypeListEnum . All ;
19- setUIForAll ( ) ;
19+ ui . setUIForAll ( ) ;
2020 getDataFromStorageAll ( ) ;
2121 } ) ;
2222 document . getElementById ( 'btnByDays' ) . addEventListener ( 'click' , function ( ) {
2323 currentTypeOfList = TypeListEnum . ByDays ;
24- setUIForByDays ( ) ;
24+ ui . setUIForByDays ( ) ;
2525 } ) ;
2626} ) ;
2727
@@ -40,39 +40,12 @@ function getDataFromStorageAll() {
4040 storage . load ( STORAGE_TABS , getTabsFromStorage ) ;
4141}
4242
43- function setUIForToday ( ) {
44- document . getElementById ( 'btnToday' ) . classList . add ( 'active' ) ;
45- document . getElementById ( 'btnAll' ) . classList . remove ( 'active' ) ;
46- document . getElementById ( 'btnByDays' ) . classList . remove ( 'active' ) ;
47- }
48-
49- function setUIForAll ( ) {
50- document . getElementById ( 'btnAll' ) . classList . add ( 'active' ) ;
51- document . getElementById ( 'btnToday' ) . classList . remove ( 'active' ) ;
52- document . getElementById ( 'btnByDays' ) . classList . remove ( 'active' ) ;
53- }
54-
55- function setUIForByDays ( ) {
56- document . getElementById ( 'btnByDays' ) . classList . add ( 'active' ) ;
57- document . getElementById ( 'btnAll' ) . classList . remove ( 'active' ) ;
58- document . getElementById ( 'btnToday' ) . classList . remove ( 'active' ) ;
59-
60- document . getElementById ( 'resultTable' ) . innerHTML = null ;
61- document . getElementById ( 'chart' ) . innerHTML = null ;
62- }
63-
64- function clearUI ( ) {
65- document . getElementById ( 'resultTable' ) . innerHTML = null ;
66- document . getElementById ( 'chart' ) . innerHTML = null ;
67- document . getElementById ( 'total' ) . innerHTML = null ;
68- }
69-
7043function getTabsFromStorage ( tabs ) {
7144 tabsFromStorage = tabs ;
7245 targetTabs = [ ] ;
7346
74- var table = document . getElementById ( 'resultTable' ) ;
75- clearUI ( ) ;
47+ var table = ui . getTableOfSite ( ) ;
48+ ui . clearUI ( ) ;
7649
7750 if ( currentTypeOfList === TypeListEnum . All ) {
7851 targetTabs = tabs . sort ( function ( a , b ) {
@@ -91,7 +64,7 @@ function getTabsFromStorage(tabs) {
9164 totalTime = getTotalTime ( targetTabs ) ;
9265 }
9366 else {
94- document . getElementById ( 'chart' ) . innerHTML = '<p class="no-data">No data</p>' ;
67+ ui . fillEmptyBlock ( ) ;
9568 return ;
9669 }
9770 }
@@ -100,21 +73,6 @@ function getTabsFromStorage(tabs) {
10073
10174 var tabsForChart = [ ] ;
10275 for ( var i = 0 ; i < targetTabs . length ; i ++ ) {
103- var div = document . createElement ( 'div' ) ;
104- div . classList . add ( 'inline-flex' ) ;
105-
106- var img = document . createElement ( 'img' ) ;
107- img . classList . add ( 'favicon' ) ;
108- img . setAttribute ( 'height' , 15 ) ;
109- img . setAttribute ( 'src' , targetTabs [ i ] . favicon ) ;
110-
111- var spanUrl = document . createElement ( 'span' ) ;
112- spanUrl . classList . add ( 'span-url' ) ;
113- spanUrl . innerText = targetTabs [ i ] . url ;
114- if ( targetTabs [ i ] . url == currentTab ) {
115- spanUrl . classList . add ( 'span-active-url' ) ;
116- }
117-
11876 var summaryTime ;
11977 if ( currentTypeOfList === TypeListEnum . ToDay ) {
12078 summaryTime = targetTabs [ i ] . days . find ( x => x . date == today ) . summary ;
@@ -123,44 +81,17 @@ function getTabsFromStorage(tabs) {
12381 summaryTime = targetTabs [ i ] . summaryTime ;
12482 }
12583
126- var spanPercentage = document . createElement ( 'span' ) ;
127- spanPercentage . classList . add ( 'span-percentage' ) ;
128- spanPercentage . innerText = getPercentage ( summaryTime ) ;
84+ ui . addLineToTableOfSite ( targetTabs [ i ] , currentTab , summaryTime ) ;
12985
13086 if ( i <= 5 )
13187 addTabForChart ( tabsForChart , targetTabs [ i ] . url , summaryTime ) ;
13288 else addTabOthersForChart ( tabsForChart , summaryTime ) ;
133-
134- var spanTime = document . createElement ( 'span' ) ;
135- spanTime . classList . add ( 'span-time' ) ;
136- spanTime . innerText = convertSummaryTimeToString ( summaryTime ) ;
137-
138- div . appendChild ( img ) ;
139- div . appendChild ( spanUrl ) ;
140- div . appendChild ( spanPercentage ) ;
141- div . appendChild ( spanTime ) ;
142- table . appendChild ( div ) ;
14389 }
14490
145- table . appendChild ( document . createElement ( 'hr' ) ) ;
146- addTotalBlock ( ) ;
147- drawChart ( tabsForChart ) ;
148- setActiveTooltipe ( currentTab ) ;
149- }
150-
151- function addTotalBlock ( table ) {
152- var totalElement = document . getElementById ( 'total' ) ;
153-
154- var spanTitle = document . createElement ( 'span' ) ;
155- spanTitle . classList . add ( 'span-total' ) ;
156- spanTitle . innerHTML = 'Total' ;
157-
158- var spanTime = document . createElement ( 'span' ) ;
159- spanTime . classList . add ( 'span-time' ) ;
160- spanTime . innerHTML = convertSummaryTimeToString ( totalTime ) ;
161-
162- totalElement . appendChild ( spanTitle ) ;
163- totalElement . appendChild ( spanTime ) ;
91+ ui . addHrAfterTableOfSite ( ) ;
92+ ui . createTotalBlock ( totalTime ) ;
93+ ui . drawChart ( tabsForChart ) ;
94+ ui . setActiveTooltipe ( currentTab ) ;
16495}
16596
16697function getTotalTime ( tabs ) {
@@ -213,34 +144,4 @@ function addTabOthersForChart(tabsForChart, summaryTime) {
213144 tab [ 'summary' ] += summaryTime ;
214145 tab [ 'percentage' ] = getPercentageForChart ( tab [ 'summary' ] ) ;
215146 }
216- }
217-
218- function drawChart ( tabs ) {
219- donut = donutChart ( )
220- . width ( 480 )
221- . height ( 280 )
222- . cornerRadius ( 5 ) // sets how rounded the corners are on each slice
223- . padAngle ( 0.020 ) // effectively dictates the gap between slices
224- . variable ( 'percentage' )
225- . category ( 'url' ) ;
226-
227- d3 . select ( '#chart' )
228- . datum ( tabs ) // bind data to the div
229- . call ( donut ) ; // draw chart in div
230-
231- document . getElementById ( 'chart' ) . appendChild ( document . createElement ( 'hr' ) ) ;
232- }
233-
234- function setActiveTooltipe ( currentTab ) {
235- if ( currentTab !== '' ) {
236- var element = document . getElementById ( currentTab ) ;
237- if ( element !== null ) {
238- var event = new Event ( "mouseenter" ) ;
239- document . getElementById ( currentTab ) . dispatchEvent ( event ) ;
240- }
241- // var currentInfoForTab;
242- // if (currentTypeOfList === TypeListEnum.ToDay) {
243- // currentInfoForTab = targetTabs.find(x => x.url === currentTab).days.find(x => x.date === today)
244- // }
245- }
246147}
0 commit comments