All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [Powertop] [PATCH] embed self-contained javascript
@ 2013-09-18  8:06 Sergey Senozhatsky
  0 siblings, 0 replies; 9+ messages in thread
From: Sergey Senozhatsky @ 2013-09-18  8:06 UTC (permalink / raw)
  To: powertop

[-- Attachment #1: Type: text/plain, Size: 1172 bytes --]

On (09/17/13 16:44), Jose Luis Rivas wrote:
> On 09/17/2013 03:11 PM, Sergey Senozhatsky wrote:
> 
> 
> 
> BTW, trying to apply this patch I saw the src/Makefile.am makes a call
> to `src/csstoh.sh` which does not exists in the codebase. So it throws
> errors applying this patch to Debian.

hm, src/csstoh.sh exists in the codebase. where did you get source
code from?

> ```
> make[3]: Entering directory `/tmp/buildd/powertop-2.4/src'
> /bin/bash ./csstoh.sh powertop.css css.h
> /bin/bash: ./csstoh.sh: No such file or directory
> make[3]: *** [css.h] Error 127
> make[3]: Leaving directory `/tmp/buildd/powertop-2.4/src'
> make[2]: *** [all-recursive] Error 1
> make[2]: Leaving directory `/tmp/buildd/powertop-2.4'
> make[1]: *** [all] Error 2
> make[1]: Leaving directory `/tmp/buildd/powertop-2.4'
> dh_auto_build: make -j1 returned exit code 2
> make: *** [build] Error 2
> dpkg-buildpackage: error: debian/rules build gave error exit status 2
> ```
> 
> I guess it comes because of the change in the CSS so it needs to
> update the `src/css.h`.

css.h is generated from css file

	$(SHELL) ./csstoh.sh powertop.css css.h

	-ss

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Powertop] [PATCH] embed self-contained javascript
@ 2013-09-18  9:01 Sergey Senozhatsky
  0 siblings, 0 replies; 9+ messages in thread
From: Sergey Senozhatsky @ 2013-09-18  9:01 UTC (permalink / raw)
  To: powertop

[-- Attachment #1: Type: text/plain, Size: 4425 bytes --]

On (09/18/13 03:51), Jose Luis Rivas wrote:
> On 09/18/2013 03:36 AM, Sergey Senozhatsky wrote:
> > On (09/17/13 16:44), Jose Luis Rivas wrote:
> >> On 09/17/2013 03:11 PM, Sergey Senozhatsky wrote:
> >>
> >>
> >>
> >> BTW, trying to apply this patch I saw the src/Makefile.am makes a call
> >> to `src/csstoh.sh` which does not exists in the codebase. So it throws
> >> errors applying this patch to Debian.
> > 
> > hm, src/csstoh.sh exists in the codebase. where did you get source
> > code from?
> > 
> >> ```
> >> make[3]: Entering directory `/tmp/buildd/powertop-2.4/src'
> >> /bin/bash ./csstoh.sh powertop.css css.h
> >> /bin/bash: ./csstoh.sh: No such file or directory
> >> make[3]: *** [css.h] Error 127
> >> make[3]: Leaving directory `/tmp/buildd/powertop-2.4/src'
> >> make[2]: *** [all-recursive] Error 1
> >> make[2]: Leaving directory `/tmp/buildd/powertop-2.4'
> >> make[1]: *** [all] Error 2
> >> make[1]: Leaving directory `/tmp/buildd/powertop-2.4'
> >> dh_auto_build: make -j1 returned exit code 2
> >> make: *** [build] Error 2
> >> dpkg-buildpackage: error: debian/rules build gave error exit status 2
> >> ```
> >>
> >> I guess it comes because of the change in the CSS so it needs to
> >> update the `src/css.h`.
> > 
> > css.h is generated from css file
> > 
> > 	$(SHELL) ./csstoh.sh powertop.css css.h
> > 
> > 	-ss
> > 
> 
> This is what we use in conjuction with uscan to get the sources (from
> debian/watch[0]):
> ```
> version=3
> https://01.org/powertop/downloads
> https://01.org/powertop/sites/default/files/downloads/powertop-([\d\.]*).tar.gz
> ```
> 
> I downloaded the tar.gz from the source site and made an ls into src,
> this is the result:

Cc Arjan and Kristen


yes, indeed... powertop-2.4.tar.gz package does not compile.

make[2]: Leaving directory `/media/dev/__test/powertop-2.4/traceevent'
Making all in src
make[2]: Entering directory `/media/dev/__test/powertop-2.4/src'
/bin/sh ./csstoh.sh powertop.css css.h
/bin/sh: ./csstoh.sh: No such file or directory
make[2]: *** [css.h] Error 127
make[2]: Leaving directory `/media/dev/__test/powertop-2.4/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/media/dev/__test/powertop-2.4'
make: *** [all] Error 2


Jose, I can suggest (as a temp fix) to pull from git. Sorry for
inconvenience.





Arjan, Kristen,

besides missing csstoh script, current powertop-2.4.tar.gz package
contains files and dirs we don't really need (e.g. host specific m4
files). it would be better to generate it from `clean' git clone:

 $ git clone git(a)github.com [...] powertop.git .
 $ rm -fr .git*



./autogen and ./configure will do the rest of the job.


could you please take care of powertop-2.4.tar.gz?

	-ss

> 8<---
>  ghostbar  ⋯  powertop  wget
> https://01.org/powertop/sites/default/files/downloads/powertop-2.4.tar.gz
> --2013-09-18 03:48:50--
> https://01.org/powertop/sites/default/files/downloads/powertop-2.4.tar.gz
> Resolving 01.org (01.org)... 198.145.11.105, 2001:19d0:3:5::105
> Connecting to 01.org (01.org)|198.145.11.105|:443... connected.
> HTTP request sent, awaiting response... 200 OK
> Length: 632390 (618K) [application/x-gzip]
> Saving to: ‘powertop-2.4.tar.gz’
> 
> 100%[================================================================================================================================>]
> 632,390      174KB/s   in 3.6s
> 
> 2013-09-18 03:48:55 (174 KB/s) - ‘powertop-2.4.tar.gz’ saved [632390/632390]
> 
>  ghostbar  ⋯  powertop  tar -zxf powertop-2.4.tar.gz
>  ghostbar  ⋯  powertop  ls powertop-2.4/src
> calibrate  css.h    devlist.cpp  display.cpp  lib.cpp  main.cpp
> Makefile.in  parameters  powertop.css  report
> cpu        devices  devlist.h    display.h    lib.h    Makefile.am
> measurement  perf        process       tuning
>  ghostbar  ⋯  powertop  ls powertop-2.4/src | grep csstoh
>  ghostbar  ⋯  powertop 
> 
> --->8
> 
> Kind regards.
> 
> [0] https://github.com/ghostbar/powertop.deb/blob/master/debian/watch
> 
> -- 
> The Debian Project - http://debian.org/
> Jose Luis Rivas - http://joseluisrivas.net/#ghostbar
> _______________________________________________
> PowerTop mailing list
> PowerTop(a)lists.01.org
> https://lists.01.org/mailman/listinfo/powertop

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Powertop] [PATCH] embed self-contained javascript
@ 2013-09-18  8:21 Jose Luis Rivas
  0 siblings, 0 replies; 9+ messages in thread
From: Jose Luis Rivas @ 2013-09-18  8:21 UTC (permalink / raw)
  To: powertop

[-- Attachment #1: Type: text/plain, Size: 2989 bytes --]

On 09/18/2013 03:36 AM, Sergey Senozhatsky wrote:
> On (09/17/13 16:44), Jose Luis Rivas wrote:
>> On 09/17/2013 03:11 PM, Sergey Senozhatsky wrote:
>>
>>
>>
>> BTW, trying to apply this patch I saw the src/Makefile.am makes a call
>> to `src/csstoh.sh` which does not exists in the codebase. So it throws
>> errors applying this patch to Debian.
> 
> hm, src/csstoh.sh exists in the codebase. where did you get source
> code from?
> 
>> ```
>> make[3]: Entering directory `/tmp/buildd/powertop-2.4/src'
>> /bin/bash ./csstoh.sh powertop.css css.h
>> /bin/bash: ./csstoh.sh: No such file or directory
>> make[3]: *** [css.h] Error 127
>> make[3]: Leaving directory `/tmp/buildd/powertop-2.4/src'
>> make[2]: *** [all-recursive] Error 1
>> make[2]: Leaving directory `/tmp/buildd/powertop-2.4'
>> make[1]: *** [all] Error 2
>> make[1]: Leaving directory `/tmp/buildd/powertop-2.4'
>> dh_auto_build: make -j1 returned exit code 2
>> make: *** [build] Error 2
>> dpkg-buildpackage: error: debian/rules build gave error exit status 2
>> ```
>>
>> I guess it comes because of the change in the CSS so it needs to
>> update the `src/css.h`.
> 
> css.h is generated from css file
> 
> 	$(SHELL) ./csstoh.sh powertop.css css.h
> 
> 	-ss
> 

This is what we use in conjuction with uscan to get the sources (from
debian/watch[0]):
```
version=3
https://01.org/powertop/downloads
https://01.org/powertop/sites/default/files/downloads/powertop-([\d\.]*).tar.gz
```

I downloaded the tar.gz from the source site and made an ls into src,
this is the result:

8<---
 ghostbar  ⋯  powertop  wget
https://01.org/powertop/sites/default/files/downloads/powertop-2.4.tar.gz
--2013-09-18 03:48:50--
https://01.org/powertop/sites/default/files/downloads/powertop-2.4.tar.gz
Resolving 01.org (01.org)... 198.145.11.105, 2001:19d0:3:5::105
Connecting to 01.org (01.org)|198.145.11.105|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 632390 (618K) [application/x-gzip]
Saving to: ‘powertop-2.4.tar.gz’

100%[================================================================================================================================>]
632,390      174KB/s   in 3.6s

2013-09-18 03:48:55 (174 KB/s) - ‘powertop-2.4.tar.gz’ saved [632390/632390]

 ghostbar  ⋯  powertop  tar -zxf powertop-2.4.tar.gz
 ghostbar  ⋯  powertop  ls powertop-2.4/src
calibrate  css.h    devlist.cpp  display.cpp  lib.cpp  main.cpp
Makefile.in  parameters  powertop.css  report
cpu        devices  devlist.h    display.h    lib.h    Makefile.am
measurement  perf        process       tuning
 ghostbar  ⋯  powertop  ls powertop-2.4/src | grep csstoh
 ghostbar  ⋯  powertop 

--->8

Kind regards.

[0] https://github.com/ghostbar/powertop.deb/blob/master/debian/watch

-- 
The Debian Project - http://debian.org/
Jose Luis Rivas - http://joseluisrivas.net/#ghostbar

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Powertop] [PATCH] embed self-contained javascript
@ 2013-09-17 21:14 Jose Luis Rivas
  0 siblings, 0 replies; 9+ messages in thread
From: Jose Luis Rivas @ 2013-09-17 21:14 UTC (permalink / raw)
  To: powertop

[-- Attachment #1: Type: text/plain, Size: 1013 bytes --]

On 09/17/2013 03:11 PM, Sergey Senozhatsky wrote:



BTW, trying to apply this patch I saw the src/Makefile.am makes a call
to `src/csstoh.sh` which does not exists in the codebase. So it throws
errors applying this patch to Debian.

```
make[3]: Entering directory `/tmp/buildd/powertop-2.4/src'
/bin/bash ./csstoh.sh powertop.css css.h
/bin/bash: ./csstoh.sh: No such file or directory
make[3]: *** [css.h] Error 127
make[3]: Leaving directory `/tmp/buildd/powertop-2.4/src'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/tmp/buildd/powertop-2.4'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/tmp/buildd/powertop-2.4'
dh_auto_build: make -j1 returned exit code 2
make: *** [build] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2
```

I guess it comes because of the change in the CSS so it needs to
update the `src/css.h`.


-- 
The Debian Project - http://debian.org/
Jose Luis Rivas - http://joseluisrivas.net/#ghostbar

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Powertop] [PATCH] embed self-contained javascript
@ 2013-09-17 19:41 Sergey Senozhatsky
  0 siblings, 0 replies; 9+ messages in thread
From: Sergey Senozhatsky @ 2013-09-17 19:41 UTC (permalink / raw)
  To: powertop

[-- Attachment #1: Type: text/plain, Size: 19456 bytes --]

On (09/17/13 15:27), Daniel Kahn Gillmor wrote:
> On 09/17/2013 03:02 PM, Sergey Senozhatsky wrote:
> > there is a number of trailing whitespaces, could you please fix that?
> 
> sure, see the attached patch.
> 
> > can we also use one coding style in js code?
> > 
> > 	if (a)
> > 		a-foo;
> > 
> > 	if (b) {
> > 		b-foo;
> > 		b-bar;
> > 	}
> 
> It's not clear to me if you're suggesting only that the then clause
> needs to be on a separate line (instead of one-liners), or if you're
> suggesting that single-line if statements should also have curly brackets.

sorry, the first one: then clause needs to be on a separate line.

> The attached patch assumes that the former was your intent; if you want
> curly-brackets on single-line if statements, let me know and i'll send
> you v3 with that adjustment.

looks good. applied to -next, thanks.

	-ss

> thanks for your consideration.
> 
> Regards,
> 
> 	--dkg

> commit b332a57a43d79b030a4de1dbd2f235c808d71c31
> Author: Daniel Kahn Gillmor <dkg(a)fifthhorseman.net>
> Date:   Sat Sep 7 15:42:57 2013 -0400
> 
>     embed self-contained javascript
>     
>     using self-contained javascript offers several improvements:
>     
>      * powertop html report can be viewed offline
>      * less overall javascript code is loaded when online
>      * no opportunity for report leakage or modification by third parties
>     
>     These changes also make it simpler to update the html report when a
>     new section is added: just add a new entry to powertop.blocks
>     dictionary, with the section's human-readable string as its value.
> 
> diff --git a/src/powertop.css b/src/powertop.css
> index c73d3e2..6d43e07 100644
> --- a/src/powertop.css
> +++ b/src/powertop.css
> @@ -3,276 +3,73 @@
>  <head>
>  <title>PowerTOP report</title>
>  <meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\">
> -<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js\"></script>
> -<script type=\"text/javascript\">
> -$(document).ready(function(){
> -
> -	$('#system h2').addClass('hide');
> -	$('#system table').addClass('hide');
> -	$('#cpuidle h2').addClass('hide');
> -	$('#cpuidle table').addClass('hide');
> -	$('#cpufreq h2').addClass('hide');
> -	$('#cpufreq table').addClass('hide');
> -	$('#software h2').addClass('hide');
> -	$('#software table').addClass('hide');
> -	$('#device h2').addClass('hide');
> -	$('#device table').addClass('hide');
> -	$('#device p').addClass('hide');
> -	$('#tuning h2').addClass('hide');
> -	$('#tuning table').addClass('hide');
> -
> -	$('#top').append('<div class=\"SystemButton\"   onclick=\"toggleSystem()\">System Info</div>');
> -	$('#top').append('<div class=\"SummaryButton\"  onclick=\"toggleSummary()\">Summary</div>');
> -	$('#top').append('<div class=\"CpuidleButton\"  onclick=\"toggleCpuidle()\">CPU Idle</div>');
> -	$('#top').append('<div class=\"CpufreqButton\"  onclick=\"toggleCpufreq()\">CPU Frequency</div>');
> -	$('#top').append('<div class=\"SoftwareButton\" onclick=\"toggleSoftware()\">Software info</div>');
> -	$('#top').append('<div class=\"DeviceButton\"   onclick=\"toggleDevice()\">Device Info</div>');
> -	$('#top').append('<div class=\"TuningButton\"   onclick=\"toggleTuning()\">Tuning</div>');
> -	$('#top').append('<div class=\"AllButton\"      onclick=\"toggleAll()\">All</div>');
> -	$('#top .SummaryButton').toggleClass('pressed');
> -
> -    }
> -	);
> -function toggleDummy() {
> -		$('#system table').toggleClass('hide', true);
> -		$('#system h2').toggleClass('hide', true);
> -		$('#summary table').toggleClass('hide', true);
> -		$('#summary h2').toggleClass('hide', true);
> -		$('#summary p').toggleClass('hide', true);
> -		$('#cpuidle table').toggleClass('hide', true);
> -		$('#cpuidle h2').toggleClass('hide', true);
> -		$('#cpufreq table').toggleClass('hide', true);
> -		$('#cpufreq h2').toggleClass('hide', true);
> -		$('#software table').toggleClass('hide', true);
> -		$('#software h2').toggleClass('hide', true);
> -		$('#device table').toggleClass('hide', true);
> -		$('#device h2').toggleClass('hide', true);
> -		$('#device p').toggleClass('hide', true);
> -		$('#tuning table').toggleClass('hide', true);
> -		$('#tuning h2').toggleClass('hide', true);
> -		$('#top .SystemButton').toggleClass('pressed', false);
> -		$('#top .SummaryButton').toggleClass('pressed', false);
> -		$('#top .CpuidleButton').toggleClass('pressed', false);
> -		$('#top .CpufreqButton').toggleClass('pressed', false);
> -		$('#top .SoftwareButton').toggleClass('pressed', false);
> -		$('#top .DeviceButton').toggleClass('pressed', false);
> -		$('#top .TuningButton').toggleClass('pressed', false);
> -		$('#top .AllButton').toggleClass('pressed', false);
> -}
> -function toggleSystem() {
> -		$('#system table').toggleClass('hide', false);
> -		$('#system h2').toggleClass('hide', false);
> -		$('#summary table').toggleClass('hide', true);
> -		$('#summary h2').toggleClass('hide', true);
> -		$('#summary p').toggleClass('hide', true);
> -		$('#cpuidle table').toggleClass('hide', true);
> -		$('#cpuidle h2').toggleClass('hide', true);
> -		$('#cpufreq table').toggleClass('hide', true);
> -		$('#cpufreq h2').toggleClass('hide', true);
> -		$('#software table').toggleClass('hide', true);
> -		$('#software h2').toggleClass('hide', true);
> -		$('#device table').toggleClass('hide', true);
> -		$('#device h2').toggleClass('hide', true);
> -		$('#device p').toggleClass('hide', true);
> -		$('#tuning table').toggleClass('hide', true);
> -		$('#tuning h2').toggleClass('hide', true);
> -		$('#top .SystemButton').toggleClass('pressed', true);
> -		$('#top .SummaryButton').toggleClass('pressed', false);
> -		$('#top .CpuidleButton').toggleClass('pressed', false);
> -		$('#top .CpufreqButton').toggleClass('pressed', false);
> -		$('#top .SoftwareButton').toggleClass('pressed', false);
> -		$('#top .DeviceButton').toggleClass('pressed', false);
> -		$('#top .TuningButton').toggleClass('pressed', false);
> -		$('#top .AllButton').toggleClass('pressed', false);
> -}
> -function toggleSummary() {
> -		$('#system table').toggleClass('hide', true);
> -		$('#system h2').toggleClass('hide', true);
> -		$('#summary table').toggleClass('hide', false);
> -		$('#summary h2').toggleClass('hide', false);
> -		$('#summary p').toggleClass('hide', false);
> -		$('#cpuidle table').toggleClass('hide', true);
> -		$('#cpuidle h2').toggleClass('hide', true);
> -		$('#cpufreq table').toggleClass('hide', true);
> -		$('#cpufreq h2').toggleClass('hide', true);
> -		$('#software table').toggleClass('hide', true);
> -		$('#software h2').toggleClass('hide', true);
> -		$('#device table').toggleClass('hide', true);
> -		$('#device h2').toggleClass('hide', true);
> -		$('#device p').toggleClass('hide', true);
> -		$('#tuning table').toggleClass('hide', true);
> -		$('#tuning h2').toggleClass('hide', true);
> -		$('#top .SystemButton').toggleClass('pressed', false);
> -		$('#top .SummaryButton').toggleClass('pressed', true);
> -		$('#top .CpuidleButton').toggleClass('pressed', false);
> -		$('#top .CpufreqButton').toggleClass('pressed', false);
> -		$('#top .SoftwareButton').toggleClass('pressed', false);
> -		$('#top .DeviceButton').toggleClass('pressed', false);
> -		$('#top .TuningButton').toggleClass('pressed', false);
> -		$('#top .AllButton').toggleClass('pressed', false);
> -}
> -function toggleCpuidle() {
> -		$('#system table').toggleClass('hide', true);
> -		$('#system h2').toggleClass('hide', true);
> -		$('#summary table').toggleClass('hide', true);
> -		$('#summary h2').toggleClass('hide', true);
> -		$('#summary p').toggleClass('hide', true);
> -		$('#cpuidle table').toggleClass('hide', false);
> -		$('#cpuidle h2').toggleClass('hide', false);
> -		$('#cpufreq table').toggleClass('hide', true);
> -		$('#cpufreq h2').toggleClass('hide', true);
> -		$('#software table').toggleClass('hide', true);
> -		$('#software h2').toggleClass('hide', true);
> -		$('#device table').toggleClass('hide', true);
> -		$('#device h2').toggleClass('hide', true);
> -		$('#device p').toggleClass('hide', true);
> -		$('#tuning table').toggleClass('hide', true);
> -		$('#tuning h2').toggleClass('hide', true);
> -		$('#top .SystemButton').toggleClass('pressed', false);
> -		$('#top .SummaryButton').toggleClass('pressed', false);
> -		$('#top .CpuidleButton').toggleClass('pressed', true);
> -		$('#top .CpufreqButton').toggleClass('pressed', false);
> -		$('#top .SoftwareButton').toggleClass('pressed', false);
> -		$('#top .DeviceButton').toggleClass('pressed', false);
> -		$('#top .TuningButton').toggleClass('pressed', false);
> -		$('#top .AllButton').toggleClass('pressed', false);
> -
> -}
> -function toggleCpufreq() {
> -		$('#system table').toggleClass('hide', true);
> -		$('#system h2').toggleClass('hide', true);
> -		$('#summary table').toggleClass('hide', true);
> -		$('#summary h2').toggleClass('hide', true);
> -		$('#summary p').toggleClass('hide', true);
> -		$('#cpuidle table').toggleClass('hide', true);
> -		$('#cpuidle h2').toggleClass('hide', true);
> -		$('#cpufreq table').toggleClass('hide', false);
> -		$('#cpufreq h2').toggleClass('hide', false);
> -		$('#software table').toggleClass('hide', true);
> -		$('#software h2').toggleClass('hide', true);
> -		$('#device table').toggleClass('hide', true);
> -		$('#device h2').toggleClass('hide', true);
> -		$('#device p').toggleClass('hide', true);
> -		$('#tuning table').toggleClass('hide', true);
> -		$('#tuning h2').toggleClass('hide', true);
> -		$('#top .SystemButton').toggleClass('pressed', false);
> -		$('#top .SummaryButton').toggleClass('pressed', false);
> -		$('#top .CpuidleButton').toggleClass('pressed', false);
> -		$('#top .CpufreqButton').toggleClass('pressed', true);
> -		$('#top .SoftwareButton').toggleClass('pressed', false);
> -		$('#top .DeviceButton').toggleClass('pressed', false);
> -		$('#top .TuningButton').toggleClass('pressed', false);
> -		$('#top .AllButton').toggleClass('pressed', false);
> -}
> -
> -function toggleSoftware() {
> -		$('#system table').toggleClass('hide', true);
> -		$('#system h2').toggleClass('hide', true);
> -		$('#summary table').toggleClass('hide', true);
> -		$('#summary h2').toggleClass('hide', true);
> -		$('#summary p').toggleClass('hide', true);
> -		$('#cpuidle table').toggleClass('hide', true);
> -		$('#cpuidle h2').toggleClass('hide', true);
> -		$('#cpufreq table').toggleClass('hide', true);
> -		$('#cpufreq h2').toggleClass('hide', true);
> -		$('#software table').toggleClass('hide', false);
> -		$('#software h2').toggleClass('hide', false);
> -		$('#device table').toggleClass('hide', true);
> -		$('#device h2').toggleClass('hide', true);
> -		$('#device p').toggleClass('hide', true);
> -		$('#tuning table').toggleClass('hide', true);
> -		$('#tuning h2').toggleClass('hide', true);
> -		$('#top .SystemButton').toggleClass('pressed', false);
> -		$('#top .SummaryButton').toggleClass('pressed', false);
> -		$('#top .CpuidleButton').toggleClass('pressed', false);
> -		$('#top .CpufreqButton').toggleClass('pressed', false);
> -		$('#top .SoftwareButton').toggleClass('pressed', true);
> -		$('#top .DeviceButton').toggleClass('pressed', false);
> -		$('#top .TuningButton').toggleClass('pressed', false);
> -		$('#top .AllButton').toggleClass('pressed', false);
> -}
> -
> -function toggleDevice() {
> -		$('#system table').toggleClass('hide', true);
> -		$('#system h2').toggleClass('hide', true);
> -		$('#summary table').toggleClass('hide', true);
> -		$('#summary h2').toggleClass('hide', true);
> -		$('#summary p').toggleClass('hide', true);
> -		$('#cpuidle table').toggleClass('hide', true);
> -		$('#cpuidle h2').toggleClass('hide', true);
> -		$('#cpufreq table').toggleClass('hide', true);
> -		$('#cpufreq h2').toggleClass('hide', true);
> -		$('#software table').toggleClass('hide', true);
> -		$('#software h2').toggleClass('hide', true);
> -		$('#device table').toggleClass('hide', false);
> -		$('#device h2').toggleClass('hide', false);
> -		$('#device p').toggleClass('hide', false);
> -		$('#tuning table').toggleClass('hide', true);
> -		$('#tuning h2').toggleClass('hide', true);
> -		$('#top .SystemButton').toggleClass('pressed', false);
> -		$('#top .SummaryButton').toggleClass('pressed', false);
> -		$('#top .CpuidleButton').toggleClass('pressed', false);
> -		$('#top .CpufreqButton').toggleClass('pressed', false);
> -		$('#top .SoftwareButton').toggleClass('pressed', false);
> -		$('#top .DeviceButton').toggleClass('pressed', true);
> -		$('#top .TuningButton').toggleClass('pressed', false);
> -		$('#top .AllButton').toggleClass('pressed', false);
> +<script type='text/javascript'>
> +
> +var powertop = {
> + blocks: {
> +  system: 'System Info',
> +  summary: 'Summary',
> +  cpuidle: 'CPU Idle',
> +  cpufreq: 'CPU Frequency',
> +  software: 'Software Info',
> +  device: 'Device Info',
> +  tuning: 'Tuning'
> + },
> + cadd: function(idx, c){
> +   var el = document.getElementById(idx);
> +   if (el)
> +     el.classList.add(c);
> +
> + },
> + crm: function(id, c){
> +   var el = document.getElementById(id);
> +   if (el)
> +     el.classList.remove(c);
> + },
> + newbutton: function(id, txt) {
> +  var x = document.createElement('div');
> +  x.id = id + '_button';
> +  x.className = 'nav_button';
> +  x.textContent = txt;
> +  x.onclick = function() { powertop.toggle(id); };
> +  return x;
> + },
> + setupbuttons: function() {
> +   var t = document.getElementById('top');
> +   if (t) {
> +     for (var b in powertop.blocks) {
> +       t.appendChild(powertop.newbutton(b, powertop.blocks[b]));
> +     }
> +    t.appendChild(powertop.newbutton('all', 'All'));
> +   }
> + },
> + toggle: function(b) {
> +   powertop.baseall();
> +   if (b == 'all') {
> +      for (var c in powertop.blocks) {
> +        powertop.crm(c, 'hide');
> +      }
> +   } else {
> +      powertop.crm(b, 'hide');
> +   }
> +   powertop.cadd(b + '_button', 'pressed');
> + },
> + baseall: function() {
> +   for (var b in powertop.blocks) {
> +     powertop.cadd(b, 'hide');
> +     powertop.crm(b + '_button', 'pressed');
> +   }
> +   powertop.cadd('all', 'hide');
> +   powertop.crm('all_button', 'pressed');
> + },
> + onload: function() {
> +   powertop.setupbuttons();
> +   powertop.toggle('summary');
> + }
>  }
>  
> -function toggleTuning() {
> -		$('#system table').toggleClass('hide', true);
> -		$('#system h2').toggleClass('hide', true);
> -		$('#summary table').toggleClass('hide', true);
> -		$('#summary h2').toggleClass('hide', true);
> -		$('#summary p').toggleClass('hide', true);
> -		$('#cpuidle table').toggleClass('hide', true);
> -		$('#cpuidle h2').toggleClass('hide', true);
> -		$('#cpufreq table').toggleClass('hide', true);
> -		$('#cpufreq h2').toggleClass('hide', true);
> -		$('#software table').toggleClass('hide', true);
> -		$('#software h2').toggleClass('hide', true);
> -		$('#device table').toggleClass('hide', true);
> -		$('#device h2').toggleClass('hide', true);
> -		$('#device p').toggleClass('hide', true);
> -		$('#tuning table').toggleClass('hide', false);
> -		$('#tuning h2').toggleClass('hide', false);
> -		$('#top .SystemButton').toggleClass('pressed', false);
> -		$('#top .SummaryButton').toggleClass('pressed', false);
> -		$('#top .CpuidleButton').toggleClass('pressed', false);
> -		$('#top .CpufreqButton').toggleClass('pressed', false);
> -		$('#top .SoftwareButton').toggleClass('pressed', false);
> -		$('#top .DeviceButton').toggleClass('pressed', false);
> -		$('#top .TuningButton').toggleClass('pressed', true);
> -		$('#top .AllButton').toggleClass('pressed', false);
> -}
> -function toggleAll() {
> -		$('#system table').toggleClass('hide', false);
> -		$('#system h2').toggleClass('hide', false);
> -		$('#summary table').toggleClass('hide', false);
> -		$('#summary h2').toggleClass('hide', false);
> -		$('#summary p').toggleClass('hide', false);
> -		$('#cpuidle table').toggleClass('hide', false);
> -		$('#cpuidle h2').toggleClass('hide', false);
> -		$('#cpufreq table').toggleClass('hide', false);
> -		$('#cpufreq h2').toggleClass('hide', false);
> -		$('#software table').toggleClass('hide', false);
> -		$('#software h2').toggleClass('hide', false);
> -		$('#device table').toggleClass('hide', false);
> -		$('#device h2').toggleClass('hide', false);
> -		$('#device p').toggleClass('hide', false);
> -		$('#tuning table').toggleClass('hide', false);
> -		$('#tuning h2').toggleClass('hide', false);
> -		$('#top .SystemButton').toggleClass('pressed', false);
> -		$('#top .SummaryButton').toggleClass('pressed', false);
> -		$('#top .CpuidleButton').toggleClass('pressed', false);
> -		$('#top .CpufreqButton').toggleClass('pressed', false);
> -		$('#top .SoftwareButton').toggleClass('pressed', false);
> -		$('#top .DeviceButton').toggleClass('pressed', false);
> -		$('#top .TuningButton').toggleClass('pressed', false);
> -		$('#top .AllButton').toggleClass('pressed', true);
> -}
>  </script>
> -<style type=\"text/css\">
> +<style type='text/css'>
>  table
>  {
>  	background-color: #F8F8F8;
> @@ -454,11 +251,7 @@ body {
>  	padding: 0;             /* Amount of negative space around the
>                                     inside of the body */
>  }
> -#top h1 {
> -	margin: 0;
> -	padding: 0;
> -}
> -#top h1 a {
> +#top {
>  	background-color: #ccc;
>  	border-bottom: 1px solid #666;
>  	color: #222;
> @@ -483,72 +276,26 @@ body {
>  	line-height: 28px;
>  	border-width:0px 8px 0px 8px;
>  }
> -#top div.SystemButton {
> -	position: absolute;
> -	top: 7px;
> -	left: 6px;
> -}
> -#top div.SummaryButton {
> -	position: absolute;
> -	top: 7px;
> -	left: 160px;
> -}
> -#top div.CpuidleButton {
> -	position: absolute;
> -	top: 7px;
> -	left: 320px;
> -}
> -#top div.CpufreqButton {
> -	position: absolute;
> -	top: 7px;
> -	left: 480px;
> -}
> -#top div.SoftwareButton {
> -	position: absolute;
> -	top: 7px;
> -	left: 640px;
> -}
> -#top div.DeviceButton {
> -	position: absolute;
> -	top: 7px;
> -	left: 800px;
> -}
> -#top div.TuningButton {
> -	position: absolute;
> -	top: 7px;
> -	left: 960px;
> -}
> -#top div.AllButton {
> -	position: absolute;
> -	top: 7px;
> -	left: 1120px;
> +#top div.nav_button {
> + display: inline;
> + cursor: pointer;
> + padding: 0.3em 0.5em;
> + margin: 0 0.2em;
>  }
> +
>  div.pressed {
>  	background-color: #000000;
>  	border: 1px solid #000000;
>  	color: #000000;
> -	display: block;
> -	border-width:0px 8px 0px 8px;
> -	-webkit-border-top-left-radius: 8px;
> -	-webkit-border-top-right-radius: 8px;
> -	-webkit-border-bottom-left-radius: 8px;
> -	-webkit-border-bottom-right-radius: 8px;
> -}
> -table.hide {
> -	display: none;
> +	border-radius: 8px;
>  }
> -h2.hide {
> -	display: none;
> -}
> -p.hide {
> -	display: none
> +div.hide {
> + display: none;
>  }
>  </style>
>  </head>
>  
> -<body>
> -
> +<body onload='powertop.onload();'>
>  <div id='top'>
> -<h1><a href='#top'>&nbsp;</a></h1>
>  </div>
>  




^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Powertop] [PATCH] embed self-contained javascript
@ 2013-09-17 19:27 Daniel Kahn Gillmor
  0 siblings, 0 replies; 9+ messages in thread
From: Daniel Kahn Gillmor @ 2013-09-17 19:27 UTC (permalink / raw)
  To: powertop

[-- Attachment #1: Type: text/plain, Size: 731 bytes --]

On 09/17/2013 03:02 PM, Sergey Senozhatsky wrote:
> there is a number of trailing whitespaces, could you please fix that?

sure, see the attached patch.

> can we also use one coding style in js code?
> 
> 	if (a)
> 		a-foo;
> 
> 	if (b) {
> 		b-foo;
> 		b-bar;
> 	}

It's not clear to me if you're suggesting only that the then clause
needs to be on a separate line (instead of one-liners), or if you're
suggesting that single-line if statements should also have curly brackets.

The attached patch assumes that the former was your intent; if you want
curly-brackets on single-line if statements, let me know and i'll send
you v3 with that adjustment.

thanks for your consideration.

Regards,

	--dkg

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: embedded-js.patch --]
[-- Type: text/x-patch, Size: 17125 bytes --]

commit b332a57a43d79b030a4de1dbd2f235c808d71c31
Author: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
Date:   Sat Sep 7 15:42:57 2013 -0400

    embed self-contained javascript
    
    using self-contained javascript offers several improvements:
    
     * powertop html report can be viewed offline
     * less overall javascript code is loaded when online
     * no opportunity for report leakage or modification by third parties
    
    These changes also make it simpler to update the html report when a
    new section is added: just add a new entry to powertop.blocks
    dictionary, with the section's human-readable string as its value.

diff --git a/src/powertop.css b/src/powertop.css
index c73d3e2..6d43e07 100644
--- a/src/powertop.css
+++ b/src/powertop.css
@@ -3,276 +3,73 @@
 <head>
 <title>PowerTOP report</title>
 <meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\">
-<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js\"></script>
-<script type=\"text/javascript\">
-$(document).ready(function(){
-
-	$('#system h2').addClass('hide');
-	$('#system table').addClass('hide');
-	$('#cpuidle h2').addClass('hide');
-	$('#cpuidle table').addClass('hide');
-	$('#cpufreq h2').addClass('hide');
-	$('#cpufreq table').addClass('hide');
-	$('#software h2').addClass('hide');
-	$('#software table').addClass('hide');
-	$('#device h2').addClass('hide');
-	$('#device table').addClass('hide');
-	$('#device p').addClass('hide');
-	$('#tuning h2').addClass('hide');
-	$('#tuning table').addClass('hide');
-
-	$('#top').append('<div class=\"SystemButton\"   onclick=\"toggleSystem()\">System Info</div>');
-	$('#top').append('<div class=\"SummaryButton\"  onclick=\"toggleSummary()\">Summary</div>');
-	$('#top').append('<div class=\"CpuidleButton\"  onclick=\"toggleCpuidle()\">CPU Idle</div>');
-	$('#top').append('<div class=\"CpufreqButton\"  onclick=\"toggleCpufreq()\">CPU Frequency</div>');
-	$('#top').append('<div class=\"SoftwareButton\" onclick=\"toggleSoftware()\">Software info</div>');
-	$('#top').append('<div class=\"DeviceButton\"   onclick=\"toggleDevice()\">Device Info</div>');
-	$('#top').append('<div class=\"TuningButton\"   onclick=\"toggleTuning()\">Tuning</div>');
-	$('#top').append('<div class=\"AllButton\"      onclick=\"toggleAll()\">All</div>');
-	$('#top .SummaryButton').toggleClass('pressed');
-
-    }
-	);
-function toggleDummy() {
-		$('#system table').toggleClass('hide', true);
-		$('#system h2').toggleClass('hide', true);
-		$('#summary table').toggleClass('hide', true);
-		$('#summary h2').toggleClass('hide', true);
-		$('#summary p').toggleClass('hide', true);
-		$('#cpuidle table').toggleClass('hide', true);
-		$('#cpuidle h2').toggleClass('hide', true);
-		$('#cpufreq table').toggleClass('hide', true);
-		$('#cpufreq h2').toggleClass('hide', true);
-		$('#software table').toggleClass('hide', true);
-		$('#software h2').toggleClass('hide', true);
-		$('#device table').toggleClass('hide', true);
-		$('#device h2').toggleClass('hide', true);
-		$('#device p').toggleClass('hide', true);
-		$('#tuning table').toggleClass('hide', true);
-		$('#tuning h2').toggleClass('hide', true);
-		$('#top .SystemButton').toggleClass('pressed', false);
-		$('#top .SummaryButton').toggleClass('pressed', false);
-		$('#top .CpuidleButton').toggleClass('pressed', false);
-		$('#top .CpufreqButton').toggleClass('pressed', false);
-		$('#top .SoftwareButton').toggleClass('pressed', false);
-		$('#top .DeviceButton').toggleClass('pressed', false);
-		$('#top .TuningButton').toggleClass('pressed', false);
-		$('#top .AllButton').toggleClass('pressed', false);
-}
-function toggleSystem() {
-		$('#system table').toggleClass('hide', false);
-		$('#system h2').toggleClass('hide', false);
-		$('#summary table').toggleClass('hide', true);
-		$('#summary h2').toggleClass('hide', true);
-		$('#summary p').toggleClass('hide', true);
-		$('#cpuidle table').toggleClass('hide', true);
-		$('#cpuidle h2').toggleClass('hide', true);
-		$('#cpufreq table').toggleClass('hide', true);
-		$('#cpufreq h2').toggleClass('hide', true);
-		$('#software table').toggleClass('hide', true);
-		$('#software h2').toggleClass('hide', true);
-		$('#device table').toggleClass('hide', true);
-		$('#device h2').toggleClass('hide', true);
-		$('#device p').toggleClass('hide', true);
-		$('#tuning table').toggleClass('hide', true);
-		$('#tuning h2').toggleClass('hide', true);
-		$('#top .SystemButton').toggleClass('pressed', true);
-		$('#top .SummaryButton').toggleClass('pressed', false);
-		$('#top .CpuidleButton').toggleClass('pressed', false);
-		$('#top .CpufreqButton').toggleClass('pressed', false);
-		$('#top .SoftwareButton').toggleClass('pressed', false);
-		$('#top .DeviceButton').toggleClass('pressed', false);
-		$('#top .TuningButton').toggleClass('pressed', false);
-		$('#top .AllButton').toggleClass('pressed', false);
-}
-function toggleSummary() {
-		$('#system table').toggleClass('hide', true);
-		$('#system h2').toggleClass('hide', true);
-		$('#summary table').toggleClass('hide', false);
-		$('#summary h2').toggleClass('hide', false);
-		$('#summary p').toggleClass('hide', false);
-		$('#cpuidle table').toggleClass('hide', true);
-		$('#cpuidle h2').toggleClass('hide', true);
-		$('#cpufreq table').toggleClass('hide', true);
-		$('#cpufreq h2').toggleClass('hide', true);
-		$('#software table').toggleClass('hide', true);
-		$('#software h2').toggleClass('hide', true);
-		$('#device table').toggleClass('hide', true);
-		$('#device h2').toggleClass('hide', true);
-		$('#device p').toggleClass('hide', true);
-		$('#tuning table').toggleClass('hide', true);
-		$('#tuning h2').toggleClass('hide', true);
-		$('#top .SystemButton').toggleClass('pressed', false);
-		$('#top .SummaryButton').toggleClass('pressed', true);
-		$('#top .CpuidleButton').toggleClass('pressed', false);
-		$('#top .CpufreqButton').toggleClass('pressed', false);
-		$('#top .SoftwareButton').toggleClass('pressed', false);
-		$('#top .DeviceButton').toggleClass('pressed', false);
-		$('#top .TuningButton').toggleClass('pressed', false);
-		$('#top .AllButton').toggleClass('pressed', false);
-}
-function toggleCpuidle() {
-		$('#system table').toggleClass('hide', true);
-		$('#system h2').toggleClass('hide', true);
-		$('#summary table').toggleClass('hide', true);
-		$('#summary h2').toggleClass('hide', true);
-		$('#summary p').toggleClass('hide', true);
-		$('#cpuidle table').toggleClass('hide', false);
-		$('#cpuidle h2').toggleClass('hide', false);
-		$('#cpufreq table').toggleClass('hide', true);
-		$('#cpufreq h2').toggleClass('hide', true);
-		$('#software table').toggleClass('hide', true);
-		$('#software h2').toggleClass('hide', true);
-		$('#device table').toggleClass('hide', true);
-		$('#device h2').toggleClass('hide', true);
-		$('#device p').toggleClass('hide', true);
-		$('#tuning table').toggleClass('hide', true);
-		$('#tuning h2').toggleClass('hide', true);
-		$('#top .SystemButton').toggleClass('pressed', false);
-		$('#top .SummaryButton').toggleClass('pressed', false);
-		$('#top .CpuidleButton').toggleClass('pressed', true);
-		$('#top .CpufreqButton').toggleClass('pressed', false);
-		$('#top .SoftwareButton').toggleClass('pressed', false);
-		$('#top .DeviceButton').toggleClass('pressed', false);
-		$('#top .TuningButton').toggleClass('pressed', false);
-		$('#top .AllButton').toggleClass('pressed', false);
-
-}
-function toggleCpufreq() {
-		$('#system table').toggleClass('hide', true);
-		$('#system h2').toggleClass('hide', true);
-		$('#summary table').toggleClass('hide', true);
-		$('#summary h2').toggleClass('hide', true);
-		$('#summary p').toggleClass('hide', true);
-		$('#cpuidle table').toggleClass('hide', true);
-		$('#cpuidle h2').toggleClass('hide', true);
-		$('#cpufreq table').toggleClass('hide', false);
-		$('#cpufreq h2').toggleClass('hide', false);
-		$('#software table').toggleClass('hide', true);
-		$('#software h2').toggleClass('hide', true);
-		$('#device table').toggleClass('hide', true);
-		$('#device h2').toggleClass('hide', true);
-		$('#device p').toggleClass('hide', true);
-		$('#tuning table').toggleClass('hide', true);
-		$('#tuning h2').toggleClass('hide', true);
-		$('#top .SystemButton').toggleClass('pressed', false);
-		$('#top .SummaryButton').toggleClass('pressed', false);
-		$('#top .CpuidleButton').toggleClass('pressed', false);
-		$('#top .CpufreqButton').toggleClass('pressed', true);
-		$('#top .SoftwareButton').toggleClass('pressed', false);
-		$('#top .DeviceButton').toggleClass('pressed', false);
-		$('#top .TuningButton').toggleClass('pressed', false);
-		$('#top .AllButton').toggleClass('pressed', false);
-}
-
-function toggleSoftware() {
-		$('#system table').toggleClass('hide', true);
-		$('#system h2').toggleClass('hide', true);
-		$('#summary table').toggleClass('hide', true);
-		$('#summary h2').toggleClass('hide', true);
-		$('#summary p').toggleClass('hide', true);
-		$('#cpuidle table').toggleClass('hide', true);
-		$('#cpuidle h2').toggleClass('hide', true);
-		$('#cpufreq table').toggleClass('hide', true);
-		$('#cpufreq h2').toggleClass('hide', true);
-		$('#software table').toggleClass('hide', false);
-		$('#software h2').toggleClass('hide', false);
-		$('#device table').toggleClass('hide', true);
-		$('#device h2').toggleClass('hide', true);
-		$('#device p').toggleClass('hide', true);
-		$('#tuning table').toggleClass('hide', true);
-		$('#tuning h2').toggleClass('hide', true);
-		$('#top .SystemButton').toggleClass('pressed', false);
-		$('#top .SummaryButton').toggleClass('pressed', false);
-		$('#top .CpuidleButton').toggleClass('pressed', false);
-		$('#top .CpufreqButton').toggleClass('pressed', false);
-		$('#top .SoftwareButton').toggleClass('pressed', true);
-		$('#top .DeviceButton').toggleClass('pressed', false);
-		$('#top .TuningButton').toggleClass('pressed', false);
-		$('#top .AllButton').toggleClass('pressed', false);
-}
-
-function toggleDevice() {
-		$('#system table').toggleClass('hide', true);
-		$('#system h2').toggleClass('hide', true);
-		$('#summary table').toggleClass('hide', true);
-		$('#summary h2').toggleClass('hide', true);
-		$('#summary p').toggleClass('hide', true);
-		$('#cpuidle table').toggleClass('hide', true);
-		$('#cpuidle h2').toggleClass('hide', true);
-		$('#cpufreq table').toggleClass('hide', true);
-		$('#cpufreq h2').toggleClass('hide', true);
-		$('#software table').toggleClass('hide', true);
-		$('#software h2').toggleClass('hide', true);
-		$('#device table').toggleClass('hide', false);
-		$('#device h2').toggleClass('hide', false);
-		$('#device p').toggleClass('hide', false);
-		$('#tuning table').toggleClass('hide', true);
-		$('#tuning h2').toggleClass('hide', true);
-		$('#top .SystemButton').toggleClass('pressed', false);
-		$('#top .SummaryButton').toggleClass('pressed', false);
-		$('#top .CpuidleButton').toggleClass('pressed', false);
-		$('#top .CpufreqButton').toggleClass('pressed', false);
-		$('#top .SoftwareButton').toggleClass('pressed', false);
-		$('#top .DeviceButton').toggleClass('pressed', true);
-		$('#top .TuningButton').toggleClass('pressed', false);
-		$('#top .AllButton').toggleClass('pressed', false);
+<script type='text/javascript'>
+
+var powertop = {
+ blocks: {
+  system: 'System Info',
+  summary: 'Summary',
+  cpuidle: 'CPU Idle',
+  cpufreq: 'CPU Frequency',
+  software: 'Software Info',
+  device: 'Device Info',
+  tuning: 'Tuning'
+ },
+ cadd: function(idx, c){
+   var el = document.getElementById(idx);
+   if (el)
+     el.classList.add(c);
+
+ },
+ crm: function(id, c){
+   var el = document.getElementById(id);
+   if (el)
+     el.classList.remove(c);
+ },
+ newbutton: function(id, txt) {
+  var x = document.createElement('div');
+  x.id = id + '_button';
+  x.className = 'nav_button';
+  x.textContent = txt;
+  x.onclick = function() { powertop.toggle(id); };
+  return x;
+ },
+ setupbuttons: function() {
+   var t = document.getElementById('top');
+   if (t) {
+     for (var b in powertop.blocks) {
+       t.appendChild(powertop.newbutton(b, powertop.blocks[b]));
+     }
+    t.appendChild(powertop.newbutton('all', 'All'));
+   }
+ },
+ toggle: function(b) {
+   powertop.baseall();
+   if (b == 'all') {
+      for (var c in powertop.blocks) {
+        powertop.crm(c, 'hide');
+      }
+   } else {
+      powertop.crm(b, 'hide');
+   }
+   powertop.cadd(b + '_button', 'pressed');
+ },
+ baseall: function() {
+   for (var b in powertop.blocks) {
+     powertop.cadd(b, 'hide');
+     powertop.crm(b + '_button', 'pressed');
+   }
+   powertop.cadd('all', 'hide');
+   powertop.crm('all_button', 'pressed');
+ },
+ onload: function() {
+   powertop.setupbuttons();
+   powertop.toggle('summary');
+ }
 }
 
-function toggleTuning() {
-		$('#system table').toggleClass('hide', true);
-		$('#system h2').toggleClass('hide', true);
-		$('#summary table').toggleClass('hide', true);
-		$('#summary h2').toggleClass('hide', true);
-		$('#summary p').toggleClass('hide', true);
-		$('#cpuidle table').toggleClass('hide', true);
-		$('#cpuidle h2').toggleClass('hide', true);
-		$('#cpufreq table').toggleClass('hide', true);
-		$('#cpufreq h2').toggleClass('hide', true);
-		$('#software table').toggleClass('hide', true);
-		$('#software h2').toggleClass('hide', true);
-		$('#device table').toggleClass('hide', true);
-		$('#device h2').toggleClass('hide', true);
-		$('#device p').toggleClass('hide', true);
-		$('#tuning table').toggleClass('hide', false);
-		$('#tuning h2').toggleClass('hide', false);
-		$('#top .SystemButton').toggleClass('pressed', false);
-		$('#top .SummaryButton').toggleClass('pressed', false);
-		$('#top .CpuidleButton').toggleClass('pressed', false);
-		$('#top .CpufreqButton').toggleClass('pressed', false);
-		$('#top .SoftwareButton').toggleClass('pressed', false);
-		$('#top .DeviceButton').toggleClass('pressed', false);
-		$('#top .TuningButton').toggleClass('pressed', true);
-		$('#top .AllButton').toggleClass('pressed', false);
-}
-function toggleAll() {
-		$('#system table').toggleClass('hide', false);
-		$('#system h2').toggleClass('hide', false);
-		$('#summary table').toggleClass('hide', false);
-		$('#summary h2').toggleClass('hide', false);
-		$('#summary p').toggleClass('hide', false);
-		$('#cpuidle table').toggleClass('hide', false);
-		$('#cpuidle h2').toggleClass('hide', false);
-		$('#cpufreq table').toggleClass('hide', false);
-		$('#cpufreq h2').toggleClass('hide', false);
-		$('#software table').toggleClass('hide', false);
-		$('#software h2').toggleClass('hide', false);
-		$('#device table').toggleClass('hide', false);
-		$('#device h2').toggleClass('hide', false);
-		$('#device p').toggleClass('hide', false);
-		$('#tuning table').toggleClass('hide', false);
-		$('#tuning h2').toggleClass('hide', false);
-		$('#top .SystemButton').toggleClass('pressed', false);
-		$('#top .SummaryButton').toggleClass('pressed', false);
-		$('#top .CpuidleButton').toggleClass('pressed', false);
-		$('#top .CpufreqButton').toggleClass('pressed', false);
-		$('#top .SoftwareButton').toggleClass('pressed', false);
-		$('#top .DeviceButton').toggleClass('pressed', false);
-		$('#top .TuningButton').toggleClass('pressed', false);
-		$('#top .AllButton').toggleClass('pressed', true);
-}
 </script>
-<style type=\"text/css\">
+<style type='text/css'>
 table
 {
 	background-color: #F8F8F8;
@@ -454,11 +251,7 @@ body {
 	padding: 0;             /* Amount of negative space around the
                                    inside of the body */
 }
-#top h1 {
-	margin: 0;
-	padding: 0;
-}
-#top h1 a {
+#top {
 	background-color: #ccc;
 	border-bottom: 1px solid #666;
 	color: #222;
@@ -483,72 +276,26 @@ body {
 	line-height: 28px;
 	border-width:0px 8px 0px 8px;
 }
-#top div.SystemButton {
-	position: absolute;
-	top: 7px;
-	left: 6px;
-}
-#top div.SummaryButton {
-	position: absolute;
-	top: 7px;
-	left: 160px;
-}
-#top div.CpuidleButton {
-	position: absolute;
-	top: 7px;
-	left: 320px;
-}
-#top div.CpufreqButton {
-	position: absolute;
-	top: 7px;
-	left: 480px;
-}
-#top div.SoftwareButton {
-	position: absolute;
-	top: 7px;
-	left: 640px;
-}
-#top div.DeviceButton {
-	position: absolute;
-	top: 7px;
-	left: 800px;
-}
-#top div.TuningButton {
-	position: absolute;
-	top: 7px;
-	left: 960px;
-}
-#top div.AllButton {
-	position: absolute;
-	top: 7px;
-	left: 1120px;
+#top div.nav_button {
+ display: inline;
+ cursor: pointer;
+ padding: 0.3em 0.5em;
+ margin: 0 0.2em;
 }
+
 div.pressed {
 	background-color: #000000;
 	border: 1px solid #000000;
 	color: #000000;
-	display: block;
-	border-width:0px 8px 0px 8px;
-	-webkit-border-top-left-radius: 8px;
-	-webkit-border-top-right-radius: 8px;
-	-webkit-border-bottom-left-radius: 8px;
-	-webkit-border-bottom-right-radius: 8px;
-}
-table.hide {
-	display: none;
+	border-radius: 8px;
 }
-h2.hide {
-	display: none;
-}
-p.hide {
-	display: none
+div.hide {
+ display: none;
 }
 </style>
 </head>
 
-<body>
-
+<body onload='powertop.onload();'>
 <div id='top'>
-<h1><a href='#top'>&nbsp;</a></h1>
 </div>
 

[-- Attachment #3: signature.asc --]
[-- Type: application/pgp-signature, Size: 1027 bytes --]

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [Powertop] [PATCH] embed self-contained javascript
@ 2013-09-17 19:02 Sergey Senozhatsky
  0 siblings, 0 replies; 9+ messages in thread
From: Sergey Senozhatsky @ 2013-09-17 19:02 UTC (permalink / raw)
  To: powertop

[-- Attachment #1: Type: text/plain, Size: 19248 bytes --]

On (09/07/13 15:49), Daniel Kahn Gillmor wrote:
> using self-contained javascript offers several improvements:
> 
>  * powertop html report can be viewed offline
>  * less overall javascript code is loaded when online
>  * no opportunity for report leakage or modification by third parties
> 
> These changes also make it simpler to update the html report when a
> new section is added: just add a new entry to powertop.blocks
> dictionary, with the section's human-readable string as its value.
> ---
>  src/powertop.css | 400 ++++++++++---------------------------------------------
>  1 file changed, 72 insertions(+), 328 deletions(-)
> 
> diff --git a/src/powertop.css b/src/powertop.css
> index c73d3e2..35f6571 100644
> --- a/src/powertop.css
> +++ b/src/powertop.css
> @@ -3,276 +3,70 @@
>  <head>
>  <title>PowerTOP report</title>
>  <meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\">
> -<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js\"></script>
> -<script type=\"text/javascript\">
> -$(document).ready(function(){
> -
> -	$('#system h2').addClass('hide');
> -	$('#system table').addClass('hide');
> -	$('#cpuidle h2').addClass('hide');
> -	$('#cpuidle table').addClass('hide');
> -	$('#cpufreq h2').addClass('hide');
> -	$('#cpufreq table').addClass('hide');
> -	$('#software h2').addClass('hide');
> -	$('#software table').addClass('hide');
> -	$('#device h2').addClass('hide');
> -	$('#device table').addClass('hide');
> -	$('#device p').addClass('hide');
> -	$('#tuning h2').addClass('hide');
> -	$('#tuning table').addClass('hide');
> -
> -	$('#top').append('<div class=\"SystemButton\"   onclick=\"toggleSystem()\">System Info</div>');
> -	$('#top').append('<div class=\"SummaryButton\"  onclick=\"toggleSummary()\">Summary</div>');
> -	$('#top').append('<div class=\"CpuidleButton\"  onclick=\"toggleCpuidle()\">CPU Idle</div>');
> -	$('#top').append('<div class=\"CpufreqButton\"  onclick=\"toggleCpufreq()\">CPU Frequency</div>');
> -	$('#top').append('<div class=\"SoftwareButton\" onclick=\"toggleSoftware()\">Software info</div>');
> -	$('#top').append('<div class=\"DeviceButton\"   onclick=\"toggleDevice()\">Device Info</div>');
> -	$('#top').append('<div class=\"TuningButton\"   onclick=\"toggleTuning()\">Tuning</div>');
> -	$('#top').append('<div class=\"AllButton\"      onclick=\"toggleAll()\">All</div>');
> -	$('#top .SummaryButton').toggleClass('pressed');
> -
> -    }
> -	);
> -function toggleDummy() {
> -		$('#system table').toggleClass('hide', true);
> -		$('#system h2').toggleClass('hide', true);
> -		$('#summary table').toggleClass('hide', true);
> -		$('#summary h2').toggleClass('hide', true);
> -		$('#summary p').toggleClass('hide', true);
> -		$('#cpuidle table').toggleClass('hide', true);
> -		$('#cpuidle h2').toggleClass('hide', true);
> -		$('#cpufreq table').toggleClass('hide', true);
> -		$('#cpufreq h2').toggleClass('hide', true);
> -		$('#software table').toggleClass('hide', true);
> -		$('#software h2').toggleClass('hide', true);
> -		$('#device table').toggleClass('hide', true);
> -		$('#device h2').toggleClass('hide', true);
> -		$('#device p').toggleClass('hide', true);
> -		$('#tuning table').toggleClass('hide', true);
> -		$('#tuning h2').toggleClass('hide', true);
> -		$('#top .SystemButton').toggleClass('pressed', false);
> -		$('#top .SummaryButton').toggleClass('pressed', false);
> -		$('#top .CpuidleButton').toggleClass('pressed', false);
> -		$('#top .CpufreqButton').toggleClass('pressed', false);
> -		$('#top .SoftwareButton').toggleClass('pressed', false);
> -		$('#top .DeviceButton').toggleClass('pressed', false);
> -		$('#top .TuningButton').toggleClass('pressed', false);
> -		$('#top .AllButton').toggleClass('pressed', false);
> -}
> -function toggleSystem() {
> -		$('#system table').toggleClass('hide', false);
> -		$('#system h2').toggleClass('hide', false);
> -		$('#summary table').toggleClass('hide', true);
> -		$('#summary h2').toggleClass('hide', true);
> -		$('#summary p').toggleClass('hide', true);
> -		$('#cpuidle table').toggleClass('hide', true);
> -		$('#cpuidle h2').toggleClass('hide', true);
> -		$('#cpufreq table').toggleClass('hide', true);
> -		$('#cpufreq h2').toggleClass('hide', true);
> -		$('#software table').toggleClass('hide', true);
> -		$('#software h2').toggleClass('hide', true);
> -		$('#device table').toggleClass('hide', true);
> -		$('#device h2').toggleClass('hide', true);
> -		$('#device p').toggleClass('hide', true);
> -		$('#tuning table').toggleClass('hide', true);
> -		$('#tuning h2').toggleClass('hide', true);
> -		$('#top .SystemButton').toggleClass('pressed', true);
> -		$('#top .SummaryButton').toggleClass('pressed', false);
> -		$('#top .CpuidleButton').toggleClass('pressed', false);
> -		$('#top .CpufreqButton').toggleClass('pressed', false);
> -		$('#top .SoftwareButton').toggleClass('pressed', false);
> -		$('#top .DeviceButton').toggleClass('pressed', false);
> -		$('#top .TuningButton').toggleClass('pressed', false);
> -		$('#top .AllButton').toggleClass('pressed', false);
> -}
> -function toggleSummary() {
> -		$('#system table').toggleClass('hide', true);
> -		$('#system h2').toggleClass('hide', true);
> -		$('#summary table').toggleClass('hide', false);
> -		$('#summary h2').toggleClass('hide', false);
> -		$('#summary p').toggleClass('hide', false);
> -		$('#cpuidle table').toggleClass('hide', true);
> -		$('#cpuidle h2').toggleClass('hide', true);
> -		$('#cpufreq table').toggleClass('hide', true);
> -		$('#cpufreq h2').toggleClass('hide', true);
> -		$('#software table').toggleClass('hide', true);
> -		$('#software h2').toggleClass('hide', true);
> -		$('#device table').toggleClass('hide', true);
> -		$('#device h2').toggleClass('hide', true);
> -		$('#device p').toggleClass('hide', true);
> -		$('#tuning table').toggleClass('hide', true);
> -		$('#tuning h2').toggleClass('hide', true);
> -		$('#top .SystemButton').toggleClass('pressed', false);
> -		$('#top .SummaryButton').toggleClass('pressed', true);
> -		$('#top .CpuidleButton').toggleClass('pressed', false);
> -		$('#top .CpufreqButton').toggleClass('pressed', false);
> -		$('#top .SoftwareButton').toggleClass('pressed', false);
> -		$('#top .DeviceButton').toggleClass('pressed', false);
> -		$('#top .TuningButton').toggleClass('pressed', false);
> -		$('#top .AllButton').toggleClass('pressed', false);
> -}
> -function toggleCpuidle() {
> -		$('#system table').toggleClass('hide', true);
> -		$('#system h2').toggleClass('hide', true);
> -		$('#summary table').toggleClass('hide', true);
> -		$('#summary h2').toggleClass('hide', true);
> -		$('#summary p').toggleClass('hide', true);
> -		$('#cpuidle table').toggleClass('hide', false);
> -		$('#cpuidle h2').toggleClass('hide', false);
> -		$('#cpufreq table').toggleClass('hide', true);
> -		$('#cpufreq h2').toggleClass('hide', true);
> -		$('#software table').toggleClass('hide', true);
> -		$('#software h2').toggleClass('hide', true);
> -		$('#device table').toggleClass('hide', true);
> -		$('#device h2').toggleClass('hide', true);
> -		$('#device p').toggleClass('hide', true);
> -		$('#tuning table').toggleClass('hide', true);
> -		$('#tuning h2').toggleClass('hide', true);
> -		$('#top .SystemButton').toggleClass('pressed', false);
> -		$('#top .SummaryButton').toggleClass('pressed', false);
> -		$('#top .CpuidleButton').toggleClass('pressed', true);
> -		$('#top .CpufreqButton').toggleClass('pressed', false);
> -		$('#top .SoftwareButton').toggleClass('pressed', false);
> -		$('#top .DeviceButton').toggleClass('pressed', false);
> -		$('#top .TuningButton').toggleClass('pressed', false);
> -		$('#top .AllButton').toggleClass('pressed', false);
> -
> -}
> -function toggleCpufreq() {
> -		$('#system table').toggleClass('hide', true);
> -		$('#system h2').toggleClass('hide', true);
> -		$('#summary table').toggleClass('hide', true);
> -		$('#summary h2').toggleClass('hide', true);
> -		$('#summary p').toggleClass('hide', true);
> -		$('#cpuidle table').toggleClass('hide', true);
> -		$('#cpuidle h2').toggleClass('hide', true);
> -		$('#cpufreq table').toggleClass('hide', false);
> -		$('#cpufreq h2').toggleClass('hide', false);
> -		$('#software table').toggleClass('hide', true);
> -		$('#software h2').toggleClass('hide', true);
> -		$('#device table').toggleClass('hide', true);
> -		$('#device h2').toggleClass('hide', true);
> -		$('#device p').toggleClass('hide', true);
> -		$('#tuning table').toggleClass('hide', true);
> -		$('#tuning h2').toggleClass('hide', true);
> -		$('#top .SystemButton').toggleClass('pressed', false);
> -		$('#top .SummaryButton').toggleClass('pressed', false);
> -		$('#top .CpuidleButton').toggleClass('pressed', false);
> -		$('#top .CpufreqButton').toggleClass('pressed', true);
> -		$('#top .SoftwareButton').toggleClass('pressed', false);
> -		$('#top .DeviceButton').toggleClass('pressed', false);
> -		$('#top .TuningButton').toggleClass('pressed', false);
> -		$('#top .AllButton').toggleClass('pressed', false);
> -}
> -
> -function toggleSoftware() {
> -		$('#system table').toggleClass('hide', true);
> -		$('#system h2').toggleClass('hide', true);
> -		$('#summary table').toggleClass('hide', true);
> -		$('#summary h2').toggleClass('hide', true);
> -		$('#summary p').toggleClass('hide', true);
> -		$('#cpuidle table').toggleClass('hide', true);
> -		$('#cpuidle h2').toggleClass('hide', true);
> -		$('#cpufreq table').toggleClass('hide', true);
> -		$('#cpufreq h2').toggleClass('hide', true);
> -		$('#software table').toggleClass('hide', false);
> -		$('#software h2').toggleClass('hide', false);
> -		$('#device table').toggleClass('hide', true);
> -		$('#device h2').toggleClass('hide', true);
> -		$('#device p').toggleClass('hide', true);
> -		$('#tuning table').toggleClass('hide', true);
> -		$('#tuning h2').toggleClass('hide', true);
> -		$('#top .SystemButton').toggleClass('pressed', false);
> -		$('#top .SummaryButton').toggleClass('pressed', false);
> -		$('#top .CpuidleButton').toggleClass('pressed', false);
> -		$('#top .CpufreqButton').toggleClass('pressed', false);
> -		$('#top .SoftwareButton').toggleClass('pressed', true);
> -		$('#top .DeviceButton').toggleClass('pressed', false);
> -		$('#top .TuningButton').toggleClass('pressed', false);
> -		$('#top .AllButton').toggleClass('pressed', false);
> -}
> -
> -function toggleDevice() {
> -		$('#system table').toggleClass('hide', true);
> -		$('#system h2').toggleClass('hide', true);
> -		$('#summary table').toggleClass('hide', true);
> -		$('#summary h2').toggleClass('hide', true);
> -		$('#summary p').toggleClass('hide', true);
> -		$('#cpuidle table').toggleClass('hide', true);
> -		$('#cpuidle h2').toggleClass('hide', true);
> -		$('#cpufreq table').toggleClass('hide', true);
> -		$('#cpufreq h2').toggleClass('hide', true);
> -		$('#software table').toggleClass('hide', true);
> -		$('#software h2').toggleClass('hide', true);
> -		$('#device table').toggleClass('hide', false);
> -		$('#device h2').toggleClass('hide', false);
> -		$('#device p').toggleClass('hide', false);
> -		$('#tuning table').toggleClass('hide', true);
> -		$('#tuning h2').toggleClass('hide', true);
> -		$('#top .SystemButton').toggleClass('pressed', false);
> -		$('#top .SummaryButton').toggleClass('pressed', false);
> -		$('#top .CpuidleButton').toggleClass('pressed', false);
> -		$('#top .CpufreqButton').toggleClass('pressed', false);
> -		$('#top .SoftwareButton').toggleClass('pressed', false);
> -		$('#top .DeviceButton').toggleClass('pressed', true);
> -		$('#top .TuningButton').toggleClass('pressed', false);
> -		$('#top .AllButton').toggleClass('pressed', false);
> +<script type='text/javascript'>
> +
> +var powertop = {
> + blocks: {
> +  system: 'System Info',
> +  summary: 'Summary',
> +  cpuidle: 'CPU Idle',
> +  cpufreq: 'CPU Frequency',
> +  software: 'Software Info',
> +  device: 'Device Info',
> +  tuning: 'Tuning' 
		^^^^^^^^
> + },
> + cadd: function(idx, c){ 
			^^^^^^
> +   var el = document.getElementById(idx);
> +   if (el) el.classList.add(c);
> + },
> + crm: function(id, c){ 
			^^^
> +   var el = document.getElementById(id);
> +   if (el) el.classList.remove(c);
> + },
> + newbutton: function(id, txt) {
> +  var x = document.createElement('div');
> +  x.id = id + '_button';
> +  x.className = 'nav_button';
> +  x.textContent = txt;
> +  x.onclick = function() { powertop.toggle(id); };
> +  return x;
> + },
> + setupbuttons: function() {
> +   var t = document.getElementById('top');
> +   if (t) {
> +     for (var b in powertop.blocks) {
> +       t.appendChild(powertop.newbutton(b, powertop.blocks[b]));
> +     }
> +    t.appendChild(powertop.newbutton('all', 'All'));
> +   }
> + },
> + toggle: function(b) {
> +   powertop.baseall();
> +   if (b == 'all') {
> +      for (var c in powertop.blocks) {
> +        powertop.crm(c, 'hide');
> +      }
> +   } else {
> +      powertop.crm(b, 'hide'); 
				^^^^
there is a number of trailing whitespaces, could you please fix that?

.git/rebase-apply/patch:237: trailing whitespace.
  tuning: 'Tuning' 
.git/rebase-apply/patch:239: trailing whitespace.
 cadd: function(idx, c){ 
.git/rebase-apply/patch:243: trailing whitespace.
 crm: function(id, c){ 
.git/rebase-apply/patch:271: trailing whitespace.
      powertop.crm(b, 'hide'); 
.git/rebase-apply/patch:286: trailing whitespace.
 } 


can we also use one coding style in js code?

	if (a)
		a-foo;

	if (b) {
		b-foo;
		b-bar;
	}


the rest loog good to me.

	-ss

> +   }
> +   powertop.cadd(b + '_button', 'pressed');
> + },
> + baseall: function() {
> +   for (var b in powertop.blocks) {
> +     powertop.cadd(b, 'hide');
> +     powertop.crm(b + '_button', 'pressed');
> +   }
> +   powertop.cadd('all', 'hide');
> +   powertop.crm('all_button', 'pressed');
> + },
> + onload: function() {
> +   powertop.setupbuttons();
> +   powertop.toggle('summary');
> + } 
>  }
>  
> -function toggleTuning() {
> -		$('#system table').toggleClass('hide', true);
> -		$('#system h2').toggleClass('hide', true);
> -		$('#summary table').toggleClass('hide', true);
> -		$('#summary h2').toggleClass('hide', true);
> -		$('#summary p').toggleClass('hide', true);
> -		$('#cpuidle table').toggleClass('hide', true);
> -		$('#cpuidle h2').toggleClass('hide', true);
> -		$('#cpufreq table').toggleClass('hide', true);
> -		$('#cpufreq h2').toggleClass('hide', true);
> -		$('#software table').toggleClass('hide', true);
> -		$('#software h2').toggleClass('hide', true);
> -		$('#device table').toggleClass('hide', true);
> -		$('#device h2').toggleClass('hide', true);
> -		$('#device p').toggleClass('hide', true);
> -		$('#tuning table').toggleClass('hide', false);
> -		$('#tuning h2').toggleClass('hide', false);
> -		$('#top .SystemButton').toggleClass('pressed', false);
> -		$('#top .SummaryButton').toggleClass('pressed', false);
> -		$('#top .CpuidleButton').toggleClass('pressed', false);
> -		$('#top .CpufreqButton').toggleClass('pressed', false);
> -		$('#top .SoftwareButton').toggleClass('pressed', false);
> -		$('#top .DeviceButton').toggleClass('pressed', false);
> -		$('#top .TuningButton').toggleClass('pressed', true);
> -		$('#top .AllButton').toggleClass('pressed', false);
> -}
> -function toggleAll() {
> -		$('#system table').toggleClass('hide', false);
> -		$('#system h2').toggleClass('hide', false);
> -		$('#summary table').toggleClass('hide', false);
> -		$('#summary h2').toggleClass('hide', false);
> -		$('#summary p').toggleClass('hide', false);
> -		$('#cpuidle table').toggleClass('hide', false);
> -		$('#cpuidle h2').toggleClass('hide', false);
> -		$('#cpufreq table').toggleClass('hide', false);
> -		$('#cpufreq h2').toggleClass('hide', false);
> -		$('#software table').toggleClass('hide', false);
> -		$('#software h2').toggleClass('hide', false);
> -		$('#device table').toggleClass('hide', false);
> -		$('#device h2').toggleClass('hide', false);
> -		$('#device p').toggleClass('hide', false);
> -		$('#tuning table').toggleClass('hide', false);
> -		$('#tuning h2').toggleClass('hide', false);
> -		$('#top .SystemButton').toggleClass('pressed', false);
> -		$('#top .SummaryButton').toggleClass('pressed', false);
> -		$('#top .CpuidleButton').toggleClass('pressed', false);
> -		$('#top .CpufreqButton').toggleClass('pressed', false);
> -		$('#top .SoftwareButton').toggleClass('pressed', false);
> -		$('#top .DeviceButton').toggleClass('pressed', false);
> -		$('#top .TuningButton').toggleClass('pressed', false);
> -		$('#top .AllButton').toggleClass('pressed', true);
> -}
>  </script>
> -<style type=\"text/css\">
> +<style type='text/css'>
>  table
>  {
>  	background-color: #F8F8F8;
> @@ -454,11 +248,7 @@ body {
>  	padding: 0;             /* Amount of negative space around the
>                                     inside of the body */
>  }
> -#top h1 {
> -	margin: 0;
> -	padding: 0;
> -}
> -#top h1 a {
> +#top {
>  	background-color: #ccc;
>  	border-bottom: 1px solid #666;
>  	color: #222;
> @@ -483,72 +273,26 @@ body {
>  	line-height: 28px;
>  	border-width:0px 8px 0px 8px;
>  }
> -#top div.SystemButton {
> -	position: absolute;
> -	top: 7px;
> -	left: 6px;
> -}
> -#top div.SummaryButton {
> -	position: absolute;
> -	top: 7px;
> -	left: 160px;
> -}
> -#top div.CpuidleButton {
> -	position: absolute;
> -	top: 7px;
> -	left: 320px;
> -}
> -#top div.CpufreqButton {
> -	position: absolute;
> -	top: 7px;
> -	left: 480px;
> -}
> -#top div.SoftwareButton {
> -	position: absolute;
> -	top: 7px;
> -	left: 640px;
> -}
> -#top div.DeviceButton {
> -	position: absolute;
> -	top: 7px;
> -	left: 800px;
> -}
> -#top div.TuningButton {
> -	position: absolute;
> -	top: 7px;
> -	left: 960px;
> -}
> -#top div.AllButton {
> -	position: absolute;
> -	top: 7px;
> -	left: 1120px;
> +#top div.nav_button {
> + display: inline;
> + cursor: pointer;
> + padding: 0.3em 0.5em;
> + margin: 0 0.2em;
>  }
> +
>  div.pressed {
>  	background-color: #000000;
>  	border: 1px solid #000000;
>  	color: #000000;
> -	display: block;
> -	border-width:0px 8px 0px 8px;
> -	-webkit-border-top-left-radius: 8px;
> -	-webkit-border-top-right-radius: 8px;
> -	-webkit-border-bottom-left-radius: 8px;
> -	-webkit-border-bottom-right-radius: 8px;
> -}
> -table.hide {
> -	display: none;
> +	border-radius: 8px;
>  }
> -h2.hide {
> -	display: none;
> -}
> -p.hide {
> -	display: none
> +div.hide {
> + display: none;
>  }
>  </style>
>  </head>
>  
> -<body>
> -
> +<body onload='powertop.onload();'>
>  <div id='top'>
> -<h1><a href='#top'>&nbsp;</a></h1>
>  </div>
>  
> -- 
> 1.8.4.rc3
> 
> _______________________________________________
> PowerTop mailing list
> PowerTop(a)lists.01.org
> https://lists.01.org/mailman/listinfo/powertop
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Powertop] [PATCH] embed self-contained javascript
@ 2013-09-10 18:32 Sergey Senozhatsky
  0 siblings, 0 replies; 9+ messages in thread
From: Sergey Senozhatsky @ 2013-09-10 18:32 UTC (permalink / raw)
  To: powertop

[-- Attachment #1: Type: text/plain, Size: 18684 bytes --]

On (09/07/13 15:49), Daniel Kahn Gillmor wrote:
> using self-contained javascript offers several improvements:
> 
>  * powertop html report can be viewed offline
>  * less overall javascript code is loaded when online
>  * no opportunity for report leakage or modification by third parties
> 
> These changes also make it simpler to update the html report when a
> new section is added: just add a new entry to powertop.blocks
> dictionary, with the section's human-readable string as its value.

Hello,
thank you for your patch. I'll take a look.

	-ss

> ---
>  src/powertop.css | 400 ++++++++++---------------------------------------------
>  1 file changed, 72 insertions(+), 328 deletions(-)
> 
> diff --git a/src/powertop.css b/src/powertop.css
> index c73d3e2..35f6571 100644
> --- a/src/powertop.css
> +++ b/src/powertop.css
> @@ -3,276 +3,70 @@
>  <head>
>  <title>PowerTOP report</title>
>  <meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\">
> -<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js\"></script>
> -<script type=\"text/javascript\">
> -$(document).ready(function(){
> -
> -	$('#system h2').addClass('hide');
> -	$('#system table').addClass('hide');
> -	$('#cpuidle h2').addClass('hide');
> -	$('#cpuidle table').addClass('hide');
> -	$('#cpufreq h2').addClass('hide');
> -	$('#cpufreq table').addClass('hide');
> -	$('#software h2').addClass('hide');
> -	$('#software table').addClass('hide');
> -	$('#device h2').addClass('hide');
> -	$('#device table').addClass('hide');
> -	$('#device p').addClass('hide');
> -	$('#tuning h2').addClass('hide');
> -	$('#tuning table').addClass('hide');
> -
> -	$('#top').append('<div class=\"SystemButton\"   onclick=\"toggleSystem()\">System Info</div>');
> -	$('#top').append('<div class=\"SummaryButton\"  onclick=\"toggleSummary()\">Summary</div>');
> -	$('#top').append('<div class=\"CpuidleButton\"  onclick=\"toggleCpuidle()\">CPU Idle</div>');
> -	$('#top').append('<div class=\"CpufreqButton\"  onclick=\"toggleCpufreq()\">CPU Frequency</div>');
> -	$('#top').append('<div class=\"SoftwareButton\" onclick=\"toggleSoftware()\">Software info</div>');
> -	$('#top').append('<div class=\"DeviceButton\"   onclick=\"toggleDevice()\">Device Info</div>');
> -	$('#top').append('<div class=\"TuningButton\"   onclick=\"toggleTuning()\">Tuning</div>');
> -	$('#top').append('<div class=\"AllButton\"      onclick=\"toggleAll()\">All</div>');
> -	$('#top .SummaryButton').toggleClass('pressed');
> -
> -    }
> -	);
> -function toggleDummy() {
> -		$('#system table').toggleClass('hide', true);
> -		$('#system h2').toggleClass('hide', true);
> -		$('#summary table').toggleClass('hide', true);
> -		$('#summary h2').toggleClass('hide', true);
> -		$('#summary p').toggleClass('hide', true);
> -		$('#cpuidle table').toggleClass('hide', true);
> -		$('#cpuidle h2').toggleClass('hide', true);
> -		$('#cpufreq table').toggleClass('hide', true);
> -		$('#cpufreq h2').toggleClass('hide', true);
> -		$('#software table').toggleClass('hide', true);
> -		$('#software h2').toggleClass('hide', true);
> -		$('#device table').toggleClass('hide', true);
> -		$('#device h2').toggleClass('hide', true);
> -		$('#device p').toggleClass('hide', true);
> -		$('#tuning table').toggleClass('hide', true);
> -		$('#tuning h2').toggleClass('hide', true);
> -		$('#top .SystemButton').toggleClass('pressed', false);
> -		$('#top .SummaryButton').toggleClass('pressed', false);
> -		$('#top .CpuidleButton').toggleClass('pressed', false);
> -		$('#top .CpufreqButton').toggleClass('pressed', false);
> -		$('#top .SoftwareButton').toggleClass('pressed', false);
> -		$('#top .DeviceButton').toggleClass('pressed', false);
> -		$('#top .TuningButton').toggleClass('pressed', false);
> -		$('#top .AllButton').toggleClass('pressed', false);
> -}
> -function toggleSystem() {
> -		$('#system table').toggleClass('hide', false);
> -		$('#system h2').toggleClass('hide', false);
> -		$('#summary table').toggleClass('hide', true);
> -		$('#summary h2').toggleClass('hide', true);
> -		$('#summary p').toggleClass('hide', true);
> -		$('#cpuidle table').toggleClass('hide', true);
> -		$('#cpuidle h2').toggleClass('hide', true);
> -		$('#cpufreq table').toggleClass('hide', true);
> -		$('#cpufreq h2').toggleClass('hide', true);
> -		$('#software table').toggleClass('hide', true);
> -		$('#software h2').toggleClass('hide', true);
> -		$('#device table').toggleClass('hide', true);
> -		$('#device h2').toggleClass('hide', true);
> -		$('#device p').toggleClass('hide', true);
> -		$('#tuning table').toggleClass('hide', true);
> -		$('#tuning h2').toggleClass('hide', true);
> -		$('#top .SystemButton').toggleClass('pressed', true);
> -		$('#top .SummaryButton').toggleClass('pressed', false);
> -		$('#top .CpuidleButton').toggleClass('pressed', false);
> -		$('#top .CpufreqButton').toggleClass('pressed', false);
> -		$('#top .SoftwareButton').toggleClass('pressed', false);
> -		$('#top .DeviceButton').toggleClass('pressed', false);
> -		$('#top .TuningButton').toggleClass('pressed', false);
> -		$('#top .AllButton').toggleClass('pressed', false);
> -}
> -function toggleSummary() {
> -		$('#system table').toggleClass('hide', true);
> -		$('#system h2').toggleClass('hide', true);
> -		$('#summary table').toggleClass('hide', false);
> -		$('#summary h2').toggleClass('hide', false);
> -		$('#summary p').toggleClass('hide', false);
> -		$('#cpuidle table').toggleClass('hide', true);
> -		$('#cpuidle h2').toggleClass('hide', true);
> -		$('#cpufreq table').toggleClass('hide', true);
> -		$('#cpufreq h2').toggleClass('hide', true);
> -		$('#software table').toggleClass('hide', true);
> -		$('#software h2').toggleClass('hide', true);
> -		$('#device table').toggleClass('hide', true);
> -		$('#device h2').toggleClass('hide', true);
> -		$('#device p').toggleClass('hide', true);
> -		$('#tuning table').toggleClass('hide', true);
> -		$('#tuning h2').toggleClass('hide', true);
> -		$('#top .SystemButton').toggleClass('pressed', false);
> -		$('#top .SummaryButton').toggleClass('pressed', true);
> -		$('#top .CpuidleButton').toggleClass('pressed', false);
> -		$('#top .CpufreqButton').toggleClass('pressed', false);
> -		$('#top .SoftwareButton').toggleClass('pressed', false);
> -		$('#top .DeviceButton').toggleClass('pressed', false);
> -		$('#top .TuningButton').toggleClass('pressed', false);
> -		$('#top .AllButton').toggleClass('pressed', false);
> -}
> -function toggleCpuidle() {
> -		$('#system table').toggleClass('hide', true);
> -		$('#system h2').toggleClass('hide', true);
> -		$('#summary table').toggleClass('hide', true);
> -		$('#summary h2').toggleClass('hide', true);
> -		$('#summary p').toggleClass('hide', true);
> -		$('#cpuidle table').toggleClass('hide', false);
> -		$('#cpuidle h2').toggleClass('hide', false);
> -		$('#cpufreq table').toggleClass('hide', true);
> -		$('#cpufreq h2').toggleClass('hide', true);
> -		$('#software table').toggleClass('hide', true);
> -		$('#software h2').toggleClass('hide', true);
> -		$('#device table').toggleClass('hide', true);
> -		$('#device h2').toggleClass('hide', true);
> -		$('#device p').toggleClass('hide', true);
> -		$('#tuning table').toggleClass('hide', true);
> -		$('#tuning h2').toggleClass('hide', true);
> -		$('#top .SystemButton').toggleClass('pressed', false);
> -		$('#top .SummaryButton').toggleClass('pressed', false);
> -		$('#top .CpuidleButton').toggleClass('pressed', true);
> -		$('#top .CpufreqButton').toggleClass('pressed', false);
> -		$('#top .SoftwareButton').toggleClass('pressed', false);
> -		$('#top .DeviceButton').toggleClass('pressed', false);
> -		$('#top .TuningButton').toggleClass('pressed', false);
> -		$('#top .AllButton').toggleClass('pressed', false);
> -
> -}
> -function toggleCpufreq() {
> -		$('#system table').toggleClass('hide', true);
> -		$('#system h2').toggleClass('hide', true);
> -		$('#summary table').toggleClass('hide', true);
> -		$('#summary h2').toggleClass('hide', true);
> -		$('#summary p').toggleClass('hide', true);
> -		$('#cpuidle table').toggleClass('hide', true);
> -		$('#cpuidle h2').toggleClass('hide', true);
> -		$('#cpufreq table').toggleClass('hide', false);
> -		$('#cpufreq h2').toggleClass('hide', false);
> -		$('#software table').toggleClass('hide', true);
> -		$('#software h2').toggleClass('hide', true);
> -		$('#device table').toggleClass('hide', true);
> -		$('#device h2').toggleClass('hide', true);
> -		$('#device p').toggleClass('hide', true);
> -		$('#tuning table').toggleClass('hide', true);
> -		$('#tuning h2').toggleClass('hide', true);
> -		$('#top .SystemButton').toggleClass('pressed', false);
> -		$('#top .SummaryButton').toggleClass('pressed', false);
> -		$('#top .CpuidleButton').toggleClass('pressed', false);
> -		$('#top .CpufreqButton').toggleClass('pressed', true);
> -		$('#top .SoftwareButton').toggleClass('pressed', false);
> -		$('#top .DeviceButton').toggleClass('pressed', false);
> -		$('#top .TuningButton').toggleClass('pressed', false);
> -		$('#top .AllButton').toggleClass('pressed', false);
> -}
> -
> -function toggleSoftware() {
> -		$('#system table').toggleClass('hide', true);
> -		$('#system h2').toggleClass('hide', true);
> -		$('#summary table').toggleClass('hide', true);
> -		$('#summary h2').toggleClass('hide', true);
> -		$('#summary p').toggleClass('hide', true);
> -		$('#cpuidle table').toggleClass('hide', true);
> -		$('#cpuidle h2').toggleClass('hide', true);
> -		$('#cpufreq table').toggleClass('hide', true);
> -		$('#cpufreq h2').toggleClass('hide', true);
> -		$('#software table').toggleClass('hide', false);
> -		$('#software h2').toggleClass('hide', false);
> -		$('#device table').toggleClass('hide', true);
> -		$('#device h2').toggleClass('hide', true);
> -		$('#device p').toggleClass('hide', true);
> -		$('#tuning table').toggleClass('hide', true);
> -		$('#tuning h2').toggleClass('hide', true);
> -		$('#top .SystemButton').toggleClass('pressed', false);
> -		$('#top .SummaryButton').toggleClass('pressed', false);
> -		$('#top .CpuidleButton').toggleClass('pressed', false);
> -		$('#top .CpufreqButton').toggleClass('pressed', false);
> -		$('#top .SoftwareButton').toggleClass('pressed', true);
> -		$('#top .DeviceButton').toggleClass('pressed', false);
> -		$('#top .TuningButton').toggleClass('pressed', false);
> -		$('#top .AllButton').toggleClass('pressed', false);
> -}
> -
> -function toggleDevice() {
> -		$('#system table').toggleClass('hide', true);
> -		$('#system h2').toggleClass('hide', true);
> -		$('#summary table').toggleClass('hide', true);
> -		$('#summary h2').toggleClass('hide', true);
> -		$('#summary p').toggleClass('hide', true);
> -		$('#cpuidle table').toggleClass('hide', true);
> -		$('#cpuidle h2').toggleClass('hide', true);
> -		$('#cpufreq table').toggleClass('hide', true);
> -		$('#cpufreq h2').toggleClass('hide', true);
> -		$('#software table').toggleClass('hide', true);
> -		$('#software h2').toggleClass('hide', true);
> -		$('#device table').toggleClass('hide', false);
> -		$('#device h2').toggleClass('hide', false);
> -		$('#device p').toggleClass('hide', false);
> -		$('#tuning table').toggleClass('hide', true);
> -		$('#tuning h2').toggleClass('hide', true);
> -		$('#top .SystemButton').toggleClass('pressed', false);
> -		$('#top .SummaryButton').toggleClass('pressed', false);
> -		$('#top .CpuidleButton').toggleClass('pressed', false);
> -		$('#top .CpufreqButton').toggleClass('pressed', false);
> -		$('#top .SoftwareButton').toggleClass('pressed', false);
> -		$('#top .DeviceButton').toggleClass('pressed', true);
> -		$('#top .TuningButton').toggleClass('pressed', false);
> -		$('#top .AllButton').toggleClass('pressed', false);
> +<script type='text/javascript'>
> +
> +var powertop = {
> + blocks: {
> +  system: 'System Info',
> +  summary: 'Summary',
> +  cpuidle: 'CPU Idle',
> +  cpufreq: 'CPU Frequency',
> +  software: 'Software Info',
> +  device: 'Device Info',
> +  tuning: 'Tuning' 
> + },
> + cadd: function(idx, c){ 
> +   var el = document.getElementById(idx);
> +   if (el) el.classList.add(c);
> + },
> + crm: function(id, c){ 
> +   var el = document.getElementById(id);
> +   if (el) el.classList.remove(c);
> + },
> + newbutton: function(id, txt) {
> +  var x = document.createElement('div');
> +  x.id = id + '_button';
> +  x.className = 'nav_button';
> +  x.textContent = txt;
> +  x.onclick = function() { powertop.toggle(id); };
> +  return x;
> + },
> + setupbuttons: function() {
> +   var t = document.getElementById('top');
> +   if (t) {
> +     for (var b in powertop.blocks) {
> +       t.appendChild(powertop.newbutton(b, powertop.blocks[b]));
> +     }
> +    t.appendChild(powertop.newbutton('all', 'All'));
> +   }
> + },
> + toggle: function(b) {
> +   powertop.baseall();
> +   if (b == 'all') {
> +      for (var c in powertop.blocks) {
> +        powertop.crm(c, 'hide');
> +      }
> +   } else {
> +      powertop.crm(b, 'hide'); 
> +   }
> +   powertop.cadd(b + '_button', 'pressed');
> + },
> + baseall: function() {
> +   for (var b in powertop.blocks) {
> +     powertop.cadd(b, 'hide');
> +     powertop.crm(b + '_button', 'pressed');
> +   }
> +   powertop.cadd('all', 'hide');
> +   powertop.crm('all_button', 'pressed');
> + },
> + onload: function() {
> +   powertop.setupbuttons();
> +   powertop.toggle('summary');
> + } 
>  }
>  
> -function toggleTuning() {
> -		$('#system table').toggleClass('hide', true);
> -		$('#system h2').toggleClass('hide', true);
> -		$('#summary table').toggleClass('hide', true);
> -		$('#summary h2').toggleClass('hide', true);
> -		$('#summary p').toggleClass('hide', true);
> -		$('#cpuidle table').toggleClass('hide', true);
> -		$('#cpuidle h2').toggleClass('hide', true);
> -		$('#cpufreq table').toggleClass('hide', true);
> -		$('#cpufreq h2').toggleClass('hide', true);
> -		$('#software table').toggleClass('hide', true);
> -		$('#software h2').toggleClass('hide', true);
> -		$('#device table').toggleClass('hide', true);
> -		$('#device h2').toggleClass('hide', true);
> -		$('#device p').toggleClass('hide', true);
> -		$('#tuning table').toggleClass('hide', false);
> -		$('#tuning h2').toggleClass('hide', false);
> -		$('#top .SystemButton').toggleClass('pressed', false);
> -		$('#top .SummaryButton').toggleClass('pressed', false);
> -		$('#top .CpuidleButton').toggleClass('pressed', false);
> -		$('#top .CpufreqButton').toggleClass('pressed', false);
> -		$('#top .SoftwareButton').toggleClass('pressed', false);
> -		$('#top .DeviceButton').toggleClass('pressed', false);
> -		$('#top .TuningButton').toggleClass('pressed', true);
> -		$('#top .AllButton').toggleClass('pressed', false);
> -}
> -function toggleAll() {
> -		$('#system table').toggleClass('hide', false);
> -		$('#system h2').toggleClass('hide', false);
> -		$('#summary table').toggleClass('hide', false);
> -		$('#summary h2').toggleClass('hide', false);
> -		$('#summary p').toggleClass('hide', false);
> -		$('#cpuidle table').toggleClass('hide', false);
> -		$('#cpuidle h2').toggleClass('hide', false);
> -		$('#cpufreq table').toggleClass('hide', false);
> -		$('#cpufreq h2').toggleClass('hide', false);
> -		$('#software table').toggleClass('hide', false);
> -		$('#software h2').toggleClass('hide', false);
> -		$('#device table').toggleClass('hide', false);
> -		$('#device h2').toggleClass('hide', false);
> -		$('#device p').toggleClass('hide', false);
> -		$('#tuning table').toggleClass('hide', false);
> -		$('#tuning h2').toggleClass('hide', false);
> -		$('#top .SystemButton').toggleClass('pressed', false);
> -		$('#top .SummaryButton').toggleClass('pressed', false);
> -		$('#top .CpuidleButton').toggleClass('pressed', false);
> -		$('#top .CpufreqButton').toggleClass('pressed', false);
> -		$('#top .SoftwareButton').toggleClass('pressed', false);
> -		$('#top .DeviceButton').toggleClass('pressed', false);
> -		$('#top .TuningButton').toggleClass('pressed', false);
> -		$('#top .AllButton').toggleClass('pressed', true);
> -}
>  </script>
> -<style type=\"text/css\">
> +<style type='text/css'>
>  table
>  {
>  	background-color: #F8F8F8;
> @@ -454,11 +248,7 @@ body {
>  	padding: 0;             /* Amount of negative space around the
>                                     inside of the body */
>  }
> -#top h1 {
> -	margin: 0;
> -	padding: 0;
> -}
> -#top h1 a {
> +#top {
>  	background-color: #ccc;
>  	border-bottom: 1px solid #666;
>  	color: #222;
> @@ -483,72 +273,26 @@ body {
>  	line-height: 28px;
>  	border-width:0px 8px 0px 8px;
>  }
> -#top div.SystemButton {
> -	position: absolute;
> -	top: 7px;
> -	left: 6px;
> -}
> -#top div.SummaryButton {
> -	position: absolute;
> -	top: 7px;
> -	left: 160px;
> -}
> -#top div.CpuidleButton {
> -	position: absolute;
> -	top: 7px;
> -	left: 320px;
> -}
> -#top div.CpufreqButton {
> -	position: absolute;
> -	top: 7px;
> -	left: 480px;
> -}
> -#top div.SoftwareButton {
> -	position: absolute;
> -	top: 7px;
> -	left: 640px;
> -}
> -#top div.DeviceButton {
> -	position: absolute;
> -	top: 7px;
> -	left: 800px;
> -}
> -#top div.TuningButton {
> -	position: absolute;
> -	top: 7px;
> -	left: 960px;
> -}
> -#top div.AllButton {
> -	position: absolute;
> -	top: 7px;
> -	left: 1120px;
> +#top div.nav_button {
> + display: inline;
> + cursor: pointer;
> + padding: 0.3em 0.5em;
> + margin: 0 0.2em;
>  }
> +
>  div.pressed {
>  	background-color: #000000;
>  	border: 1px solid #000000;
>  	color: #000000;
> -	display: block;
> -	border-width:0px 8px 0px 8px;
> -	-webkit-border-top-left-radius: 8px;
> -	-webkit-border-top-right-radius: 8px;
> -	-webkit-border-bottom-left-radius: 8px;
> -	-webkit-border-bottom-right-radius: 8px;
> -}
> -table.hide {
> -	display: none;
> +	border-radius: 8px;
>  }
> -h2.hide {
> -	display: none;
> -}
> -p.hide {
> -	display: none
> +div.hide {
> + display: none;
>  }
>  </style>
>  </head>
>  
> -<body>
> -
> +<body onload='powertop.onload();'>
>  <div id='top'>
> -<h1><a href='#top'>&nbsp;</a></h1>
>  </div>
>  
> -- 
> 1.8.4.rc3
> 
> _______________________________________________
> PowerTop mailing list
> PowerTop(a)lists.01.org
> https://lists.01.org/mailman/listinfo/powertop
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Powertop] [PATCH] embed self-contained javascript
@ 2013-09-07 19:49 Daniel Kahn Gillmor
  0 siblings, 0 replies; 9+ messages in thread
From: Daniel Kahn Gillmor @ 2013-09-07 19:49 UTC (permalink / raw)
  To: powertop

[-- Attachment #1: Type: text/plain, Size: 17505 bytes --]

using self-contained javascript offers several improvements:

 * powertop html report can be viewed offline
 * less overall javascript code is loaded when online
 * no opportunity for report leakage or modification by third parties

These changes also make it simpler to update the html report when a
new section is added: just add a new entry to powertop.blocks
dictionary, with the section's human-readable string as its value.
---
 src/powertop.css | 400 ++++++++++---------------------------------------------
 1 file changed, 72 insertions(+), 328 deletions(-)

diff --git a/src/powertop.css b/src/powertop.css
index c73d3e2..35f6571 100644
--- a/src/powertop.css
+++ b/src/powertop.css
@@ -3,276 +3,70 @@
 <head>
 <title>PowerTOP report</title>
 <meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\">
-<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js\"></script>
-<script type=\"text/javascript\">
-$(document).ready(function(){
-
-	$('#system h2').addClass('hide');
-	$('#system table').addClass('hide');
-	$('#cpuidle h2').addClass('hide');
-	$('#cpuidle table').addClass('hide');
-	$('#cpufreq h2').addClass('hide');
-	$('#cpufreq table').addClass('hide');
-	$('#software h2').addClass('hide');
-	$('#software table').addClass('hide');
-	$('#device h2').addClass('hide');
-	$('#device table').addClass('hide');
-	$('#device p').addClass('hide');
-	$('#tuning h2').addClass('hide');
-	$('#tuning table').addClass('hide');
-
-	$('#top').append('<div class=\"SystemButton\"   onclick=\"toggleSystem()\">System Info</div>');
-	$('#top').append('<div class=\"SummaryButton\"  onclick=\"toggleSummary()\">Summary</div>');
-	$('#top').append('<div class=\"CpuidleButton\"  onclick=\"toggleCpuidle()\">CPU Idle</div>');
-	$('#top').append('<div class=\"CpufreqButton\"  onclick=\"toggleCpufreq()\">CPU Frequency</div>');
-	$('#top').append('<div class=\"SoftwareButton\" onclick=\"toggleSoftware()\">Software info</div>');
-	$('#top').append('<div class=\"DeviceButton\"   onclick=\"toggleDevice()\">Device Info</div>');
-	$('#top').append('<div class=\"TuningButton\"   onclick=\"toggleTuning()\">Tuning</div>');
-	$('#top').append('<div class=\"AllButton\"      onclick=\"toggleAll()\">All</div>');
-	$('#top .SummaryButton').toggleClass('pressed');
-
-    }
-	);
-function toggleDummy() {
-		$('#system table').toggleClass('hide', true);
-		$('#system h2').toggleClass('hide', true);
-		$('#summary table').toggleClass('hide', true);
-		$('#summary h2').toggleClass('hide', true);
-		$('#summary p').toggleClass('hide', true);
-		$('#cpuidle table').toggleClass('hide', true);
-		$('#cpuidle h2').toggleClass('hide', true);
-		$('#cpufreq table').toggleClass('hide', true);
-		$('#cpufreq h2').toggleClass('hide', true);
-		$('#software table').toggleClass('hide', true);
-		$('#software h2').toggleClass('hide', true);
-		$('#device table').toggleClass('hide', true);
-		$('#device h2').toggleClass('hide', true);
-		$('#device p').toggleClass('hide', true);
-		$('#tuning table').toggleClass('hide', true);
-		$('#tuning h2').toggleClass('hide', true);
-		$('#top .SystemButton').toggleClass('pressed', false);
-		$('#top .SummaryButton').toggleClass('pressed', false);
-		$('#top .CpuidleButton').toggleClass('pressed', false);
-		$('#top .CpufreqButton').toggleClass('pressed', false);
-		$('#top .SoftwareButton').toggleClass('pressed', false);
-		$('#top .DeviceButton').toggleClass('pressed', false);
-		$('#top .TuningButton').toggleClass('pressed', false);
-		$('#top .AllButton').toggleClass('pressed', false);
-}
-function toggleSystem() {
-		$('#system table').toggleClass('hide', false);
-		$('#system h2').toggleClass('hide', false);
-		$('#summary table').toggleClass('hide', true);
-		$('#summary h2').toggleClass('hide', true);
-		$('#summary p').toggleClass('hide', true);
-		$('#cpuidle table').toggleClass('hide', true);
-		$('#cpuidle h2').toggleClass('hide', true);
-		$('#cpufreq table').toggleClass('hide', true);
-		$('#cpufreq h2').toggleClass('hide', true);
-		$('#software table').toggleClass('hide', true);
-		$('#software h2').toggleClass('hide', true);
-		$('#device table').toggleClass('hide', true);
-		$('#device h2').toggleClass('hide', true);
-		$('#device p').toggleClass('hide', true);
-		$('#tuning table').toggleClass('hide', true);
-		$('#tuning h2').toggleClass('hide', true);
-		$('#top .SystemButton').toggleClass('pressed', true);
-		$('#top .SummaryButton').toggleClass('pressed', false);
-		$('#top .CpuidleButton').toggleClass('pressed', false);
-		$('#top .CpufreqButton').toggleClass('pressed', false);
-		$('#top .SoftwareButton').toggleClass('pressed', false);
-		$('#top .DeviceButton').toggleClass('pressed', false);
-		$('#top .TuningButton').toggleClass('pressed', false);
-		$('#top .AllButton').toggleClass('pressed', false);
-}
-function toggleSummary() {
-		$('#system table').toggleClass('hide', true);
-		$('#system h2').toggleClass('hide', true);
-		$('#summary table').toggleClass('hide', false);
-		$('#summary h2').toggleClass('hide', false);
-		$('#summary p').toggleClass('hide', false);
-		$('#cpuidle table').toggleClass('hide', true);
-		$('#cpuidle h2').toggleClass('hide', true);
-		$('#cpufreq table').toggleClass('hide', true);
-		$('#cpufreq h2').toggleClass('hide', true);
-		$('#software table').toggleClass('hide', true);
-		$('#software h2').toggleClass('hide', true);
-		$('#device table').toggleClass('hide', true);
-		$('#device h2').toggleClass('hide', true);
-		$('#device p').toggleClass('hide', true);
-		$('#tuning table').toggleClass('hide', true);
-		$('#tuning h2').toggleClass('hide', true);
-		$('#top .SystemButton').toggleClass('pressed', false);
-		$('#top .SummaryButton').toggleClass('pressed', true);
-		$('#top .CpuidleButton').toggleClass('pressed', false);
-		$('#top .CpufreqButton').toggleClass('pressed', false);
-		$('#top .SoftwareButton').toggleClass('pressed', false);
-		$('#top .DeviceButton').toggleClass('pressed', false);
-		$('#top .TuningButton').toggleClass('pressed', false);
-		$('#top .AllButton').toggleClass('pressed', false);
-}
-function toggleCpuidle() {
-		$('#system table').toggleClass('hide', true);
-		$('#system h2').toggleClass('hide', true);
-		$('#summary table').toggleClass('hide', true);
-		$('#summary h2').toggleClass('hide', true);
-		$('#summary p').toggleClass('hide', true);
-		$('#cpuidle table').toggleClass('hide', false);
-		$('#cpuidle h2').toggleClass('hide', false);
-		$('#cpufreq table').toggleClass('hide', true);
-		$('#cpufreq h2').toggleClass('hide', true);
-		$('#software table').toggleClass('hide', true);
-		$('#software h2').toggleClass('hide', true);
-		$('#device table').toggleClass('hide', true);
-		$('#device h2').toggleClass('hide', true);
-		$('#device p').toggleClass('hide', true);
-		$('#tuning table').toggleClass('hide', true);
-		$('#tuning h2').toggleClass('hide', true);
-		$('#top .SystemButton').toggleClass('pressed', false);
-		$('#top .SummaryButton').toggleClass('pressed', false);
-		$('#top .CpuidleButton').toggleClass('pressed', true);
-		$('#top .CpufreqButton').toggleClass('pressed', false);
-		$('#top .SoftwareButton').toggleClass('pressed', false);
-		$('#top .DeviceButton').toggleClass('pressed', false);
-		$('#top .TuningButton').toggleClass('pressed', false);
-		$('#top .AllButton').toggleClass('pressed', false);
-
-}
-function toggleCpufreq() {
-		$('#system table').toggleClass('hide', true);
-		$('#system h2').toggleClass('hide', true);
-		$('#summary table').toggleClass('hide', true);
-		$('#summary h2').toggleClass('hide', true);
-		$('#summary p').toggleClass('hide', true);
-		$('#cpuidle table').toggleClass('hide', true);
-		$('#cpuidle h2').toggleClass('hide', true);
-		$('#cpufreq table').toggleClass('hide', false);
-		$('#cpufreq h2').toggleClass('hide', false);
-		$('#software table').toggleClass('hide', true);
-		$('#software h2').toggleClass('hide', true);
-		$('#device table').toggleClass('hide', true);
-		$('#device h2').toggleClass('hide', true);
-		$('#device p').toggleClass('hide', true);
-		$('#tuning table').toggleClass('hide', true);
-		$('#tuning h2').toggleClass('hide', true);
-		$('#top .SystemButton').toggleClass('pressed', false);
-		$('#top .SummaryButton').toggleClass('pressed', false);
-		$('#top .CpuidleButton').toggleClass('pressed', false);
-		$('#top .CpufreqButton').toggleClass('pressed', true);
-		$('#top .SoftwareButton').toggleClass('pressed', false);
-		$('#top .DeviceButton').toggleClass('pressed', false);
-		$('#top .TuningButton').toggleClass('pressed', false);
-		$('#top .AllButton').toggleClass('pressed', false);
-}
-
-function toggleSoftware() {
-		$('#system table').toggleClass('hide', true);
-		$('#system h2').toggleClass('hide', true);
-		$('#summary table').toggleClass('hide', true);
-		$('#summary h2').toggleClass('hide', true);
-		$('#summary p').toggleClass('hide', true);
-		$('#cpuidle table').toggleClass('hide', true);
-		$('#cpuidle h2').toggleClass('hide', true);
-		$('#cpufreq table').toggleClass('hide', true);
-		$('#cpufreq h2').toggleClass('hide', true);
-		$('#software table').toggleClass('hide', false);
-		$('#software h2').toggleClass('hide', false);
-		$('#device table').toggleClass('hide', true);
-		$('#device h2').toggleClass('hide', true);
-		$('#device p').toggleClass('hide', true);
-		$('#tuning table').toggleClass('hide', true);
-		$('#tuning h2').toggleClass('hide', true);
-		$('#top .SystemButton').toggleClass('pressed', false);
-		$('#top .SummaryButton').toggleClass('pressed', false);
-		$('#top .CpuidleButton').toggleClass('pressed', false);
-		$('#top .CpufreqButton').toggleClass('pressed', false);
-		$('#top .SoftwareButton').toggleClass('pressed', true);
-		$('#top .DeviceButton').toggleClass('pressed', false);
-		$('#top .TuningButton').toggleClass('pressed', false);
-		$('#top .AllButton').toggleClass('pressed', false);
-}
-
-function toggleDevice() {
-		$('#system table').toggleClass('hide', true);
-		$('#system h2').toggleClass('hide', true);
-		$('#summary table').toggleClass('hide', true);
-		$('#summary h2').toggleClass('hide', true);
-		$('#summary p').toggleClass('hide', true);
-		$('#cpuidle table').toggleClass('hide', true);
-		$('#cpuidle h2').toggleClass('hide', true);
-		$('#cpufreq table').toggleClass('hide', true);
-		$('#cpufreq h2').toggleClass('hide', true);
-		$('#software table').toggleClass('hide', true);
-		$('#software h2').toggleClass('hide', true);
-		$('#device table').toggleClass('hide', false);
-		$('#device h2').toggleClass('hide', false);
-		$('#device p').toggleClass('hide', false);
-		$('#tuning table').toggleClass('hide', true);
-		$('#tuning h2').toggleClass('hide', true);
-		$('#top .SystemButton').toggleClass('pressed', false);
-		$('#top .SummaryButton').toggleClass('pressed', false);
-		$('#top .CpuidleButton').toggleClass('pressed', false);
-		$('#top .CpufreqButton').toggleClass('pressed', false);
-		$('#top .SoftwareButton').toggleClass('pressed', false);
-		$('#top .DeviceButton').toggleClass('pressed', true);
-		$('#top .TuningButton').toggleClass('pressed', false);
-		$('#top .AllButton').toggleClass('pressed', false);
+<script type='text/javascript'>
+
+var powertop = {
+ blocks: {
+  system: 'System Info',
+  summary: 'Summary',
+  cpuidle: 'CPU Idle',
+  cpufreq: 'CPU Frequency',
+  software: 'Software Info',
+  device: 'Device Info',
+  tuning: 'Tuning' 
+ },
+ cadd: function(idx, c){ 
+   var el = document.getElementById(idx);
+   if (el) el.classList.add(c);
+ },
+ crm: function(id, c){ 
+   var el = document.getElementById(id);
+   if (el) el.classList.remove(c);
+ },
+ newbutton: function(id, txt) {
+  var x = document.createElement('div');
+  x.id = id + '_button';
+  x.className = 'nav_button';
+  x.textContent = txt;
+  x.onclick = function() { powertop.toggle(id); };
+  return x;
+ },
+ setupbuttons: function() {
+   var t = document.getElementById('top');
+   if (t) {
+     for (var b in powertop.blocks) {
+       t.appendChild(powertop.newbutton(b, powertop.blocks[b]));
+     }
+    t.appendChild(powertop.newbutton('all', 'All'));
+   }
+ },
+ toggle: function(b) {
+   powertop.baseall();
+   if (b == 'all') {
+      for (var c in powertop.blocks) {
+        powertop.crm(c, 'hide');
+      }
+   } else {
+      powertop.crm(b, 'hide'); 
+   }
+   powertop.cadd(b + '_button', 'pressed');
+ },
+ baseall: function() {
+   for (var b in powertop.blocks) {
+     powertop.cadd(b, 'hide');
+     powertop.crm(b + '_button', 'pressed');
+   }
+   powertop.cadd('all', 'hide');
+   powertop.crm('all_button', 'pressed');
+ },
+ onload: function() {
+   powertop.setupbuttons();
+   powertop.toggle('summary');
+ } 
 }
 
-function toggleTuning() {
-		$('#system table').toggleClass('hide', true);
-		$('#system h2').toggleClass('hide', true);
-		$('#summary table').toggleClass('hide', true);
-		$('#summary h2').toggleClass('hide', true);
-		$('#summary p').toggleClass('hide', true);
-		$('#cpuidle table').toggleClass('hide', true);
-		$('#cpuidle h2').toggleClass('hide', true);
-		$('#cpufreq table').toggleClass('hide', true);
-		$('#cpufreq h2').toggleClass('hide', true);
-		$('#software table').toggleClass('hide', true);
-		$('#software h2').toggleClass('hide', true);
-		$('#device table').toggleClass('hide', true);
-		$('#device h2').toggleClass('hide', true);
-		$('#device p').toggleClass('hide', true);
-		$('#tuning table').toggleClass('hide', false);
-		$('#tuning h2').toggleClass('hide', false);
-		$('#top .SystemButton').toggleClass('pressed', false);
-		$('#top .SummaryButton').toggleClass('pressed', false);
-		$('#top .CpuidleButton').toggleClass('pressed', false);
-		$('#top .CpufreqButton').toggleClass('pressed', false);
-		$('#top .SoftwareButton').toggleClass('pressed', false);
-		$('#top .DeviceButton').toggleClass('pressed', false);
-		$('#top .TuningButton').toggleClass('pressed', true);
-		$('#top .AllButton').toggleClass('pressed', false);
-}
-function toggleAll() {
-		$('#system table').toggleClass('hide', false);
-		$('#system h2').toggleClass('hide', false);
-		$('#summary table').toggleClass('hide', false);
-		$('#summary h2').toggleClass('hide', false);
-		$('#summary p').toggleClass('hide', false);
-		$('#cpuidle table').toggleClass('hide', false);
-		$('#cpuidle h2').toggleClass('hide', false);
-		$('#cpufreq table').toggleClass('hide', false);
-		$('#cpufreq h2').toggleClass('hide', false);
-		$('#software table').toggleClass('hide', false);
-		$('#software h2').toggleClass('hide', false);
-		$('#device table').toggleClass('hide', false);
-		$('#device h2').toggleClass('hide', false);
-		$('#device p').toggleClass('hide', false);
-		$('#tuning table').toggleClass('hide', false);
-		$('#tuning h2').toggleClass('hide', false);
-		$('#top .SystemButton').toggleClass('pressed', false);
-		$('#top .SummaryButton').toggleClass('pressed', false);
-		$('#top .CpuidleButton').toggleClass('pressed', false);
-		$('#top .CpufreqButton').toggleClass('pressed', false);
-		$('#top .SoftwareButton').toggleClass('pressed', false);
-		$('#top .DeviceButton').toggleClass('pressed', false);
-		$('#top .TuningButton').toggleClass('pressed', false);
-		$('#top .AllButton').toggleClass('pressed', true);
-}
 </script>
-<style type=\"text/css\">
+<style type='text/css'>
 table
 {
 	background-color: #F8F8F8;
@@ -454,11 +248,7 @@ body {
 	padding: 0;             /* Amount of negative space around the
                                    inside of the body */
 }
-#top h1 {
-	margin: 0;
-	padding: 0;
-}
-#top h1 a {
+#top {
 	background-color: #ccc;
 	border-bottom: 1px solid #666;
 	color: #222;
@@ -483,72 +273,26 @@ body {
 	line-height: 28px;
 	border-width:0px 8px 0px 8px;
 }
-#top div.SystemButton {
-	position: absolute;
-	top: 7px;
-	left: 6px;
-}
-#top div.SummaryButton {
-	position: absolute;
-	top: 7px;
-	left: 160px;
-}
-#top div.CpuidleButton {
-	position: absolute;
-	top: 7px;
-	left: 320px;
-}
-#top div.CpufreqButton {
-	position: absolute;
-	top: 7px;
-	left: 480px;
-}
-#top div.SoftwareButton {
-	position: absolute;
-	top: 7px;
-	left: 640px;
-}
-#top div.DeviceButton {
-	position: absolute;
-	top: 7px;
-	left: 800px;
-}
-#top div.TuningButton {
-	position: absolute;
-	top: 7px;
-	left: 960px;
-}
-#top div.AllButton {
-	position: absolute;
-	top: 7px;
-	left: 1120px;
+#top div.nav_button {
+ display: inline;
+ cursor: pointer;
+ padding: 0.3em 0.5em;
+ margin: 0 0.2em;
 }
+
 div.pressed {
 	background-color: #000000;
 	border: 1px solid #000000;
 	color: #000000;
-	display: block;
-	border-width:0px 8px 0px 8px;
-	-webkit-border-top-left-radius: 8px;
-	-webkit-border-top-right-radius: 8px;
-	-webkit-border-bottom-left-radius: 8px;
-	-webkit-border-bottom-right-radius: 8px;
-}
-table.hide {
-	display: none;
+	border-radius: 8px;
 }
-h2.hide {
-	display: none;
-}
-p.hide {
-	display: none
+div.hide {
+ display: none;
 }
 </style>
 </head>
 
-<body>
-
+<body onload='powertop.onload();'>
 <div id='top'>
-<h1><a href='#top'>&nbsp;</a></h1>
 </div>
 
-- 
1.8.4.rc3


^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2013-09-18  9:01 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-09-18  8:06 [Powertop] [PATCH] embed self-contained javascript Sergey Senozhatsky
  -- strict thread matches above, loose matches on Subject: below --
2013-09-18  9:01 Sergey Senozhatsky
2013-09-18  8:21 Jose Luis Rivas
2013-09-17 21:14 Jose Luis Rivas
2013-09-17 19:41 Sergey Senozhatsky
2013-09-17 19:27 Daniel Kahn Gillmor
2013-09-17 19:02 Sergey Senozhatsky
2013-09-10 18:32 Sergey Senozhatsky
2013-09-07 19:49 Daniel Kahn Gillmor

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.