From f8ef5ecdccfdbc8cd7a779be08938dcaaebf89a7 Mon Sep 17 00:00:00 2001 From: Adam Barth Date: Mon, 3 Nov 2014 12:53:38 -0800 Subject: [PATCH] Convert the directory listing to run on top of the platform Previously we were using string concatenation to build up the directory listing. Now we fetch some JSON from the server and use data binding to inflate a directory listing. This exmaple doesn't work yet because we're missing support for template@repeat, but hopefully we'll get that soon. Also, added support for setRequestHeader to XMLHttpRequest. R=rafaelw@chromium.org Review URL: https://codereview.chromium.org/688413005 --- engine/src/flutter/examples/file-browser.sky | 41 ++++++++++++++++++++ engine/src/flutter/tools/sky_server | 25 +++++------- 2 files changed, 51 insertions(+), 15 deletions(-) create mode 100644 engine/src/flutter/examples/file-browser.sky diff --git a/engine/src/flutter/examples/file-browser.sky b/engine/src/flutter/examples/file-browser.sky new file mode 100644 index 0000000000..6d02f84839 --- /dev/null +++ b/engine/src/flutter/examples/file-browser.sky @@ -0,0 +1,41 @@ + + + + + + diff --git a/engine/src/flutter/tools/sky_server b/engine/src/flutter/tools/sky_server index 0fe0fe91ff..da42f1acf3 100755 --- a/engine/src/flutter/tools/sky_server +++ b/engine/src/flutter/tools/sky_server @@ -4,8 +4,9 @@ # found in the LICENSE file. import argparse -import os import cherrypy +import json +import os import staticdirindex @@ -17,29 +18,23 @@ SKY_ROOT = os.path.join(SRC_ROOT, 'sky') GEN_ROOT = os.path.join(SRC_ROOT, BUILD_DIRECTORY, CONFIG_DIRECTORY, 'gen') -# FIXME: This should be replaced by just json and inflated into DOM client-side. def skydir(section="", dir="", path="", **kwargs): - url = "%s%s" % (cherrypy.request.headers.get('Host', ''), - cherrypy.request.path_info) - sky = "" - sky += "" - sky += '
Listing for: ' + url +'
' + if cherrypy.request.params.get('format') is None: + return '' + result = dict() + result['directories'] = [] + result['files'] = [] for _, dir_names, file_names in os.walk(path.rstrip(r"\/")): for dir_name in sorted(dir_names): - sky += "%s/\n" % (dir_name, dir_name) + result["directories"].append(dir_name) del dir_names[:] # limit to one level for file_name in sorted(file_names): - sky += "%s\n" % (file_name, file_name) - return sky + "
" + result["files"].append(file_name) + return json.dumps(result) -# FIXME: This doesn't yet support directory listings. We'll do something like: -# http://tools.cherrypy.org/wiki/staticdirindex -# but have it spit .sky instead of HTML - def main(): parser = argparse.ArgumentParser(description='Sky development server') parser.add_argument('-v', '--verbose', action='store_true',