Skip to content

Commit f5845e0

Browse files
committed
Enable/disable line numbers for headers & footers
1 parent c403bf9 commit f5845e0

File tree

6 files changed

+297
-218
lines changed

6 files changed

+297
-218
lines changed

background.js

Lines changed: 47 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,65 @@
11
//On Exention Open Ask to Reload Line Numbers on all Lines
22
function refreshGDocs() {
3-
chrome.tabs.query({
4-
url: "*://docs.google.com/document/d/*"
5-
}, function(tabs) {
6-
for (var i = 0; i < tabs.length; i++) {
7-
chrome.tabs.sendMessage(
8-
tabs[i].id,
9-
{from: 'popup', subject: 'refresh'},
10-
function(response) {
11-
console.log('GDocs Line Numbering Refreshed');
12-
});
13-
}
14-
});
3+
chrome.tabs.query( {
4+
url: "*://docs.google.com/document/d/*"
5+
}, function( tabs ) {
6+
for ( var i = 0; i < tabs.length; i++ ) {
7+
chrome.tabs.sendMessage(
8+
tabs[ i ].id, {
9+
from: 'popup',
10+
subject: 'refresh'
11+
},
12+
function( response ) {
13+
console.log( 'GDocs Line Numbering Refreshed' );
14+
} );
15+
}
16+
} );
1517
}
1618

1719
function reloadGDocs() {
18-
chrome.tabs.query({
19-
url: "*://docs.google.com/document/d/*"
20-
}, function(tabs) {
21-
for (var i = 0; i < tabs.length; i++) {
22-
chrome.tabs.reload(tabs[i].id);
23-
}
24-
});
20+
chrome.tabs.query( {
21+
url: "*://docs.google.com/document/d/*"
22+
}, function( tabs ) {
23+
for ( var i = 0; i < tabs.length; i++ ) {
24+
chrome.tabs.reload( tabs[ i ].id );
25+
}
26+
} );
2527
}
2628

2729
function onInstall() {
28-
console.log("Extension Installed");
29-
chrome.storage.local.set({ "enabled": true }, function(){
30-
console.log('enabled value set to default value');
31-
reloadGDocs();
32-
});
30+
console.log( "Extension Installed" );
31+
chrome.storage.local.set( {
32+
"enabled": true
33+
}, function() {
34+
console.log( 'enabled value set to default value' );
35+
reloadGDocs();
36+
} );
37+
chrome.storage.local.set( {
38+
"numberHeaderFooter": false
39+
}, function() {
40+
console.log( 'numberHeaderFooter value set to default value' );
41+
} );
3342
}
3443

3544
function onUpdate() {
36-
console.log("Extension Updated");
37-
reloadGDocs();
45+
console.log( "Extension Updated" );
46+
reloadGDocs();
3847
}
3948

4049
function getVersion() {
41-
var details = chrome.app.getDetails();
42-
return details.version;
50+
var details = chrome.app.getDetails();
51+
return details.version;
4352
}
4453

4554
// Check if the version has changed.
4655
var currVersion = getVersion();
47-
var prevVersion = localStorage['version']
48-
if (currVersion != prevVersion) {
49-
// Check if we just installed this extension.
50-
if (typeof prevVersion == 'undefined') {
51-
onInstall();
52-
} else {
53-
onUpdate();
54-
}
55-
localStorage['version'] = currVersion;
56-
}
56+
var prevVersion = localStorage[ 'version' ]
57+
if ( currVersion != prevVersion ) {
58+
// Check if we just installed this extension.
59+
if ( typeof prevVersion == 'undefined' ) {
60+
onInstall();
61+
} else {
62+
onUpdate();
63+
}
64+
localStorage[ 'version' ] = currVersion;
65+
}

linenumbering.js

Lines changed: 75 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -2,89 +2,104 @@
22
//INITIALIZE//
33
//**********//
44

5-
var everyXLine = 5
5+
var everyXLine = 5;
6+
// TODO: Add to storage
7+
var numberHeaderFooter = false;
68

7-
chrome.storage.local.get(["everyXLine"], function (result) {
8-
//update everyXLine value if change
9-
if (result["everyXLine"] != null && result["everyXLine"] > 0 && result["everyXLine"] <= 100) {
10-
everyXLine = result["everyXLine"];
11-
}
12-
});
9+
function updateEveryXLine() {
10+
chrome.storage.local.get( [ "everyXLine" ], function( result ) {
11+
//update everyXLine value if change
12+
if ( result[ "everyXLine" ] > 0 && result[ "everyXLine" ] <= 100 ) {
13+
everyXLine = result[ "everyXLine" ];
14+
} else {
15+
everyXLine = 5;
16+
}
17+
console.log( "Updated everyXLine to " + everyXLine );
18+
} );
19+
}
20+
updateEveryXLine();
21+
22+
function updateNumberHeaderFooter() {
23+
chrome.storage.local.get( [ "numberHeaderFooter" ], function( result ) {
24+
//update everyXLine value if change
25+
if ( result[ "numberHeaderFooter" ] ) {
26+
numberHeaderFooter = result[ "numberHeaderFooter" ];
27+
} else {
28+
numberHeaderFooter = false;
29+
}
30+
console.log( "Updated numberHeaderFooter to " + numberHeaderFooter );
31+
} );
32+
}
33+
updateNumberHeaderFooter();
1334

1435
// var lineCount = $(".kix-lineview").length;
1536
var ln = 0;
1637

1738
function numberLines() {
18-
ln = 0
19-
console.log("Numbering lines every " + everyXLine + " line(s).");
20-
$('body').find(".kix-lineview").each(function() {
21-
ln++;
22-
if (ln%everyXLine === 0) {
23-
$(this).addClass("numbered").attr("ln-number", ln);
24-
}
25-
});
39+
ln = 0;
40+
// console.log( "Numbering lines every " + everyXLine + " line(s)." );
41+
$( 'body' ).find( ".kix-lineview" ).each( function() {
42+
ln++;
43+
if ( ln % everyXLine === 0 ) {
44+
if ( !numberHeaderFooter && ( $( this ).closest( ".kix-page-header" ).length > 0 || $( this ).closest( ".kix-page-bottom" ).length > 0 ) ) {
45+
ln--;
46+
$( this ).removeClass( "numbered" );
47+
} else {
48+
$( this ).addClass( "numbered" ).attr( "ln-number", ln );
49+
}
50+
} else {
51+
$( this ).removeClass( "numbered" );
52+
}
53+
} );
2654
}
2755

28-
chrome.storage.local.get(["enabled"], function (result) {
29-
if (result["enabled"] == true) {
30-
numberLines();
31-
}
32-
});
56+
chrome.storage.local.get( [ "enabled" ], function( result ) {
57+
if ( result[ "enabled" ] == true ) {
58+
numberLines();
59+
}
60+
} );
3361

3462
//*****************//
3563
//REFRESH or UPDATE//
3664
//*****************//
3765

3866
function refresh() {
39-
$(".numbered").removeClass("numbered");
40-
chrome.storage.local.get(["enabled"], function (result) {
41-
if (result["enabled"] == true) {
42-
//If extension still enabled
43-
chrome.storage.local.get(["everyXLine"], function (result) {
44-
//update everyXLine value if change
45-
if (result["everyXLine"] == null || result["everyXLine"] < 1 || result["everyXLine"] > 100) {
46-
everyXLine = 5;
47-
numberLines();
48-
} else {
49-
everyXLine = result["everyXLine"];
50-
console.log("Updated everyXLine to " + everyXLine);
51-
numberLines();
52-
}
53-
});
54-
}
55-
});
67+
$( ".numbered" ).removeClass( "numbered" );
68+
chrome.storage.local.get( [ "enabled" ], function( result ) {
69+
if ( result[ "enabled" ] == true ) {
70+
//If extension still enabled
71+
updateEveryXLine();
72+
updateNumberHeaderFooter();
73+
74+
numberLines();
75+
}
76+
} );
5677
}
5778

5879
//Refresh on load to show pages
5980
refresh();
6081

61-
function autorefresh(){
62-
chrome.storage.local.get(["enabled"], function (result) {
63-
if (result["enabled"] == true) {
64-
ln = 0
65-
$('body').find(".kix-lineview").each(function() {
66-
ln++;
67-
if (ln%everyXLine === 0) {
68-
$(this).addClass("numbered").attr("ln-number", ln);
69-
} else {
70-
$(this).removeClass("numbered");
71-
}
72-
});
73-
}
74-
});
82+
function autorefresh() {
83+
chrome.storage.local.get( [ "enabled" ], function( result ) {
84+
if ( result[ "enabled" ] == true ) {
85+
numberLines();
86+
}
87+
} );
7588
}
7689

77-
setInterval(function(){autorefresh();}, 1000);
90+
setInterval( function() {
91+
autorefresh();
92+
}, 1000 );
7893

7994
// Listen for messages from the popup
80-
chrome.runtime.onMessage.addListener(function (msg, sender, response) {
81-
// Validate the message's structure
82-
if ((msg.from === 'popup') && (msg.subject === 'refresh')) {
83-
//Run when popup notifies of a refresh
84-
console.log("Force refresh requested");
85-
refresh();
86-
}
87-
});
95+
chrome.runtime.onMessage.addListener( function( msg, sender, response ) {
96+
// Validate the message's structure
97+
if ( ( msg.from === 'popup' ) && ( msg.subject === 'refresh' ) ) {
98+
//Run when popup notifies of a refresh
99+
console.log( "Force refresh requested" );
100+
refresh();
101+
}
102+
} );
88103

89104

90105
//************************//

manifest.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
"name": "Line Numbers for Google Docs",
55
"short_name": "Line Numbers",
66
"description": "The simplest way to add line numbers to any Google Docs document",
7-
"version": "1.1",
7+
"author": "Pablo Gamito",
8+
"version": "1.2.0",
89

10+
"content_security_policy": "script-src 'self' https://ssl.google-analytics.com; object-src 'self'",
911
"browser_action": {
1012
"default_icon": "icon.png",
1113
"default_popup": "popup.html"
@@ -37,4 +39,4 @@
3739
"tabs",
3840
"storage"
3941
]
40-
}
42+
}

popup.css

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,26 @@ h1::after {
1717
display: block;
1818
height: 1px;
1919
width: 200%;
20-
margin-top: 3px;
20+
margin-top: -20px;
2121
margin-left: -10px;
2222
background: rgb(240,240,240);
2323
}
2424
h1 img {
2525
height: 48px;
2626
width: 48px;
2727
}
28-
h1 span{
28+
h1 .title {
2929
position: relative;
30-
bottom: 16px;
30+
bottom: 25px;
3131
left: 5px;
3232
}
33+
h1 .subtitle {
34+
position: relative;
35+
bottom: 33px;
36+
left: 53px;
37+
font-size: 12px;
38+
font-weight: 400;
39+
}
3340
.option {
3441
display: inline-block;
3542
}

popup.html

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<script src="popup.js"></script>
88
</head>
99
<body>
10-
<h1><img src="icon.png" alt=""><span>GDocs Line Numbering</span></h1>
10+
<h1><img src="icon.png" alt=""><span class="title">Line Numbers </span><br><span class="subtitle">For Google Docs</span></h1>
1111

1212
<div class="option">
1313
<p class="option_labal">Enabled the Extension</p>
@@ -18,6 +18,15 @@ <h1><img src="icon.png" alt=""><span>GDocs Line Numbering</span></h1>
1818
</label>
1919
</div>
2020

21+
<div class="option">
22+
<p class="option_labal">Number Headers and Footers</p>
23+
<label class="switch switch-green">
24+
<input type="checkbox" class="switch-input" id="number-header-footer">
25+
<span class="switch-label" data-on="On" data-off="Off"></span>
26+
<span class="switch-handle"></span>
27+
</label>
28+
</div>
29+
2130
<!-- <div class="option onDocumentShow">
2231
<p class="option_labal">Enable on this Document</p>
2332
<label class="switch">
@@ -36,11 +45,11 @@ <h1><img src="icon.png" alt=""><span>GDocs Line Numbering</span></h1>
3645
</div>
3746

3847
<div class="offDocumentShow">
39-
<p>For additional options your must have a Google Document in your active tab.</p>
48+
<p>For additional options your must have a Google Document open in your active tab.</p>
4049
</div>
4150

4251
<br><a class="mdl-button mdl-js-button mdl-button--raised mdl-button--colored" id="refresh" href="">Refresh Extension</a> |
4352
<a class="mdl-button mdl-js-button mdl-button--raised mdl-button--colored" id="reloadpage" href="">Reload Google Docs Page</a>
4453

4554
</body>
46-
</html>
55+
</html>

0 commit comments

Comments
 (0)