Пример графиков XML / SWF, не работающих с cherryPy - PullRequest
0 голосов
/ 18 декабря 2009

Я пытаюсь использовать библиотеку диаграмм XML / SWF с cherrypy. Я хочу генерировать HTML-отчеты с красивыми графиками.

Я пытаюсь представить один из стандартных примеров диаграмм XML / SWF с cherryPy, но по какой-то причине JavaScript не работает должным образом с cherryPy.

Я создал следующий скрипт Python:

import os.path
import os.path
import cherrypy
import os</p>

<p>class index:
    def index(self):
        return open('sample.html', 'r')
    index.exposed = True</p>

<p>if <strong>name</strong> == '<strong>main</strong>':
    current_dir = os.path.dirname(os.path.abspath(<strong>file</strong>))
    print current_dir
    print os.path.join(current_dir, 'data', 'scripts', 'AC_RunActiveContent.js')
    # Set up site-wide config first so we get a log if errors occur.
    cherrypy.config.update({'environment': 'production',
                            'log.error_file': 'site.log',
                            'log.screen': True})</p>

<pre><code>conf = {'/js/AC_RunActiveContent.js': {'tools.staticfile.on': True,
                        'tools.staticfile.filename': os.path.join(current_dir, 'data', 'scripts', 'AC_RunActiveContent.js')}}
cherrypy.quickstart(index(), '/', config=conf)

У меня следующая структура каталогов:

<code>
D:.
+---charts_library
+---data
¦   +---css
¦   +---scripts
+---resources
    +---button_rollover
    +---chart_in_swf
    +---cursor
    +---full_screen
    +---preview_scroll
    +---scroll</p>

<p>

Я поместил файл javascript и все файлы, необходимые для библиотеки, в папку. \ Data \ scripts. (Я также пытался поместить эти файлы в корневую папку, но это тоже не сработало)

пример html-файла выглядит следующим образом:

<code>
<HTML><br />
<script language="javascript">AC_FL_RunContent = 0;</script><br />
<script language="javascript"> DetectFlashVer = 0; </script><br />
<script src="AC_RunActiveContent.js" language="javascript"></script><br />
<script language="JavaScript" type="text/javascript"><br />
<!--<br />
var requiredMajorVersion = 9;<br />
var requiredMinorVersion = 0;<br />
var requiredRevision = 45;<br />
--><br />
</script><br />
<BODY bgcolor="#FFFFFF"><br />
<br />
<br />
<script language="JavaScript" type="text/javascript"><br />
<!--<br />
if (AC_FL_RunContent == 0 || DetectFlashVer == 0) {<br />
    alert("This page requires AC_RunActiveContent.js.");<br />
} else {<br />
    var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);<br />
    if(hasRightVersion) { <br />
        AC_FL_RunContent(<br />
            'codebase', 'http: //download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,45,0',<br />
            'width', '400',<br />
            'height', '250',<br />
            'scale', 'noscale',<br />
            'salign', 'TL',<br />
            'bgcolor', '#777788',<br />
            'wmode', 'opaque',<br />
            'movie', 'charts',<br />
            'src', 'charts',<br />
            'FlashVars', 'library_path=charts_library&xml_source=sample.xml', <br />
            'id', 'my_chart',<br />
            'name', 'my_chart',<br />
            'menu', 'true',<br />
            'allowFullScreen', 'true',<br />
            'allowScriptAccess','sameDomain',<br />
            'quality', 'high',<br />
            'align', 'middle',<br />
            'pluginspage', 'http: //www.macromedia.com/go/getflashplayer',<br />
            'play', 'true',<br />
            'devicefont', 'false'<br />
            ); <br />
    } else { <br />
        var alternateContent = 'This content requires the Adobe Flash Player. '<br />
        + '<u><a href=http: //www.macromedia.com/go/getflash/>Get Flash</a></u>.';<br />
        document.write(alternateContent); <br />
    }<br />
}<br />
// --><br />
</script><br />
<noscript><br />
    <P>This content requires JavaScript.</P><br />
</noscript><br />
<br />
</BODY><br />
</HTML></p>

<p>

Когда я дважды щелкаю файл примера, он работает нормально, но когда я запускаю скрипт python и просматриваю локальный адрес хоста на порту 8080, появляется всплывающее окно, которое показывает следующее сообщение:

"Эта страница требует AC_RunActiveContent.js"

Я думаю, что я сделал что-то не так в моем скрипте Python, но я не могу выяснить, что я сделал не так. Почему javascript не работает в cherryPy, а работает в файле sample.html? Я что-то забыл?

1 Ответ

1 голос
/ 18 декабря 2009
conf = {'/js/AC_RunActiveContent.js':
    {'tools.staticfile.on': True,
     'tools.staticfile.filename':
         os.path.join(current_dir, 'data', 'scripts', 'AC_RunActiveContent.js')}}

и позже

<script src="AC_RunActiveContent.js" language="javascript"></script>

Моя ставка заключается в том, что последний дает 404. Попробуйте изменить строку на:

<script src="/js/AC_RunActiveContent.js" language="javascript"></script>

О, и ваш HTML может также использовать элемент <HEAD>.

...