mirror of
https://github.com/fergalmoran/dss-mobile.git
synced 2025-12-22 09:50:53 +00:00
Initial Commit
This commit is contained in:
495
.sencha/app/build-impl.xml
Normal file
495
.sencha/app/build-impl.xml
Normal file
@@ -0,0 +1,495 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
********************************** DO NOT EDIT **********************************
|
||||
|
||||
This file will be replaced during upgrades so DO NOT EDIT this file. If you need to
|
||||
adjust the process, reading and understanding this file is the first step.
|
||||
|
||||
In most cases, the adjustments can be achieved by setting properties or providing one
|
||||
of the "hooks" in the form of a "-before-" or "-after-" target. Whenever possible, look
|
||||
for one of these solutions.
|
||||
|
||||
Failing that, you can copy whole targets to your build.xml file and it will overrride
|
||||
the target provided here. Doing that can create problems for upgrading to newer
|
||||
versions of Cmd so it is not recommended but it will be easier to manage than editing
|
||||
this file in most cases.
|
||||
-->
|
||||
<project name="app-build-impl">
|
||||
<!--
|
||||
===============================================================
|
||||
helper targets for ant integrations with IDE's
|
||||
(human readable target names)
|
||||
===============================================================
|
||||
-->
|
||||
<target name="-before-build-testing"/>
|
||||
<target name="-build-testing" depends="testing,build"/>
|
||||
<target name="-after-build-testing"/>
|
||||
<target name="build-testing"
|
||||
depends="-before-build-testing,
|
||||
-build-testing,
|
||||
-after-build-testing"/>
|
||||
|
||||
<target name="Build - Testing"
|
||||
description="Create a Testing build of this project"
|
||||
depends="build-testing"/>
|
||||
|
||||
<target name="-before-build-production"/>
|
||||
<target name="-build-production" depends="production,build"/>
|
||||
<target name="-after-build-production"/>
|
||||
<target name="build-production"
|
||||
depends="-before-build-production,
|
||||
-build-production,
|
||||
-after-build-production"/>
|
||||
|
||||
<target name="Build - Production"
|
||||
description="Create a Production build of this project"
|
||||
depends="build-production"/>
|
||||
|
||||
<target name="-before-build-native"/>
|
||||
<target name="-build-native" depends="native,build"/>
|
||||
<target name="-after-build-native"/>
|
||||
<target name="build-native"
|
||||
depends="-before-build-native,
|
||||
-build-native,
|
||||
-after-build-native"/>
|
||||
|
||||
<target name="Build - Native"
|
||||
description="Create a Native build of this project"
|
||||
depends="build-native"/>
|
||||
|
||||
<target name="-before-start-local-webserver"/>
|
||||
<target name="-start-local-webserver" depends="init">
|
||||
<x-launch-terminal>
|
||||
<![CDATA[
|
||||
${cmd.dir}/sencha fs web -port=${build.web.port} start -map=${build.web.root}
|
||||
]]>
|
||||
</x-launch-terminal>
|
||||
</target>
|
||||
<target name="-after-start-local-webserver"/>
|
||||
<target name="start-local-webserver"
|
||||
depends="-before-start-local-webserver,
|
||||
-start-local-webserver,
|
||||
-after-start-local-webserver"/>
|
||||
|
||||
<target name="WebServer - Start Local"
|
||||
description="Starts a local webserver for this project"
|
||||
depends="start-local-webserver"/>
|
||||
|
||||
<target name="-before-compass-watch"/>
|
||||
<target name="-compass-watch" depends="init">
|
||||
<x-launch-terminal>
|
||||
compass watch ${app.sass.dir}
|
||||
</x-launch-terminal>
|
||||
</target>
|
||||
<target name="-after-compass-watch"/>
|
||||
<target name="compass-watch"
|
||||
depends="-before-compass-watch,
|
||||
-compass-watch,
|
||||
-after-compass-watch"/>
|
||||
|
||||
<target name="Compass - Watch"
|
||||
description="Opens terminal and watches for SASS updates"
|
||||
depends="compass-watch"/>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
environment setters
|
||||
===============================================================
|
||||
-->
|
||||
<target name="production"
|
||||
description="Sets the build environment to production.">
|
||||
<property name="build.environment" value="production"/>
|
||||
</target>
|
||||
|
||||
<target name="testing"
|
||||
description="Sets the build environment to testing.">
|
||||
<property name="build.environment" value="testing"/>
|
||||
</target>
|
||||
|
||||
<target name="native"
|
||||
description="Sets the build environment to native.">
|
||||
<property name="build.environment" value="native"/>
|
||||
</target>
|
||||
|
||||
<target name="package"
|
||||
description="Sets the build environment to package.">
|
||||
<property name="build.environment" value="package"/>
|
||||
</target>
|
||||
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Find Cmd
|
||||
uses targets from find-cmd-impl.xml to detect the current
|
||||
install of Sencha Cmd
|
||||
===============================================================
|
||||
-->
|
||||
<import file="${basedir}/.sencha/app/find-cmd-impl.xml"/>
|
||||
<target name="init-cmd"
|
||||
depends="find-cmd-in-path,
|
||||
find-cmd-in-environment,
|
||||
find-cmd-in-shell">
|
||||
<echo>Using Sencha Cmd from ${cmd.dir} for ${ant.file}</echo>
|
||||
|
||||
<!--
|
||||
load the sencha.jar ant task definitions.
|
||||
|
||||
NOTE: the 'loaderref' attribute stores this task def's class loader
|
||||
on the project by that name, so it will be sharable across sub-projects.
|
||||
This fixes out-of-memory issues, as well as increases performance.
|
||||
|
||||
To supoprt this, it is recommended that any customizations that use
|
||||
'ant' or 'antcall' tasks set 'inheritrefs=true' on those tasks, in order
|
||||
to propagate the senchaloader reference to those subprojects.
|
||||
|
||||
The sencha 'x-ant-call' task, which extends 'antcall' and defaults
|
||||
'inheritrefs' to true, may be used in place of antcall in
|
||||
build process customizations.
|
||||
-->
|
||||
<taskdef resource="com/sencha/ant/antlib.xml"
|
||||
classpath="${cmd.dir}/sencha.jar"
|
||||
loaderref="senchaloader"/>
|
||||
|
||||
<!--
|
||||
Some operations require sencha.jar in the current java classpath,
|
||||
so this will extend the java.lang.Thread#contextClassLoader with the
|
||||
specified java classpath entries
|
||||
-->
|
||||
<x-extend-classpath>
|
||||
<jar path="${cmd.dir}/sencha.jar"/>
|
||||
</x-extend-classpath>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Init
|
||||
uses targets from init-impl.xml to load Sencha Cmd config
|
||||
system properties and ant task definitions
|
||||
===============================================================
|
||||
-->
|
||||
<import file="${basedir}/.sencha/app/init-impl.xml"/>
|
||||
<target name="init"
|
||||
depends="init-local,
|
||||
init-cmd,
|
||||
-before-init,
|
||||
-init,
|
||||
-after-init,
|
||||
-before-init-defaults,
|
||||
-init-defaults,
|
||||
-after-init-defaults,
|
||||
-init-compiler"/>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Build
|
||||
this is the starting point for the build process. The 'depends'
|
||||
attribute on the -build target controls the ordering of the
|
||||
different build phases
|
||||
===============================================================
|
||||
-->
|
||||
<target name="-before-build"/>
|
||||
<target name="-build"
|
||||
depends="refresh,
|
||||
resolve,
|
||||
js,
|
||||
copy-resources,
|
||||
sass,
|
||||
slice,
|
||||
page,
|
||||
native-package"/>
|
||||
<target name="-after-build"/>
|
||||
<target name="build"
|
||||
depends="init,-before-build,-build,-after-build"
|
||||
description="Builds the application"/>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Clean
|
||||
removes all artifacts from the output build directories
|
||||
===============================================================
|
||||
-->
|
||||
<target name="-before-clean"/>
|
||||
<target name="-clean">
|
||||
<delete dir="${build.dir}"/>
|
||||
<delete dir="${build.temp.dir}"/>
|
||||
</target>
|
||||
<target name="-after-clean"/>
|
||||
<target name="clean"
|
||||
depends="init"
|
||||
description="Removes all build output produced by the 'build' target">
|
||||
<x-ant-call unless="skip.clean">
|
||||
<target name="-before-clean"/>
|
||||
<target name="-clean"/>
|
||||
<target name="-after-clean"/>
|
||||
</x-ant-call>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Watch
|
||||
uses targets from watch-impl.xml to initiate the application
|
||||
watch process using instrumented state from the compiler
|
||||
===============================================================
|
||||
-->
|
||||
<import file="${basedir}/.sencha/app/watch-impl.xml"/>
|
||||
<target name="watch">
|
||||
<property name="build.optimize" value=""/>
|
||||
<x-ant-call>
|
||||
<target name="-before-watch"/>
|
||||
<target name="-watch"/>
|
||||
<target name="-after-watch"/>
|
||||
</x-ant-call>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
JS
|
||||
uses targets from js-impl.xml to produce the output js files
|
||||
containing needed application and framework js classes
|
||||
===============================================================
|
||||
-->
|
||||
<import file="${basedir}/.sencha/app/js-impl.xml"/>
|
||||
<target name="js"
|
||||
depends="init"
|
||||
description="Builds the output javascript file(s)">
|
||||
<x-ant-call unless="skip.js">
|
||||
<target name="-before-js"/>
|
||||
<target name="-js"/>
|
||||
<target name="-after-js"/>
|
||||
</x-ant-call>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Sass
|
||||
uses targets from sass-impl.xml to produce the output css
|
||||
files for the application's styling
|
||||
===============================================================
|
||||
-->
|
||||
<import file="${basedir}/.sencha/app/sass-impl.xml"/>
|
||||
<target name="sass"
|
||||
depends="init"
|
||||
description="Builds the Sass files using Compass.">
|
||||
<x-ant-call unless="skip.sass">
|
||||
<target name="-before-sass"/>
|
||||
<target name="-sass"/>
|
||||
<target name="-after-sass"/>
|
||||
</x-ant-call>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Resources
|
||||
uses targets from resources-impl.xml to copy resources from
|
||||
the application and required packages to the output directory
|
||||
===============================================================
|
||||
-->
|
||||
<import file="${basedir}/.sencha/app/resources-impl.xml"/>
|
||||
<target name="copy-resources"
|
||||
depends="init"
|
||||
description="Copy resources to build folder.">
|
||||
<x-ant-call unless="skip.resources">
|
||||
<target name="-before-inherit-resources"/>
|
||||
<target name="-before-copy-resources"/>
|
||||
<target name="-compile-resources"/>
|
||||
<target name="-after-copy-resources"/>
|
||||
<target name="-after-inherit-resources"/>
|
||||
</x-ant-call>
|
||||
</target>
|
||||
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Slice
|
||||
uses targets from slice-impl.xml to extract theme images from
|
||||
the application for use with older browsers that don't
|
||||
support modern css features
|
||||
===============================================================
|
||||
-->
|
||||
<import file="${basedir}/.sencha/app/slice-impl.xml"/>
|
||||
<target name="slice"
|
||||
depends="init"
|
||||
description="Slices CSS3 theme to produce non-CSS3 images and sprites.">
|
||||
<x-ant-call unless="skip.slice">
|
||||
<target name="-before-slice"/>
|
||||
<target name="-slice"/>
|
||||
<target name="-after-slice"/>
|
||||
</x-ant-call>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
Theme - this is a legacy support target for extjs 4.1 apps. It redirects
|
||||
to the "slice" ant target
|
||||
-->
|
||||
<target name="theme"
|
||||
depends="init"
|
||||
description="Builds the application's theme(s) images using the slicer (Ext JS 4.1 only).">
|
||||
<x-ant-call unless="skip.theme">
|
||||
<target name="-before-theme"/>
|
||||
<target name="slice"/>
|
||||
<target name="-after-theme"/>
|
||||
</x-ant-call>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
Refresh Theme - uses targets from refresh-impl.xml to rebuild the current
|
||||
theme
|
||||
-->
|
||||
<target name="refresh-theme"
|
||||
depends="init"
|
||||
description="Rebuilds the currently enabled app theme (Ext JS 4.1 only).">
|
||||
<x-ant-call unless="skip.theme">
|
||||
<target name="-before-refresh-theme"/>
|
||||
<target name="-refresh-theme"/>
|
||||
<target name="-after-refresh-theme"/>
|
||||
</x-ant-call>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Refresh
|
||||
uses targets from refresh-impl.xml to generate bootstrapping
|
||||
information for the application
|
||||
===============================================================
|
||||
-->
|
||||
<import file="${basedir}/.sencha/app/refresh-impl.xml"/>
|
||||
<target name="refresh"
|
||||
depends="init"
|
||||
description="Refreshes the application bootstrap data.">
|
||||
<x-ant-call unless="skip.refresh">
|
||||
<target name="-before-refresh"/>
|
||||
<target name="-refresh"/>
|
||||
<target name="-after-refresh"/>
|
||||
</x-ant-call>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Page
|
||||
uses targets from page-impl.xml to generate the output markup
|
||||
file and associated microloader / app manifest
|
||||
===============================================================
|
||||
-->
|
||||
<import file="${basedir}/.sencha/app/page-impl.xml"/>
|
||||
<target name="page"
|
||||
depends="init"
|
||||
description="Builds the application's HTML page.">
|
||||
<x-ant-call unless="skip.page">
|
||||
<target name="-before-page"/>
|
||||
<target name="-page"/>
|
||||
<target name="-after-page"/>
|
||||
</x-ant-call>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Resolve
|
||||
uses targets from resolve-impl.xml to detect dynamic app
|
||||
dependencies using phantomjs
|
||||
===============================================================
|
||||
-->
|
||||
<import file="${basedir}/.sencha/app/resolve-impl.xml"/>
|
||||
<target name="resolve"
|
||||
depends="init"
|
||||
description="Resolve application dependencies dynamically.">
|
||||
<x-ant-call unless="skip.resolve">
|
||||
<target name="-before-resolve"/>
|
||||
<target name="-resolve"/>
|
||||
<target name="-after-resolve"/>
|
||||
</x-ant-call>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Native Package
|
||||
uses targets from packager-impl.xml to run native packager
|
||||
applications to produce stand-alone installable web apps from
|
||||
this built Cmd application
|
||||
===============================================================
|
||||
-->
|
||||
<import file="${basedir}/.sencha/app/packager-impl.xml"/>
|
||||
<target name="native-package"
|
||||
depends="init"
|
||||
description="Builds native packages of the application">
|
||||
<x-ant-call unless="skip.native-package">
|
||||
<target name="-before-native-package"/>
|
||||
<target name="-native-package"/>
|
||||
<target name="-after-native-package"/>
|
||||
</x-ant-call>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Help - properties
|
||||
displays all current ant properties
|
||||
===============================================================
|
||||
-->
|
||||
<target name=".props" depends="init"
|
||||
description="Lists all properties defined for the build">
|
||||
<echoproperties/>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Help - docs
|
||||
displays the help message
|
||||
===============================================================
|
||||
-->
|
||||
<target name=".help" depends="init"
|
||||
description="Provides help on the build script">
|
||||
<x-get-project-targets property="help.message"/>
|
||||
|
||||
<echo><![CDATA[${help.message}
|
||||
This is the main build script for your application.
|
||||
|
||||
The following properties can be used to disable certain steps in the build
|
||||
process.
|
||||
|
||||
* skip.page Do not build the HTML page.
|
||||
* skip.js Do not build the output js code file(s)
|
||||
* skip.resources Do not copy resources to the build directory
|
||||
* skip.sass Do not build the SASS.
|
||||
* skip.slice Do not build the theme image slicer.
|
||||
* skip.theme Do not build the theme images.
|
||||
|
||||
The following properties can be used to modify the build process.
|
||||
|
||||
* build.compression.yui Specify yui compression for the build
|
||||
|
||||
* build.compression.closure Specify closure compression for the build
|
||||
|
||||
* build.compression.uglify Specify uglify compression for the build
|
||||
|
||||
* build.options Set general options for the build
|
||||
(eg: enable a debug build)
|
||||
|
||||
To modify any of the previous build specific options, see:
|
||||
${basedir}/.sencha/app/${build.environment}.properties
|
||||
|
||||
* build.operations Insert commands into the compile command
|
||||
for the build.
|
||||
|
||||
* app.page.name Set the input and output page file
|
||||
for the compile command.
|
||||
|
||||
* build.classes.name Specify the compiled js file
|
||||
|
||||
|
||||
For details about how these options affect your build, see
|
||||
|
||||
${basedir}/.sencha/app/build-impl.xml
|
||||
|
||||
These options can be stored in a local.properties file in this folder or in the
|
||||
local.properties file in the workspace.
|
||||
|
||||
Alternatively, these can be supplied on the command line. For example:
|
||||
|
||||
ant -Dskip.sass=1 build
|
||||
|
||||
To see all currently defined properties, do this:
|
||||
|
||||
ant .props
|
||||
]]></echo>
|
||||
</target>
|
||||
|
||||
</project>
|
||||
24
.sencha/app/build.properties
Normal file
24
.sencha/app/build.properties
Normal file
@@ -0,0 +1,24 @@
|
||||
# =============================================================================
|
||||
# This file provides an override point for default variables defined in
|
||||
# defaults.properties.
|
||||
#
|
||||
# IMPORTANT - Sencha Cmd will merge your changes with its own during upgrades.
|
||||
# To avoid potential merge conflicts avoid making large, sweeping changes to
|
||||
# this file.
|
||||
# =============================================================================
|
||||
|
||||
enable.touch.themes=true
|
||||
build.output.markuponly=false
|
||||
build.watcher.targets=-watch-sass-dir,-watch-compiler
|
||||
build.trigger.targets=-refresh
|
||||
|
||||
# override the default sass directory
|
||||
compass.sass.dir=${app.sass.dir}
|
||||
|
||||
build.options.product=product\:touch
|
||||
build.options.minVersion=minVersion\:3
|
||||
build.options.default=${build.options.product},${build.options.minVersion}
|
||||
|
||||
|
||||
app.phonegap.dir=${app.dir}/phonegap
|
||||
app.phonegap.www.dir=${app.phonegap.dir}/www
|
||||
282
.sencha/app/codegen.json
Normal file
282
.sencha/app/codegen.json
Normal file
@@ -0,0 +1,282 @@
|
||||
{
|
||||
"sources": {
|
||||
"index.html.tpl.merge": {
|
||||
"5c2622f8945945e183e62230dbbcdc870ee41e31": "eJydVU1vGjEQvfMrJhvlEnVZogoppYAq5UONlKqVQg49eu0BHLz2yh4gKMp/z3gXkuVDRakPyGY8857fjN72T65/X43+/rmBn6Nf98NWf0qFgUJYPcZAgyQBI+xkkKBNHx+SGEehhi3g1S+QBMip8AH55uPoNr1M1iHSZHD4YkWBr/2sPtWRQCuDQKsSBwnhM2UyhHVWtbLz84/DOdw8i6LkBDcGYUFbTVoYME4obSd8VloKcr7dzLkj0AE8SlcUaBUqIAczxBJoygERoOBCBdfhbelC0Hmk5KD0bqEVctlAwhKMEVUu5KxZfDnVkQ5N0TNEcHMvkWt6hEDaGMgxEosEGXfsPGMijLUPBKQLbJTK3vdR8y+QO7WCl48LMYB6MqUeXHQ6Z9+3IpHWxLu5Val0xvkenF58u+xed95vvbbet6eiLO9rye42iu0gsQwsrbM9EHlwZk64jUeu7EF3l0Uh/ETbtAqmF93yeSeJ+5sKoydcVqIl9NvxpVY0PfS6zbu/dnZLpkvMZ5qrxgZGwmmcMWa9/8JjiWruRf3kTrsbjt3WzL7eSVaduWk7juOIR2E0T2KNY7RF0eB1rEVDnreXY22/rdY2C6VDacQqkoyYaW6cnH1W4tx5hT71TGoeuEt77a27z/LBXmjd2f3irhRS0ypqfnlQiB8b+Bmuxp57Gw71dluVztmOTLtIW8HXrVP3SPI/UuPc/h9wvetnlRmujfEkTWHEXhEbxi5i3BKKObtGjuxdJVuaJSGpspQHtGy7cMX+JmzlbvlcGwUrdqOoloki8cRBmm5cV3oda6hBUmjpXeVPPmn68JNYiPpaAsHLQdIOFUzGBbNGUqZwwexKtlZqP7F38zOqNP44ZPXXoR+tbI2s9KKCPdDEhu3Ha1wo/n7qv/W2n9WITICtdNh6Az5F4Bg\u003d"
|
||||
},
|
||||
"app.json.tpl.merge": {
|
||||
"a36200bbd84dffd4133a6074252425c15a5f25b1": "eJzFWMtu2zgU3ecrCGOAtoFjrWYTTAtk0hTNTJoWdYpZtF3QFGWxpUiVpOwYgf99zqUeluwkrdOiERBIscR7z33wHJI3BwxXcngY7+yQXeWS8bLUSvCgrHnimeGF9CUXcswqL1M2W7GpNCLn7NQWBTcpC5bNpZGOB8mE5t5L35hL4n1EJkbHbHRDD+vR+OA2r5nSkpU85GQv5Mpv4cicNYG9vnpzwVIrqkKaMGZOarxfyP6YyRdvTTQ3RKFMKq9fh0K/gxOCE3+Y5PjlDkh85q2uENWH9xe3oWLKsFQupLYlwWHSLBRQ1tDURB5jRDfYVWbHQOsMpla2cmwpZ2zm7NJLx9LKKTPv2x8zOZkDdx5CeZwk2gquc+tDUqxgM+mFM2kMb4KB3wXXlWR4MFKmKOQyl4bNKqVjBZ1ErEhkxDHMfCpLCdtGKOmZypgK+PpbpTCEAelCuiOvUhlNVE501Ue4PDDuJDMWd4E3Xs1Q5YXidbn9ygdZsNLZYIXVk2HBKqdRJlNpvVueC+UDsxnjWrN/+IJPhVMlnKD5gqe6UOadmueoyrUUVSyXdal0rRN2xkWOWOCfioK3sy9SBLZU1ILUkFZru6QaZNYVPBy3A+N1M/gv4i2bvqJ7EmziIya044glCXvXtDYFPqY0xvrVeUBGiwoBzeSPdXTPqZOFDTS7gkN1BxecPn1bUuRcP9sZed+FkUfspcx4pZFNIKlQ/0wZdM3TjGsvV8/oV6/mMM14P5RlrpDWpUJdEI2wpZLp/r6npRQqW9VBIVcxE3WqkBFWB73jkNoMsO72O6rKlMdsjVKpAx/9qmwB8nkW/fuIHM7HPdARnTV6Rdi05TT9rCFKBX/u7YsxgdaFCWXivIvZnwbr+FyiUkHp2nU34UHWZi7TyQOiavOEtErDafJamu+YH0dcgaToLauzStNkE/NDfGWY6iNWSG5gA8+t4babCiSupq1NauvY/G6pr49m1gYfHC+3Z8dPlfrcpESNkvqwT/6FBbhY444vVxPG9jUP3fF1Z/tNU3cdjZJHXpANcacgYYHKr8BtmBWZdHC7/4Rr+LJT8Y5zoO8qk2CmurYogRLO1i3stlUmXushh4P8jtnHg9bXzUHfc8eYN5nDymBp3VdiyXXi4wLjKNhK5H+FUoMCno+0mjmOSJ8/Z09A+09GL45w+yvB+xdEsuOh7d36d+/X4+8B6ob+asN1ZrdNzsCvuiXxMQldr81qFUUnxLXVUI1JXAWYBB8a/HX90RHPRuObinQ+t6lwE0R8+ny/5p5Op7eKrTJCV/4RxJZsT4R/JK19MKM8otI+ktD+TKp+l8z+jMpGqURbYwlvDXgaArHcP8zforu/THbvUwCakz8gAd3mIcGAhCYiDdziyf0564OvK8KrYEEroFSN9thsV6nEk07lnsbt5Z+DPV78pBPCZz1exVap5tZhwBh8SmMAcxNrB6mG1VIpsVbHoKcnp6/P2JuTy/NXZ9MrbK3EZo/Yc1BntfHwcZig3h6we/F5vBeKy7Or/96+//d+90YGUutdAIcP9vvq5OLi75PT7zgGJ+oZF9Hz5/jzerfoZ9cQ5812dEBVUC8LldkI47B43aBBaL3uVAXmf78x++8gxXe88oG7UJWju/r0FXVV0lvP0VEJui6gzC5GAAWwruk8hLIireyvBf240zVQkkoR/7zS3GH/WzraeQPb1oFItDgM9NOniV+YP+7E+bID2B7V+ECwaE0ANwtlK0/7+bSKRWygTdglyUhcyRBg5CnQmrmdhx3JRoLpktA6beP6KktaYQQu6gUp/JSg2cZKXHRkNTV6fB6WEqmqKWMrcu5EDt1vD4Kaf285BWo7tUTLEe/Hw7D6uCQegHTrYlGkzToLoOigY7ut6vOSLtm3UZVR3yrZYydkJd2Qe4+TmpM4TpnGYuE6fjTQp69y5bu11yWtqIj2iLB8biugNNi5uIbFezq2dQKj0rg6ryKy83Q9Olgf/A/eSIqN"
|
||||
},
|
||||
"packager.json.tpl.merge": {
|
||||
"79175610d9330cc0582cd66bb8103f2e24409b4a": "eJytWN1z0zgQf27/Ck144GNCfJRCmfJCSFPIUZJMEg7mGCYothLrsC2fJLfNdXp/++1K8mcTtw/XYZhEWu3ub783N4cH3rNnhwfkGXnnrzfkZq4lTza3hKZpxH2quUjGNGaWQrK/My5ZYL4tQq4I/NMhIwmQELEmW5HJ6tMuuQq5HyJZwFUa0S0LiEjMm4Bdcp8BAbPf4RnS8URpGkUs6JFJQkaTeRdu4VyFIosCElPth0Z+m1zgYu77cMTIVIpLruAYkJGpkMC/hyy8w4NOA2fntHODTG873cMHmGa0xxT4n0opwFsLeUe7FmT/P6pR8BBMqywJIjZnLHCQ+kSDX/yQSuprJokyhM6d4KEkUGTFAB06rlBwdIY67tUvV68qDbT7NP12Ppz++Xp43qLhJZPIzH69Jxwd7S4bFiaq8QMlXvR+2yF9lGi2YbIQPxDBfbnA7ZNCCR+e7M4NGxrEpwmRbA1PtCBcE6oIBYdwiIkki1dM9sgXZfIm2pp46ieBFDywNKqJCFVEPDvQTFZ/MV/fEu6LxByfAzeOgQgOo4qVagAQLkkg/CxmibbOpSuRafOWKP4PU6eGRah1qk49D9KZRSIFbREj6/ki9iK+klRuPS6U96jGzMsUk+wayDlLfOYBU5+lOqORF4sVj1jIN94ITtUophumqp97oY5NKBUQnEF2wiAfhNhAOF7QLPFDOEYAimwyHrASQR2AZWcgGDovxSyAaqW8jC/NUcQT+Ia8lgFTfJMsIyegUA8tSwCnIq9OuuTkqEtevDgmwJy8OD5+W3jRULx83SXHb8zlydFbwk24EKggvwBxzel5xIBITD6UYRHhW1NRIQ58mgcF3nVOyc3hwUHn5WuIC8kUBKLvlLeGXTrmL1/3UkiGLhIfv7mH+PhNSfzqZA9xSXJytIfkX57SoKQDG+0hfHd0XSE73kdm+OW0hwe3+0sKT9JMT6kOWzI6Eq605Rk8h3gNKVmIDArhUT2hJYvg0yWzoQevQZ0132TSslhDXBfZWggHGD2vpfBB0t2vJnRRCAYMdywKutY1UCy54jqEgk0UvcTW+pn+gs+ZeUO1kwHxpk2vToTGOm7wGj3NTdfEXky3ZMPwHkAyrONKAXA/g+IDyH2Rbl2BRpSl8giz55mS1Ya2ZrEWwA3L7uyyP8/YKtv8zBssja7oFrsWphzkXWJUR0xUojFWMdcam1XOCd0ImQZ1F5LdSFcac+45Gsd2Qh/Lzc8ZM3WnkIR2TpnP1xxsnZuipjFYwyjXYgmYljTgiu9pNzmZCwGEc8WjCHWQWZJU8ZSW6V9SHtEVxIVI8UShCWw1RHST+ZzHGTAWsnKWf3T53/g6rDxAuLlegLTKrwWwHQgX27Stw7qpUQOVDd07Q1ITvev5hstoXfjblXukWFdbiHaCMAcSBqVFQQcrOdxjuWkoXKiYb7Sw0peEY38uZ6ASLViouG3LDCY1RBSgZEUxqAbCnUpVedCrUeeGtbN3u0HyIaVBAWK+8iQQV+X40dAPUHlYNTwtvKomWI0ehrIfcaraV40mROvkc6NxIIwPbSJurV9B7cn8G2wlzIaJllvTN2mmBczfwCjCGQuQGVkV9nmJgdqB+N3CUg7ZpXijLHZoiMG/MgW1GMalGCdiM+HjOIczC7umeNh1vb6GxYIENh0bUOQsn01OyUzARKjJmcg2IONJ//3gbHj+4ePo96cdU6CNDijeyMbafYdJp1T2K0aAhUSbEVZxcrdq0QTmdiyNVcvuigLjPwgDbNgPCGmlroTMkx3qmjtwhfYKpuKippIgM9tI1WQwTMKOsTMYLaNWTdJ8WYGtBSO0ogYYwk2SBRF+Ml31SX86XY77n4c9O7UWFE+d2vm05kuGSlIbWAmY8iqJBA3IWorYLkyPVSkAwaW1lampYCsa8JIFb9aBZkMdV2539NE0U2GNA3jfhTMULdOzCAxepuN1sDywONXbfGQNRPJYY4PdwaeYKQAMLiJF0OzVtxWlCn7tLIRVl+VVbH72Kc+0ZikDaDnVrj3RSamWM7cfPIertp8JLFV/OrpAYTU13R2BSxLhbbe5t1YURyxg0G5lWYTAic3qbVcyTbD3nz5kkwGIMLTxa/jAnxvRdp+yHeJ9PhSK/HcYCBAJU3Yq4BEGZT5toObgTlpRM6YJxcX3iTtcgn3AXCJSucWeFr9P1G0Dxn2DliTur27QvpR0+92a9QekKpMxV2gn2xzMNZqscmFHAzC0mfRWWORrM8KTorvBTv2U2EUyA7QRh6LZ4FXthlUmLinWIoOsfoADzFZqtl136n2mCV8zpXulOOOMR/3BYDifLwcfh4NPo/FyOptMh7PFaDgvykGpX+f0e2E4/OuMxovhbDxcgEVr544p3HydzD4t54v+YtikGUAtm/Wbp3+M3s92EDuG56PxcHkxGfQXo8l4D81g0p/N91MN+hcXy+nHyXjYKS5+3E2tRiQI/PHA/p6gWkbGKpkNDDMLNF0J82KR9NUnsD1/x40T67GkXNv9M8JfwHyasgu2bh7N+CZ0Z/mjL6mC7DuDqg8r6Y/D28P/ACQ3720\u003d"
|
||||
},
|
||||
"app.js.tpl.merge": {
|
||||
"bf7e5518d2efd28e0a64077e1e7666428cf994ae": "eJx1VdtuEzEQfc9XjILQblDkpCEtEFRxKTxEAlRxkxDiwV1PErdee/GlSajCtzP2ZnMhiR/2NnPOzBx7Zh8ey7Iy1l/z4o5PMS9MyRzqYsZZ8FJ1Hq96T1pA6+tMOphIhUD3KWq03KMArgWESqTnmyV8SVC4KgWDHyZAwTWgkB78Bs5d4tOIgjATY2FpggVeVUoW3Euju3ATIgIdJrCDuVQKZvwewRu4QSjRTlPARLUNCvMZaqBwFVpiLh0URmCTLlGD5+7OgQvFjBLZGPSU8pknspIAynUJqL01SqF1QDneS5y7VG0KYYPWEdWutYrZkwxTywW2WSsRjQVypZZAZj1FFzPfijA3QYlYiZKlbHQsjfNksXdbszAaE5vUYEgRC5XiBbHlTQlX2zw7DMaTXTVIfW18rVZSOVE1CcWQUdztZkaxulG+pHdljQgFbRi0awaSZEJ75NtUCPeRMPEl57idsUSLzijap5LrEMtnrSe9Vuv9wrOdDc4f6iPASxxB9kCWT/S4yrq1chZ/B0lEI/iZ3uPKIsVHdI4O6VuzyJLh1xqQNmfP+yOXet9HUvYjeNi6nD/LKHjMN1hStBcdXG9MV1bpKeWy8Xw2OOX5V1Zc/O9+djY85f96sDjwHp70TuwNJCFWTTEu2q8tUrtWxqEYgbcB11bnufWhGpek1V7JTwf9xfCivx9v7d1bG9lttZffxbC/eDE4gVkbDwS7eL446/eHx0GN9QA1jN8Hp1Br64F+508vFoN+//lx2MZ8qPuLaBiewjXmQ/EVD9RhI5jQLZ3mzo7GvR68Q0cduYwDDB7R2f5guKBZMdYiHn+aJaiwRO03mHi0J2qZZ0ecsw4TNV/eednaDTPW0kuu5B9MkUo68akR9mi/04c43hkXIo8fCovU6vm26VjEsNQvHYqwW6jR3+rJfqLW1JJuyuJckLbMN4a42m+2/Q41T7u775F+KTtjgSa8g9tAQ5CGG22Gm4Q4QG+QBm7zj0lTlMYmvZDfPU09AjL4jIqEA23mr/6Lssmc/ine6LHYraBZcgIbO1xeXkK2RJcd84xrLrUwc6ZMnTazKXi+Vm93rVrH3xqhWyt6+geQsUAZ"
|
||||
},
|
||||
"config.rb.tpl.merge": {
|
||||
"e254e92dd21bc9ecb27f3b8251d67dfbc79fa1af": "eJxlkMFOwzAMhu95Cqs7bEiQB0DaCTGEtAPiBSIrddtAG5c4ASrEu+N00kDjYtl/7O+PvYEHypAHgjYk8pnTohVWKQh4jl3oS8IcOEIXRgL6DJIFQjQ6AHs4qGg1jTjRzrnD4/HeuStjNnBkbFeyUPQD3mQufoAuaeMHp1fAknlSssdxXKwZa/tKe+EQd4q8hq2123P8Oo8+YR6+q5RIuCRPUgu1mjRbve94mlEuFhAjqrlZp/XjamD8b3nh3FjbaNSGZgU+01vRAwHGBbBtQ+XhqPyTzzyWPkSBgRJZEybsSdyfA/0Dn1qUzSXPJTvJix53D7eVqGsJtYbie0gcJ4q5vsyJ2+KrsfkBl52Ucw\u003d\u003d"
|
||||
},
|
||||
"app.scss.tpl.merge": {
|
||||
"3d3f6b023c31a4e49cd626dd27cff9474aff32d7": "eJx9kL1uAyEQhHs/xXRnS8nRx40lK0Xq8wusYc8QceyJH5/99gHsOh3MDLMfqxQuljGL97K5cEPeBN4FTnDLKjEjV9vwTMVnTBy0JVykaNuMhUf8zHhKAUXGtThvaslOKRACb6/MByIvcud+AwXTO8mY9jBCtoDzNEECsqyQudtXStzl/Wadtq3SJZCPTOYJF7Qvhk09vEpoXcffVCtm5/kw7k5v+iF15M/ckNX7H8Pxf1+R9zXTZp5LyrJAi2HcpG7FcuRx7N73g5bVV60il9SXV8GdrhSLe7jw1UKnN2rX90NJHIfD8Q/mSX+o"
|
||||
},
|
||||
"build.properties.merge": {
|
||||
"c6e9ce3ed0c79ce24c58d6bc68741d0a8f51e02b": "eJytUbtuwzAM3P0VBNIx0dItgIeiU4c+0AbdFYu2icqSQFExgiL/Xjq10yLoWC0S78jjUVxB/Z+nWsGupwwteYTE8UAOM9gA8YDMGkCKFATayOCwtcULHCyT3XvNU4QCOqAAKjTz2ahOQhbCbKqVEg+PL8+vu7unHWzgDUPTW7gfHIzkPQzIHcIxFgbFQ6eqI0kPJBniGMAVptBBSR1bdxaEXQR7iOTUmmAQsotKE0PrqdHKb36wH1Ott0quIY+IaYqXPhJVTJbpJ+X//doKw/RNRmJpeiM9Dphr4YLVvpB3JhZJRcxg+aOkGPyxbq3PCztaaXpkI5N7yfXmDGyyzXnjiNdz3MQhqXueq4Sp635XMbaMua90ustK1cplmZMeqB42EvlYTXKKmAk2Ctc3nzalS3iqFu9JKIbzql1ppJ7v7XnWq5yBwjty1nf989zeXmXNhrThnx1O62viR0tdfQH7kQwQ"
|
||||
},
|
||||
"native.properties.merge": {
|
||||
"07d1a1ee61bad4a32197342ffc02dcc8402c1813": "eJytkUtuwzAMRPc6BYF0mQjoAbwouuqiH7S+AGPRDhtZFPRxEBS5e+kkBtIC3dU7znCeiPEKmv/8zAraHWfo2RPEJBM7yoABZKKUdIAoHAr0ksBRj9UXmDAxbr3uqcKBHHAABW0re2cVEikVPmPcEso3ujUr3X56fnt9bx9eWtjAB4Vuh/A4Ojiw9zBSGgiOUhOoHgZlHbjsgEsGOQRwNXEYoMYhoTsDoRXASdjpvYVCYVwonYTec6fJiz/ifs56VHMN+UAU53l5p4jCylLJTP7fvhVIYW4PjpX1uDEmypklmEt9N4rVjebeXNZtLloneglkRwzcUy5NSZXMNSixaCY3d18/ZutoWwfrOM+U0/q37WUYKP3tX//fyWCMduQuiRftPNmAIzVFr9D27Gc2Ju85qlp4ok3Ebo8DNT36TOYb0kbmEg\u003d\u003d"
|
||||
},
|
||||
"package.properties.merge": {
|
||||
"3227481d91059b21defcf41e7c96aca501184796": "eJytkc9OwzAMxu99CkvjOCLxAD0gThz4I+gLZI2bGdI4cpJWE9q7426rNJC4kZu/z/7Z+rKB9j9fs4FuTxkGCghJeCKHGWwEnlBEC0hMscDAAg4HW0OByQrZXdA+VSiiA4qgoF2l4IxCEkqhE8atQ/lKN81Gux+fXl/euvvnDm7hHWO/t/AwOpgpBBhRPMKBq4Dq0StrprIHKhl4juCqUPRQkxfrTkDoGOzE5PTegrGQXSk9xyFQr5Nnf7Sfy2ywam4hz4hpqdc9hRVW1kgW8v/mrUCMS3pwqKTHjUkwZ+LYnOO7Uox2tHfNxeBUVMvtzdeP2jjcVW8c5QV63P62A3uP8rd/+Z9jY1MyI/XCgTVTMdGO2BbMRdMxH7lpvgH3W9AR"
|
||||
},
|
||||
"testing.properties.merge": {
|
||||
"004322eb00e7dbb83fc2fcdf96fcd4949b9e208d": "eJytkE1OwzAQhfc5xUhlWXyDLhArFvyo5AJuPHEHnBlr7CRCqHdn0hIJkNjVuzdv3mf7bWB3zdNsoD1SgZ4SQlaZKGABzyATqpqALMQVelEI2PsxVZi8kj8k27MJMQYgBgMdRkrBGSSjVjpjwhoqP+au2dj2w+PL8769e2rhFl6Ru6OH+yHATCnBgBoRPmRUsDlHY81Uj0C1gMwMYVTiCGOO6sMZCK2An4SCvbciV/IrpRPuE3WWvPiDf1+yyZu5hTIj5kWv91QxWF0rWcjX7bu5tCS5knDZ3Xz+0i7gYYwOeen3tP3rJokR9V/7u+tT43N2A3UqSawfdewH3FUs1X7q3krTfAEJRr1D"
|
||||
},
|
||||
"sencha.cfg.tpl.merge": {
|
||||
"d2e6e42720f88befc892f12df5fd7bab587f7879": "eJxtUDEOwjAM3PsKSzAi6MaUhQfwAhaTujTQNpHtClWof8cpamFgSU53F/sumNK+x47cK59TUaARNRt+Rn641wrPX9m3KJJQG7e9DGV5PGWyCjwdMrjL7g9dFBvQJggkjolYR5BEPtSBBBB87DoEoYSMShW0QRRiDXmJmNorhj70NxvCJHFgb880mpLGfGtDcB1CW4HtI6+RxznpYt7Pg9wn/mzMwZb4uZ71MdsqTYefDp+feQN/i2pK"
|
||||
},
|
||||
"production.properties.merge": {
|
||||
"ae3049a5e12609718b8e3bd82a2264347f69262f": "eJytkU1OxDAMhfc9haVhOeQGXSBWLPgR9AJp4raGJI7y0wqhuTvuzFQwSOwmO/s9f7Ged9Be8zU76CbKMJBDiIlnsphBB+AZU5ICIlMoMHACi4OursCsE+neiU86FNACBRBQX8lZJZCIqdARY7eh/Kuvmp24Hx5fnl+7u6cObuENg5k03HsLCzkHHtOI8Mk1gfTDKKyFygRUMvASwNZEYYQax6TtEQgdg56ZrOxbMBTSG8VwGBwZmTzpXn+ss06LuIe8IMa13v4pLLCyRbKSr5t3g2HNTll0Ree2pIpby2gzofI60IC5XEgJs4RhxMM+SpGJw8lwCv1sQ9+jtWh/IIN2GZuzi2ORudzefF3UsktfR2Upr5DD/q/seBwx/a+fT3xodIzKk0nsWM6SVNAeW7m7rWZ1qvfcNN82PutW"
|
||||
}
|
||||
},
|
||||
"targets": {
|
||||
"index.html": {
|
||||
"source": "index.html.tpl.merge",
|
||||
"version": "5c2622f8945945e183e62230dbbcdc870ee41e31",
|
||||
"parameters": {
|
||||
"viewNamespace": "DssMobile.view",
|
||||
"frameworkName": "touch",
|
||||
"frameworkPath": "touch",
|
||||
"senchadir": ".sencha",
|
||||
"appModels": "",
|
||||
"appControllers": "",
|
||||
"appViews": "",
|
||||
"uniqueId": "7751b424-8a34-4ee3-aadd-57742640eb18",
|
||||
"appName": "DssMobile",
|
||||
"modelNamespace": "DssMobile.model",
|
||||
"name": "DssMobile",
|
||||
"library": "core",
|
||||
"controllerNamespace": "DssMobile.controller",
|
||||
"appStores": ""
|
||||
}
|
||||
},
|
||||
"app.json": {
|
||||
"source": "app.json.tpl.merge",
|
||||
"version": "a36200bbd84dffd4133a6074252425c15a5f25b1",
|
||||
"parameters": {
|
||||
"viewNamespace": "DssMobile.view",
|
||||
"frameworkName": "touch",
|
||||
"frameworkPath": "touch",
|
||||
"senchadir": ".sencha",
|
||||
"appModels": "",
|
||||
"appControllers": "",
|
||||
"appViews": "",
|
||||
"uniqueId": "7751b424-8a34-4ee3-aadd-57742640eb18",
|
||||
"appName": "DssMobile",
|
||||
"modelNamespace": "DssMobile.model",
|
||||
"name": "DssMobile",
|
||||
"library": "core",
|
||||
"controllerNamespace": "DssMobile.controller",
|
||||
"appStores": ""
|
||||
}
|
||||
},
|
||||
"packager.json": {
|
||||
"source": "packager.json.tpl.merge",
|
||||
"version": "79175610d9330cc0582cd66bb8103f2e24409b4a",
|
||||
"parameters": {
|
||||
"viewNamespace": "DssMobile.view",
|
||||
"frameworkName": "touch",
|
||||
"frameworkPath": "touch",
|
||||
"senchadir": ".sencha",
|
||||
"appModels": "",
|
||||
"appControllers": "",
|
||||
"appViews": "",
|
||||
"uniqueId": "7751b424-8a34-4ee3-aadd-57742640eb18",
|
||||
"appName": "DssMobile",
|
||||
"modelNamespace": "DssMobile.model",
|
||||
"name": "DssMobile",
|
||||
"library": "core",
|
||||
"controllerNamespace": "DssMobile.controller",
|
||||
"appStores": ""
|
||||
}
|
||||
},
|
||||
"app.js": {
|
||||
"source": "app.js.tpl.merge",
|
||||
"version": "bf7e5518d2efd28e0a64077e1e7666428cf994ae",
|
||||
"parameters": {
|
||||
"viewNamespace": "DssMobile.view",
|
||||
"frameworkName": "touch",
|
||||
"frameworkPath": "touch",
|
||||
"senchadir": ".sencha",
|
||||
"appModels": "",
|
||||
"appControllers": "",
|
||||
"appViews": "",
|
||||
"uniqueId": "7751b424-8a34-4ee3-aadd-57742640eb18",
|
||||
"appName": "DssMobile",
|
||||
"modelNamespace": "DssMobile.model",
|
||||
"name": "DssMobile",
|
||||
"library": "core",
|
||||
"controllerNamespace": "DssMobile.controller",
|
||||
"appStores": ""
|
||||
}
|
||||
},
|
||||
"resources/sass/config.rb": {
|
||||
"source": "config.rb.tpl.merge",
|
||||
"version": "e254e92dd21bc9ecb27f3b8251d67dfbc79fa1af",
|
||||
"parameters": {
|
||||
"viewNamespace": "DssMobile.view",
|
||||
"frameworkName": "touch",
|
||||
"frameworkPath": "touch",
|
||||
"senchadir": ".sencha",
|
||||
"appModels": "",
|
||||
"appControllers": "",
|
||||
"appViews": "",
|
||||
"uniqueId": "7751b424-8a34-4ee3-aadd-57742640eb18",
|
||||
"appName": "DssMobile",
|
||||
"modelNamespace": "DssMobile.model",
|
||||
"name": "DssMobile",
|
||||
"library": "core",
|
||||
"controllerNamespace": "DssMobile.controller",
|
||||
"appStores": ""
|
||||
}
|
||||
},
|
||||
"resources/sass/app.scss": {
|
||||
"source": "app.scss.tpl.merge",
|
||||
"version": "3d3f6b023c31a4e49cd626dd27cff9474aff32d7",
|
||||
"parameters": {
|
||||
"viewNamespace": "DssMobile.view",
|
||||
"frameworkName": "touch",
|
||||
"frameworkPath": "touch",
|
||||
"senchadir": ".sencha",
|
||||
"appModels": "",
|
||||
"appControllers": "",
|
||||
"appViews": "",
|
||||
"uniqueId": "7751b424-8a34-4ee3-aadd-57742640eb18",
|
||||
"appName": "DssMobile",
|
||||
"modelNamespace": "DssMobile.model",
|
||||
"name": "DssMobile",
|
||||
"library": "core",
|
||||
"controllerNamespace": "DssMobile.controller",
|
||||
"appStores": ""
|
||||
}
|
||||
},
|
||||
".sencha/app/build.properties": {
|
||||
"source": "build.properties.merge",
|
||||
"version": "c6e9ce3ed0c79ce24c58d6bc68741d0a8f51e02b",
|
||||
"parameters": {
|
||||
"viewNamespace": "DssMobile.view",
|
||||
"frameworkName": "touch",
|
||||
"frameworkPath": "touch",
|
||||
"senchadir": ".sencha",
|
||||
"appModels": "",
|
||||
"appControllers": "",
|
||||
"appViews": "",
|
||||
"uniqueId": "7751b424-8a34-4ee3-aadd-57742640eb18",
|
||||
"appName": "DssMobile",
|
||||
"modelNamespace": "DssMobile.model",
|
||||
"name": "DssMobile",
|
||||
"library": "core",
|
||||
"controllerNamespace": "DssMobile.controller",
|
||||
"appStores": ""
|
||||
}
|
||||
},
|
||||
".sencha/app/native.properties": {
|
||||
"source": "native.properties.merge",
|
||||
"version": "07d1a1ee61bad4a32197342ffc02dcc8402c1813",
|
||||
"parameters": {
|
||||
"viewNamespace": "DssMobile.view",
|
||||
"frameworkName": "touch",
|
||||
"frameworkPath": "touch",
|
||||
"senchadir": ".sencha",
|
||||
"appModels": "",
|
||||
"appControllers": "",
|
||||
"appViews": "",
|
||||
"uniqueId": "7751b424-8a34-4ee3-aadd-57742640eb18",
|
||||
"appName": "DssMobile",
|
||||
"modelNamespace": "DssMobile.model",
|
||||
"name": "DssMobile",
|
||||
"library": "core",
|
||||
"controllerNamespace": "DssMobile.controller",
|
||||
"appStores": ""
|
||||
}
|
||||
},
|
||||
".sencha/app/package.properties": {
|
||||
"source": "package.properties.merge",
|
||||
"version": "3227481d91059b21defcf41e7c96aca501184796",
|
||||
"parameters": {
|
||||
"viewNamespace": "DssMobile.view",
|
||||
"frameworkName": "touch",
|
||||
"frameworkPath": "touch",
|
||||
"senchadir": ".sencha",
|
||||
"appModels": "",
|
||||
"appControllers": "",
|
||||
"appViews": "",
|
||||
"uniqueId": "7751b424-8a34-4ee3-aadd-57742640eb18",
|
||||
"appName": "DssMobile",
|
||||
"modelNamespace": "DssMobile.model",
|
||||
"name": "DssMobile",
|
||||
"library": "core",
|
||||
"controllerNamespace": "DssMobile.controller",
|
||||
"appStores": ""
|
||||
}
|
||||
},
|
||||
".sencha/app/testing.properties": {
|
||||
"source": "testing.properties.merge",
|
||||
"version": "004322eb00e7dbb83fc2fcdf96fcd4949b9e208d",
|
||||
"parameters": {
|
||||
"viewNamespace": "DssMobile.view",
|
||||
"frameworkName": "touch",
|
||||
"frameworkPath": "touch",
|
||||
"senchadir": ".sencha",
|
||||
"appModels": "",
|
||||
"appControllers": "",
|
||||
"appViews": "",
|
||||
"uniqueId": "7751b424-8a34-4ee3-aadd-57742640eb18",
|
||||
"appName": "DssMobile",
|
||||
"modelNamespace": "DssMobile.model",
|
||||
"name": "DssMobile",
|
||||
"library": "core",
|
||||
"controllerNamespace": "DssMobile.controller",
|
||||
"appStores": ""
|
||||
}
|
||||
},
|
||||
".sencha/app/sencha.cfg": {
|
||||
"source": "sencha.cfg.tpl.merge",
|
||||
"version": "d2e6e42720f88befc892f12df5fd7bab587f7879",
|
||||
"parameters": {
|
||||
"viewNamespace": "DssMobile.view",
|
||||
"frameworkName": "touch",
|
||||
"frameworkPath": "touch",
|
||||
"senchadir": ".sencha",
|
||||
"appModels": "",
|
||||
"appControllers": "",
|
||||
"appViews": "",
|
||||
"uniqueId": "7751b424-8a34-4ee3-aadd-57742640eb18",
|
||||
"appName": "DssMobile",
|
||||
"modelNamespace": "DssMobile.model",
|
||||
"name": "DssMobile",
|
||||
"library": "core",
|
||||
"controllerNamespace": "DssMobile.controller",
|
||||
"appStores": ""
|
||||
}
|
||||
},
|
||||
".sencha/app/production.properties": {
|
||||
"source": "production.properties.merge",
|
||||
"version": "ae3049a5e12609718b8e3bd82a2264347f69262f",
|
||||
"parameters": {
|
||||
"viewNamespace": "DssMobile.view",
|
||||
"frameworkName": "touch",
|
||||
"frameworkPath": "touch",
|
||||
"senchadir": ".sencha",
|
||||
"appModels": "",
|
||||
"appControllers": "",
|
||||
"appViews": "",
|
||||
"uniqueId": "7751b424-8a34-4ee3-aadd-57742640eb18",
|
||||
"appName": "DssMobile",
|
||||
"modelNamespace": "DssMobile.model",
|
||||
"name": "DssMobile",
|
||||
"library": "core",
|
||||
"controllerNamespace": "DssMobile.controller",
|
||||
"appStores": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
503
.sencha/app/defaults.properties
Normal file
503
.sencha/app/defaults.properties
Normal file
@@ -0,0 +1,503 @@
|
||||
# =============================================================================
|
||||
# This file defines properties used by build-impl.xml and the associated
|
||||
# *-impl.xml files (sass-impl.xml, js-impl.xml, etc.), which are the core of
|
||||
# the applications build process.
|
||||
#
|
||||
# IMPORTANT - This file is not modifiable by an app, and will be overwritten
|
||||
# during each app upgrade. Please use build.properties for defining app
|
||||
# customizations to these properties.
|
||||
# =============================================================================
|
||||
|
||||
# *****************************************************************************
|
||||
# Global Build Properties
|
||||
# these are cross-concern properties used by many build phases
|
||||
# *****************************************************************************
|
||||
|
||||
# the default build enviornment type (production, testing, native, package)
|
||||
# NOTE: this is only a default and will typically be set before this file is
|
||||
# loaded, typically by the 'sencha app build" command.
|
||||
# See "sencha help app build" for details.
|
||||
#
|
||||
# The corresponding properies files:
|
||||
# (production.properties, testing.properties, etc.) provide examples of
|
||||
# overriding sets of properties depending on the selected environment
|
||||
# NOTE: this replaces the deprecated args.environment
|
||||
build.environment=production
|
||||
|
||||
# the directory to place built application files
|
||||
build.dir=${workspace.build.dir}/${build.environment}/${app.name}
|
||||
|
||||
# a temporary output directory used for staging intermediate build artifacts
|
||||
build.temp.dir=${workspace.build.dir}/temp/${build.environment}/${app.name}
|
||||
|
||||
# the directory under the output folder for placing resources
|
||||
build.resources.dir=${build.dir}/resources
|
||||
|
||||
# *****************************************************************************
|
||||
# JS
|
||||
# these properties control various aspects of output js code construction
|
||||
# *****************************************************************************
|
||||
|
||||
# the output js file that contains all needed js code
|
||||
build.classes.name=app.js
|
||||
build.classes.file=${build.dir}/${build.classes.name}
|
||||
|
||||
# the output js file for framework code, if the framework
|
||||
# classes are not included in the default all-classes.js file
|
||||
build.framework.name=framework.js
|
||||
build.framework.file=${build.dir}/${build.framework.name}
|
||||
|
||||
# a property that enables <debug> blocks in js output, see build.options
|
||||
build.options.debug.enable=debug:true
|
||||
|
||||
# a property that enables <debug> blocks in js output, see build.options
|
||||
build.options.debug.disable=debug:false
|
||||
|
||||
# a property that enables <feature logger> blocks in js output, see build.options
|
||||
build.options.logger.enable=logger:yes
|
||||
|
||||
# a property that disables <feature logger> blocks in js output, see build.options
|
||||
build.options.logger.disable=logger:no
|
||||
|
||||
# a property that sets js preprocessor options in the form:
|
||||
# name1:value1,name2:value2,...
|
||||
#
|
||||
# (used by -init-compiler in init-impl.xml)
|
||||
# this may be assembled using property expansion, for example:
|
||||
# build.options=${build.options.debug.enable},${build.options.logger.enable}
|
||||
build.options=
|
||||
|
||||
# This property can be modified to change general build options
|
||||
# such as excluding files from the set. The format expects newlines
|
||||
# for each argument, for example:
|
||||
#
|
||||
# build.operations=\
|
||||
# exclude\n \
|
||||
# -namespace=Ext\n
|
||||
build.operations=
|
||||
|
||||
# enables / disables the full class optimizer during js builds
|
||||
# (used by the -compile-* targets in js-impl.xml)
|
||||
build.optimize.enable=\
|
||||
optimize\n \
|
||||
-define-rewrite\n
|
||||
build.optimize.disable=
|
||||
build.optimize=${build.optimize.disable}
|
||||
|
||||
# enables / disables yui compression
|
||||
build.compression.yui=0
|
||||
|
||||
# enables / disables closure compression
|
||||
build.compression.closure=0
|
||||
|
||||
# enables / disables uglify compression
|
||||
build.compression.ugilfy=0
|
||||
|
||||
build.compile.temp.dir=${build.temp.dir}/sencha-compiler
|
||||
|
||||
# controles whether to keep the temp compile dir after the build
|
||||
build.compile.temp.dir.keep=true
|
||||
|
||||
# ------------------------------------------
|
||||
# DOC ONLY - Do Not Set
|
||||
# this variable will be set to the appropriate compressor
|
||||
# option, and is calculated in init-impl.xml, but may be overridded in
|
||||
# app.properties, <environment>.properties, or via command line
|
||||
#
|
||||
# build.compression=
|
||||
# ------------------------------------------
|
||||
|
||||
# *****************************************************************************
|
||||
# Page
|
||||
# these variables control aspects of building the output markup page
|
||||
# *****************************************************************************
|
||||
|
||||
# controls whether the output will be microloader-enabled, or markup only
|
||||
build.output.markuponly=false
|
||||
|
||||
# controls whether the microloader content will be embedded in the output
|
||||
# markup, or left as a separate resource
|
||||
build.enable.embedded.microloader=true
|
||||
|
||||
# whether to include the page's manifest.json code with the
|
||||
# microloader content. Production.properties files should set this to
|
||||
# false to have app.json exist as a server resource.
|
||||
build.enable.embedded.manifest=true
|
||||
|
||||
# enables / disables delta patch generation
|
||||
enable.deltas=false
|
||||
|
||||
# enables / disables generation of cache manifest
|
||||
enable.cache.manifest=false
|
||||
|
||||
# enables / disables compression of resources referenced in app.json / package.json
|
||||
# js and css entries
|
||||
enable.resource.compression=false
|
||||
|
||||
# defaults to index.html, but may be overridden in app.json
|
||||
app.indexHtmlPath=index.html
|
||||
|
||||
# the input page file for the application
|
||||
app.page.name=${app.indexHtmlPath}
|
||||
app.page.file=${app.dir}/${app.page.name}
|
||||
|
||||
# the output page file
|
||||
build.page.name=${app.page.name}
|
||||
build.page.file=${build.dir}/${build.page.name}
|
||||
|
||||
# the directory where the microloader files may be found
|
||||
app.microloader.dir=${app.config.dir}/microloader
|
||||
|
||||
# the file names of the individual microloaders
|
||||
app.microloader.development=development.js
|
||||
app.microloader.testing=testing.js
|
||||
app.microloader.production=production.js
|
||||
|
||||
# the target microloader to use for builds
|
||||
app.microloader.name=${app.microloader.development}
|
||||
app.microloader.path=${app.microloader.dir}/${app.microloader.name}
|
||||
|
||||
# specifies how to embed the microloader code into the output markup
|
||||
# {0} is replaced with the content of the microloader file specified
|
||||
# by app.microloader.path
|
||||
build.microloader.code.tpl={0}
|
||||
|
||||
# the template to use when generating a stand-alone json manifest file
|
||||
build.microloader.json.tpl.standalone={0}
|
||||
|
||||
# the template to use when embedding the manifest json directly next to the
|
||||
# microloader in the output microloader content
|
||||
build.microloader.json.tpl.embedded=Ext.blink({0});
|
||||
|
||||
# the template to use in the output microloader content when supplying
|
||||
# the manifest json as a separate server-side resource ('production' builds)
|
||||
build.microloader.json.tpl.external=Ext.blink('{'id:''${app.id}'''}');
|
||||
|
||||
# the template string to use when embedding the microloader content
|
||||
# into the output markup
|
||||
build.embedded.microloader.tpl=<script type="text/javascript">{0}</script>
|
||||
|
||||
# the name of the output microloader file
|
||||
build.microloader.name=microloader.js
|
||||
|
||||
# the path to the microloader content file, if external to the outpout markup
|
||||
build.microloader.path=${build.dir}/${build.microloader.name}
|
||||
|
||||
# the inner markup to embed into the output markup when not including
|
||||
# the microloader content directly into the output markup
|
||||
build.embedded.microloader.src=${build.microloader.name}
|
||||
build.external.microloader.markup=<script src="${build.embedded.microloader.src}"></script>
|
||||
|
||||
# a flag indicating which mode the microloader should run in (production, testing, etc.)
|
||||
# currently unused : is a placeholder for future microloader interactions
|
||||
build.microloader.mode=${build.environment}
|
||||
|
||||
# the tag name to use when generating the compiler save set for
|
||||
# the page's js code
|
||||
build.tag.name=full-page
|
||||
|
||||
# the name of the archive folder containing source versions for
|
||||
# delta patch generation
|
||||
build.archive.name=archive
|
||||
build.out.archive.path=${workspace.build.dir}/${build.archive.name}/${app.name}
|
||||
|
||||
# the name of the output folder for calculated delta patches
|
||||
build.deltas.name=deltas
|
||||
build.out.delta.path=${build.dir}/${build.deltas.name}
|
||||
|
||||
# the output cache manifest file
|
||||
build.manifest.name=cache.appcache
|
||||
build.manifest.path=${build.dir}/${build.manifest.name}
|
||||
|
||||
# the path to the output markup page
|
||||
build.out.page.path=${build.dir}/${app.page.name}
|
||||
|
||||
# the name of the manifest json file
|
||||
build.json.name=app.json
|
||||
|
||||
# the full path to the manifest json file
|
||||
build.out.json.path=${build.dir}/${build.json.name}
|
||||
|
||||
# Defines the file that will contain Ext.setVersion calls for each used package.
|
||||
build.out.package.versions=${build.compile.temp.dir}/cmd-packages.js
|
||||
|
||||
# a temp directory for managing extracted resources during the page build
|
||||
build.app.temp.dir=${build.compile.temp.dir}/app
|
||||
|
||||
# *****************************************************************************
|
||||
# Refresh
|
||||
# these properties are used for generating bootstrap js and css
|
||||
# files to support dev-time interaction with the app
|
||||
# *****************************************************************************
|
||||
|
||||
# the base path to use for generating / calculating bootstrap info
|
||||
app.bootstrap.base.path=${app.dir}
|
||||
|
||||
# these control the name of the bootstrap js file
|
||||
# note: there will be corresponding entries in either the index page
|
||||
# or app.json that reference these names
|
||||
app.bootstrap.js.name=bootstrap.js
|
||||
app.bootstrap.js=${app.bootstrap.base.path}/${app.bootstrap.js.name}
|
||||
|
||||
# these control the name of the bootstrap css file (for ext 4.2+ apps)
|
||||
# note: there will be corresponding entries in either the index page
|
||||
# or app.json that reference these names
|
||||
app.bootstrap.css.name=bootstrap.css
|
||||
app.bootstrap.css=${app.bootstrap.base.path}/${app.bootstrap.css.name}
|
||||
|
||||
# the microloader to use for bootstrapping operations
|
||||
app.microloader.bootstrap=${app.microloader.dir}/${app.microloader.development}
|
||||
|
||||
# the name of the bootstrap microloader manifest
|
||||
build.json.bootstrap.name=bootstrap.json
|
||||
|
||||
# the full path to the bootstrap microloader manifest
|
||||
build.json.bootstrap.path=${app.dir}/${build.json.bootstrap.name}
|
||||
|
||||
# *****************************************************************************
|
||||
# Sass / Css
|
||||
# properties for controling features of sass generation and compilation
|
||||
# *****************************************************************************
|
||||
|
||||
# --------------------
|
||||
# these control properties select the mode used to build the app's styling
|
||||
# see sass-impl.xml for how then are used
|
||||
|
||||
# enables theme builds for apps using ext 41 style themes
|
||||
enable.ext41.themes=false
|
||||
|
||||
# enables theme builds for apps using ext 42 style themes
|
||||
enable.ext42.themes=false
|
||||
|
||||
# enables theme builds for apps using touch style themes
|
||||
enable.touch.themes=false
|
||||
# --------------------
|
||||
|
||||
# selector count threshold to use when
|
||||
# splitting a single css file into multiple
|
||||
# css files (IE selector limit workaround)
|
||||
#
|
||||
# NOTE: applies only to ext js 4.2+ style theme management, currently
|
||||
# see the above theme control variables for details
|
||||
build.css.selector.limit=4095
|
||||
|
||||
# enables / disable css preprocessor (enable.ext42.themes only)
|
||||
build.css.preprocess=true
|
||||
|
||||
# sets the css preprocessor options, in the form:
|
||||
# name1:value1,name2:value2,...
|
||||
build.css.preprocessor.opts=
|
||||
|
||||
# enables / disable css compressor (enable.ext42.themes only)
|
||||
build.css.compress=true
|
||||
|
||||
# Specify the name for the individual resource dirs in the app
|
||||
# (enable.touch.themes only)
|
||||
app.sass.name=sass
|
||||
|
||||
# Specify the sass path in the app
|
||||
# (enable.touch.themes only)
|
||||
app.sass.dir=${app.dir}/resources/${app.sass.name}
|
||||
|
||||
# name prefix to use for output css / sass files
|
||||
app.out.base=${app.name}-all
|
||||
app.out.base.debug=${app.out.base}
|
||||
|
||||
# the output sass file to generate (used with enable.ext42.themes)
|
||||
app.out.scss=${build.dir}/${app.out.base.debug}.scss
|
||||
# the output ruby compass config file to generate (used with enable.ext42.themes)
|
||||
app.out.ruby=${build.dir}/config.rb
|
||||
|
||||
# output css file prefix
|
||||
app.out.css.prefix=${app.out.base.debug}
|
||||
|
||||
# output css file name
|
||||
app.out.css.name=${app.out.css.prefix}.css
|
||||
|
||||
# output css file path (relative to build directory root
|
||||
app.out.css.rel=resources/${app.out.css.name}
|
||||
|
||||
# output css file path (full path)
|
||||
app.out.css=${build.dir}/${app.out.css.rel}
|
||||
|
||||
# separate file name to use for generating a compressed copy
|
||||
# of the output css file (this default will compress the file in-place)
|
||||
app.out.css.compressed=${build.dir}/resources/${app.out.base}.css
|
||||
|
||||
# the directory containing sass files for compass to compile
|
||||
compass.sass.dir=${build.dir}
|
||||
|
||||
# the output directory where compass should place built css files
|
||||
compass.css.dir=${build.dir}/resources
|
||||
|
||||
# the directory containing the ruby config file for compass
|
||||
compass.config.file=${app.out.ruby}
|
||||
|
||||
# enables / disables console highlighting for compass
|
||||
compass.compile.boring=false
|
||||
|
||||
# enables / disables forced rebuilds for compass
|
||||
compass.compile.force=true
|
||||
|
||||
# enables / disables stack traces in compass failure output
|
||||
compass.compile.trace=true
|
||||
|
||||
# ---------------------------------------------------
|
||||
# Legacy properties for ext41 theme directories
|
||||
# Specify the resources path in the app
|
||||
app.packages.dir=${app.dir}/packages
|
||||
|
||||
# Specify the theme path in the app (this directory contains the themes)
|
||||
app.theme.dir=${app.packages.dir}
|
||||
|
||||
# the currently selected ext 41 theme name
|
||||
theme.name=default
|
||||
# ---------------------------------------------------
|
||||
|
||||
# *****************************************************************************
|
||||
# Slice
|
||||
# these properties control features of the theme slice build phase
|
||||
# *****************************************************************************
|
||||
|
||||
# the resources directory of the application
|
||||
# note: this property is currently only used for building ext 4.1 style themes
|
||||
# (used by x-build-theme and x-copy-resources in slice-impl.xml)
|
||||
app.resources.dir=${app.dir}/resources
|
||||
|
||||
# the directory containing the slicer widget example page
|
||||
app.example.dir=${app.dir}/sass/example
|
||||
|
||||
# properties to control the recirect css file that is
|
||||
# generated for the slicer example page
|
||||
app.example.css.name=example.css
|
||||
app.example.css.file=${app.example.dir}/${app.example.css.name}
|
||||
|
||||
# the base path for generating the bootstrap code for the
|
||||
# slicer page
|
||||
bootstrap.base.path=${app.example.dir}
|
||||
|
||||
# the full file name of the slicer page's bootstrap js file
|
||||
bootstrap.example.js=${app.example.dir}/bootstrap.js
|
||||
|
||||
# this is the directory used for intermediate build artifacts used
|
||||
# by the slicer for generating theme images
|
||||
app.example.build.dir=${build.temp.dir}/slicer-temp
|
||||
|
||||
# the name of the intermediate screenshot file used for image slicing
|
||||
build.capture.png=${app.example.build.dir}/theme-capture.png
|
||||
|
||||
# the name of the intermediate widget manifest file used for image slicing
|
||||
build.capture.json=${app.example.build.dir}/theme-capture.json
|
||||
|
||||
# the location of the slicer widget page
|
||||
app.example.theme.html.name=theme.html
|
||||
app.example.theme.html=${app.example.dir}/${app.example.theme.html.name}
|
||||
|
||||
# a name prefix used for slicer page temporary artifacts
|
||||
app.example.base=${app.name}-example
|
||||
|
||||
# the special slicer page scss file name to generate
|
||||
app.example.scss=${app.example.build.dir}/${app.example.base}.scss
|
||||
|
||||
# the relative path from the slicer css file to the slicer html file
|
||||
app.example.css.rel=${app.example.base}.css
|
||||
|
||||
# the path to the css file that will be built for the slicer page
|
||||
app.example.css=${app.example.build.dir}/${app.example.css.rel}
|
||||
|
||||
# the ruby compass config file to generate for slicer page scss
|
||||
app.example.out.ruby=${app.example.build.dir}/config.rb
|
||||
app.example.compass.config=${app.example.out.ruby}
|
||||
|
||||
# legacy ext 41 theme property indicating the name of the
|
||||
# slicer example page contained in the theme directory
|
||||
theme.page.name=theme.html
|
||||
|
||||
# Options to pass to the "sencha fs slice" command.
|
||||
build.slice.options=
|
||||
|
||||
# *****************************************************************************
|
||||
# Packager
|
||||
# these properties control features of the native packaging phase of the
|
||||
# build process
|
||||
# *****************************************************************************
|
||||
|
||||
# enables packaging the built application with the Sencha Desktop Packager
|
||||
# NOTE: currently unsupported
|
||||
enable.desktop.packager=false
|
||||
|
||||
# skips packaging the built application with sencha mobile packager (stbuild) or cordova/phonegap
|
||||
skip.native-package=true
|
||||
|
||||
# a property that controls whether a standalone manifest.json file will be
|
||||
# generated for the native packaged application
|
||||
enable.standalone.manifest=false
|
||||
|
||||
# these set the name of the mobile native packager's config file
|
||||
build.mobile.packager.name=packager.json
|
||||
build.mobile.packager.file=${app.dir}/${build.mobile.packager.name}
|
||||
|
||||
# the default mobile packager config to use when specifying the autorun argument
|
||||
# with "sencha app build -run native"
|
||||
build.mobile.packager.default.name=packager.json
|
||||
build.mobile.packager.default.file=${app.dir}/${build.mobile.packager.default.name}
|
||||
|
||||
# these set the name of the mobile native packager's temporary config file
|
||||
# that will have the input and output path properties updated
|
||||
build.mobile.packager.temp.name=packager.temp.json
|
||||
build.mobile.packager.temp.file=${app.dir}/${build.mobile.packager.temp.name}
|
||||
|
||||
# the input directory for the mobile native packager that contains the
|
||||
# built Sencha Cmd application
|
||||
build.mobile.packager.in.dir=${build.dir}
|
||||
|
||||
# the output location of the mobile native packaged application
|
||||
build.mobile.packager.out.dir.name=native-package-mobile
|
||||
build.mobile.packager.out.dir=${workspace.build.dir}/${build.mobile.packager.out.dir.name}/${app.name}
|
||||
|
||||
# *****************************************************************************
|
||||
# Resolve
|
||||
# these properties control aspects of the dynamic dependency resolver, which
|
||||
# uses phantomjs to load the applicaiton and extract Ext.Loader class load
|
||||
# history.
|
||||
# *****************************************************************************
|
||||
|
||||
# enables / disables dynamic dependency resolution
|
||||
skip.resolve=true
|
||||
|
||||
# enables the local web server. this may be disabled to load the application's
|
||||
# page from an existing web server.
|
||||
skip.web-start=false
|
||||
|
||||
# the port number to start the local web server on
|
||||
build.web.port=54321
|
||||
|
||||
# the directory representing the root web folder
|
||||
build.web.root=${workspace.dir}
|
||||
|
||||
# the base url to access the local web server
|
||||
build.resolve.url=http://localhost:${build.web.port}
|
||||
|
||||
# a template string used to format the detected dynamic dependencies
|
||||
build.resolve.tpl={0}
|
||||
|
||||
# the mode to use when formatting the detected dynamic dependencies
|
||||
build.resolve.mode=references
|
||||
|
||||
# the output file for the detected dynamic dependencies
|
||||
build.resolve.file=${build.temp.dir}/resolve.json
|
||||
|
||||
# controls whether unmatched external references in the specified file will
|
||||
# generate build warnings or build failures
|
||||
build.resolve.allow.unmatched=true
|
||||
|
||||
# *****************************************************************************
|
||||
# Watch
|
||||
# these properties adjust the behavior of the app watch process.
|
||||
# *****************************************************************************
|
||||
|
||||
# the default set of actions to run when triggering a rebuild
|
||||
build.trigger.targets=-refresh,-compile-resources,-compass-compile
|
||||
|
||||
# the watcher targets to run that monitor for code changes
|
||||
build.watcher.targets=-watch-compiler
|
||||
58
.sencha/app/find-cmd-impl.xml
Normal file
58
.sencha/app/find-cmd-impl.xml
Normal file
@@ -0,0 +1,58 @@
|
||||
<project name="find-cmd-impl">
|
||||
<!--
|
||||
Run "sencha which" to find the Sencha Cmd basedir and get "cmd.dir" setup. We
|
||||
need to execute the command with curdir set properly for Cmd to pick up that we
|
||||
are running for an application.
|
||||
-->
|
||||
<target name="find-cmd-in-path" unless="cmd.dir">
|
||||
<exec executable="sencha"
|
||||
dir="${basedir}"
|
||||
failifexecutionfails="false"
|
||||
outputproperty="exec.error">
|
||||
<arg value="which"/>
|
||||
<arg value="-p=cmd.dir"/>
|
||||
<arg value="-o=$cmddir$"/>
|
||||
</exec>
|
||||
|
||||
<!-- Now read the generated properties file and delete it -->
|
||||
<property file="$cmddir$"/>
|
||||
<delete file="$cmddir$"/>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
Run "sencha which" again, similar to the above target, but explicitly check
|
||||
for the 'SENCHA_CMD' environment variable to have been set, in case sencha
|
||||
cmd isn't on the current path settings for the user
|
||||
-->
|
||||
<target name="find-cmd-in-environment" unless="cmd.dir">
|
||||
<exec executable="${env.SENCHA_CMD}/sencha"
|
||||
dir="${basedir}"
|
||||
failifexecutionfails="false">
|
||||
<arg value="which"/>
|
||||
<arg value="-p=cmd.dir"/>
|
||||
<arg value="-o=$cmddir$"/>
|
||||
</exec>
|
||||
|
||||
<property file="$cmddir$"/>
|
||||
<delete file="$cmddir$"/>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
== Mac OSX launchd fix ==
|
||||
create a child shell process that will source in ~/.bash_profile
|
||||
and then attempt to call 'sencha which' with the current user's
|
||||
shell profile settings. sencha which will create a properties file
|
||||
that can then be loaded into this (the parent) process.
|
||||
|
||||
This allows ant integrations in IDE's like netbeans or eclipse to properly
|
||||
locate Sencha Cmd, even if the IDE was launched via launchd (Finder)
|
||||
-->
|
||||
<target name="find-cmd-in-shell" unless="cmd.dir">
|
||||
<delete quiet="true" file="$cmddir$"/>
|
||||
<echo file="tmp.sh"> source ~/.bash_profile; sencha which -p cmd.dir -o '$cmddir$'</echo>
|
||||
<exec executable="/bin/sh"><arg value="tmp.sh"/></exec>
|
||||
<property file="$cmddir$"/>
|
||||
<delete file="tmp.sh"/>
|
||||
<delete file="$cmddir$"/>
|
||||
</target>
|
||||
</project>
|
||||
210
.sencha/app/init-impl.xml
Normal file
210
.sencha/app/init-impl.xml
Normal file
@@ -0,0 +1,210 @@
|
||||
<project name="init-impl">
|
||||
<!--
|
||||
Init-Local
|
||||
-->
|
||||
<target name="-before-init-local"/>
|
||||
<target name="-init-local">
|
||||
<!--
|
||||
${basedir} is actually the basedir of build.xml, in the app root
|
||||
so this imports ${app.dir}/local.properties, if present
|
||||
-->
|
||||
<property file="${basedir}/local.properties"/>
|
||||
|
||||
<!--
|
||||
This will traverse upwards in the file system, starting at the
|
||||
app root directory, looking for the workspace. Once found,
|
||||
${workspace.dir}/local.properties will be imported into this
|
||||
project
|
||||
-->
|
||||
<script language="javascript">
|
||||
<![CDATA[
|
||||
var f = new java.io.File(project.getProperty("basedir"));
|
||||
var sub = ".sencha/workspace/sencha.cfg";
|
||||
|
||||
for (var p = f; p; p = p.getParentFile()) {
|
||||
var t = new java.io.File(p, sub);
|
||||
if (t.exists()) {
|
||||
// we found the workspace folder!
|
||||
|
||||
t = new java.io.File(p, "local.properties");
|
||||
if (t.exists()) {
|
||||
var loader = project.createTask("property");
|
||||
loader.setFile(new java.io.File(t.getCanonicalPath()));
|
||||
loader.execute();
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
]]>
|
||||
</script>
|
||||
|
||||
</target>
|
||||
<target name="-after-init-local"/>
|
||||
<target name="init-local"
|
||||
depends="-before-init-local,-init-local,-after-init-local"/>
|
||||
|
||||
<target name="-before-init"/>
|
||||
<target name="-init" unless="internal.x-sencha-initialized">
|
||||
<!--
|
||||
Now, apply various project updates, such as ant class loader path
|
||||
updates, as well as loading Sencha Cmd config system properties
|
||||
into ant property space
|
||||
-->
|
||||
<x-sencha-init prefix=""/>
|
||||
|
||||
<!--
|
||||
default the build environment to production if it is unset by this point
|
||||
-->
|
||||
<property name="build.environment" value="production"/>
|
||||
<property name="CR" value=" "/>
|
||||
|
||||
<x-load-properties>
|
||||
<file path="${app.config.dir}/${build.environment}.properties" required="false"/>
|
||||
<file path="${app.config.dir}/build.properties" required="false"/>
|
||||
<file path="${app.config.dir}/defaults.properties" required="true"/>
|
||||
</x-load-properties>
|
||||
|
||||
<!--
|
||||
calculate the appropriate build.compression value
|
||||
-->
|
||||
<condition property="build.compression" value="-yui">
|
||||
<x-is-true value="${build.compression.yui}"/>
|
||||
</condition>
|
||||
|
||||
<condition property="build.compression" value="-closure">
|
||||
<x-is-true value="${build.compression.closure}"/>
|
||||
</condition>
|
||||
|
||||
<condition property="build.compression" value="-uglify">
|
||||
<x-is-true value="${build.compression.uglify}"/>
|
||||
</condition>
|
||||
|
||||
<property name="build.compression" value=""/>
|
||||
|
||||
<x-verify-app-cmd-ver/>
|
||||
|
||||
<!--
|
||||
this id string is used to share a common compiler instance
|
||||
for all x-compile calls in this project
|
||||
-->
|
||||
<property name="compiler.ref.id" value="app-compiler"/>
|
||||
|
||||
<!--
|
||||
this property is set indicating we've reached the end of the
|
||||
core init phase. it's presence will indicate that we've already
|
||||
executed this target, and will bypass firing the init code
|
||||
repeatedly in sub projects (antcall, x-ant-call)
|
||||
See the above 'unless' attribute on the -init target
|
||||
-->
|
||||
<property name="internal.x-sencha-initialized" value="true"/>
|
||||
</target>
|
||||
<target name="-after-init"/>
|
||||
|
||||
<target name="-before-init-defaults"/>
|
||||
<target name="-init-defaults">
|
||||
<!--
|
||||
This property can be modified to change general build options
|
||||
such as excluding files from the set. The format expects newlines
|
||||
for each argument, for example:
|
||||
|
||||
<property name="build.operations"/>
|
||||
exclude
|
||||
-namespace=Ext
|
||||
</property>
|
||||
-->
|
||||
<property name="build.operations" value=""/>
|
||||
|
||||
<!--
|
||||
This property can be modified to change concatenation
|
||||
specific options
|
||||
|
||||
-strip-comments: comment suppression
|
||||
-remove-text-references: transform string literal class references to objects
|
||||
-beautify: unpack the source
|
||||
|
||||
<property name="build.concat.options"/>
|
||||
-strip-comments
|
||||
-remove-text-references
|
||||
-beautify
|
||||
</property>
|
||||
-->
|
||||
<property name="build.concat.options" value=""/>
|
||||
|
||||
<!--
|
||||
This property can be modified to change page compilation options
|
||||
|
||||
-scripts: inject the given script path into the generated markup ahead of the all classes file
|
||||
|
||||
<property name="build.page.options"/>
|
||||
-scripts=framework.js
|
||||
</property>
|
||||
-->
|
||||
<property name="build.page.options" value=""/>
|
||||
</target>
|
||||
<target name="-after-init-defaults"/>
|
||||
|
||||
<!--
|
||||
Initializes the compiler instances, reading in the app.json and package.json
|
||||
definitions, as well as scanning and parsing all js files found on the
|
||||
various classpath entries for the framework, workspace, packages, and app
|
||||
-->
|
||||
<target name="-init-compiler" depends="-init">
|
||||
<condition property="internal.app.css.rel" value="${app.out.css.rel}">
|
||||
<x-is-true value="${enable.ext42.themes}"/>
|
||||
</condition>
|
||||
<property name="internal.app.css.rel" value=""/>
|
||||
|
||||
<x-compile refid="${compiler.ref.id}"
|
||||
dir="${app.dir}"
|
||||
initOnly="true"
|
||||
inheritAll="true">
|
||||
<![CDATA[
|
||||
# base build command
|
||||
-tempDir=${build.compile.temp.dir}
|
||||
-keepTempDir=${build.compile.temp.dir.keep}
|
||||
-options=${build.options}
|
||||
load-app
|
||||
-frameworkFile=${build.framework.name}
|
||||
-jsBundleFile=${build.classes.name}
|
||||
-cssBundleFile=${internal.app.css.rel}
|
||||
-tempDir=${build.app.temp.dir}
|
||||
-tag=${build.tag.name}
|
||||
and
|
||||
restore
|
||||
${build.tag.name}
|
||||
and
|
||||
meta
|
||||
+packages
|
||||
-out=${build.out.package.versions}
|
||||
and
|
||||
classpath
|
||||
-path=${build.out.package.versions}
|
||||
-name=framework
|
||||
and
|
||||
require
|
||||
-source=@${build.tag.name}
|
||||
-requires=@overrides
|
||||
-allow-unmet=true
|
||||
and
|
||||
require
|
||||
-scopeName=framework
|
||||
-source=Ext.util.Observable
|
||||
-requires=${build.out.package.versions}
|
||||
-allow-unmet=false
|
||||
and
|
||||
union
|
||||
-recursive
|
||||
-tag=${build.tag.name}
|
||||
and
|
||||
save
|
||||
${build.tag.name}-overrides
|
||||
and
|
||||
${build.operations}
|
||||
and
|
||||
save
|
||||
page
|
||||
]]>
|
||||
</x-compile>
|
||||
</target>
|
||||
</project>
|
||||
78
.sencha/app/js-impl.xml
Normal file
78
.sencha/app/js-impl.xml
Normal file
@@ -0,0 +1,78 @@
|
||||
<project name="js-impl">
|
||||
<!--
|
||||
this target extracts split mode information from the compiler's app
|
||||
processor to determine various pieces of information
|
||||
-->
|
||||
<target name="-detect-app-build-properties"
|
||||
depends="-init-compiler">
|
||||
<x-load-app-builder-properties
|
||||
refid="${compiler.ref.id}"
|
||||
splitModePropName="enable.split.mode"
|
||||
pageModePropName="app.page.mode"/>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
this is the standard js compile target that builds the output js file(s)
|
||||
-->
|
||||
<target name="-compile-js" depends="-detect-app-build-properties">
|
||||
<if>
|
||||
<x-is-true value="${enable.split.mode}"/>
|
||||
<then>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
# build a separate sdk-only js file
|
||||
union
|
||||
-tag=package-sencha-core,framework
|
||||
and
|
||||
${build.optimize}
|
||||
and
|
||||
concat
|
||||
${build.compression}
|
||||
-out=${build.framework.file}
|
||||
${build.concat.options}
|
||||
|
||||
# now build the all-classes file, without
|
||||
# the framework code included
|
||||
and
|
||||
restore
|
||||
page
|
||||
and
|
||||
exclude
|
||||
-tag=framework,package-sencha-core
|
||||
and
|
||||
${build.optimize}
|
||||
and
|
||||
concat
|
||||
${build.compression}
|
||||
-out=${build.classes.file}
|
||||
${build.concat.options}
|
||||
]]>
|
||||
</x-compile>
|
||||
</then>
|
||||
<else>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
# build an all-classes.js file that contains
|
||||
# all code needed by the app
|
||||
restore
|
||||
page
|
||||
and
|
||||
${build.optimize}
|
||||
and
|
||||
concat
|
||||
${build.compression}
|
||||
-out=${build.classes.file}
|
||||
${build.concat.options}
|
||||
]]>
|
||||
</x-compile>
|
||||
</else>
|
||||
</if>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
Build javascript
|
||||
-->
|
||||
<target name="-before-js"/>
|
||||
<target name="-js" depends="-compile-js"/>
|
||||
<target name="-after-js"/>
|
||||
</project>
|
||||
185
.sencha/app/microloader/development.js
Normal file
185
.sencha/app/microloader/development.js
Normal file
@@ -0,0 +1,185 @@
|
||||
/**
|
||||
* Sencha Blink - Development
|
||||
* @author Jacky Nguyen <jacky@sencha.com>
|
||||
*/
|
||||
(function() {
|
||||
var head = document.head;
|
||||
|
||||
function write(content) {
|
||||
document.write(content);
|
||||
}
|
||||
|
||||
function addMeta(name, content) {
|
||||
var meta = document.createElement('meta');
|
||||
|
||||
meta.setAttribute('name', name);
|
||||
meta.setAttribute('content', content);
|
||||
head.appendChild(meta);
|
||||
}
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open('GET', 'bootstrap.json', false);
|
||||
xhr.send(null);
|
||||
|
||||
var options = eval("(" + xhr.responseText + ")"),
|
||||
scripts = options.js || [],
|
||||
styleSheets = options.css || [],
|
||||
i, ln, path, platform, theme, exclude;
|
||||
|
||||
if(options.platform && options.platforms && options.platforms[options.platform] && options.platforms[options.platform].js) {
|
||||
scripts = options.platforms[options.platform].js.concat(scripts);
|
||||
}
|
||||
|
||||
if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
|
||||
var msViewportStyle = document.createElement("style");
|
||||
msViewportStyle.appendChild(
|
||||
document.createTextNode(
|
||||
"@media screen and (orientation: portrait) {" +
|
||||
"@-ms-viewport {width: 320px !important;}" +
|
||||
"}" +
|
||||
"@media screen and (orientation: landscape) {" +
|
||||
"@-ms-viewport {width: 560px !important;}" +
|
||||
"}"
|
||||
)
|
||||
);
|
||||
document.getElementsByTagName("head")[0].appendChild(msViewportStyle);
|
||||
}
|
||||
|
||||
addMeta('viewport', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no');
|
||||
addMeta('apple-mobile-web-app-capable', 'yes');
|
||||
addMeta('apple-touch-fullscreen', 'yes');
|
||||
|
||||
if (!window.Ext) {
|
||||
window.Ext = {};
|
||||
}
|
||||
Ext.microloaded = true;
|
||||
|
||||
var filterPlatform = window.Ext.filterPlatform = function(platform) {
|
||||
var profileMatch = false,
|
||||
ua = navigator.userAgent,
|
||||
j, jln;
|
||||
|
||||
platform = [].concat(platform);
|
||||
|
||||
function isPhone(ua) {
|
||||
var isMobile = /Mobile(\/|\s)/.test(ua);
|
||||
|
||||
// Either:
|
||||
// - iOS but not iPad
|
||||
// - Android 2
|
||||
// - Android with "Mobile" in the UA
|
||||
|
||||
return /(iPhone|iPod)/.test(ua) ||
|
||||
(!/(Silk)/.test(ua) && (/(Android)/.test(ua) && (/(Android 2)/.test(ua) || isMobile))) ||
|
||||
(/(BlackBerry|BB)/.test(ua) && isMobile) ||
|
||||
/(Windows Phone)/.test(ua);
|
||||
}
|
||||
|
||||
function isTablet(ua) {
|
||||
return !isPhone(ua) && (/iPad/.test(ua) || /Android|Silk/.test(ua) || /(RIM Tablet OS)/.test(ua) ||
|
||||
(/MSIE 10/.test(ua) && /; Touch/.test(ua)));
|
||||
}
|
||||
|
||||
// Check if the ?platform parameter is set in the URL
|
||||
var paramsString = window.location.search.substr(1),
|
||||
paramsArray = paramsString.split("&"),
|
||||
params = {},
|
||||
testPlatform, i;
|
||||
|
||||
for (i = 0; i < paramsArray.length; i++) {
|
||||
var tmpArray = paramsArray[i].split("=");
|
||||
params[tmpArray[0]] = tmpArray[1];
|
||||
}
|
||||
|
||||
testPlatform = params.platform;
|
||||
if (testPlatform) {
|
||||
return platform.indexOf(testPlatform) != -1;
|
||||
}
|
||||
|
||||
for (j = 0, jln = platform.length; j < jln; j++) {
|
||||
switch (platform[j]) {
|
||||
case 'phone':
|
||||
profileMatch = isPhone(ua);
|
||||
break;
|
||||
case 'tablet':
|
||||
profileMatch = isTablet(ua);
|
||||
break;
|
||||
case 'desktop':
|
||||
profileMatch = !isPhone(ua) && !isTablet(ua);
|
||||
break;
|
||||
case 'ios':
|
||||
profileMatch = /(iPad|iPhone|iPod)/.test(ua);
|
||||
break;
|
||||
case 'android':
|
||||
profileMatch = /(Android|Silk)/.test(ua);
|
||||
break;
|
||||
case 'blackberry':
|
||||
profileMatch = /(BlackBerry|BB)/.test(ua);
|
||||
break;
|
||||
case 'safari':
|
||||
profileMatch = /Safari/.test(ua) && !(/(BlackBerry|BB)/.test(ua));
|
||||
break;
|
||||
case 'chrome':
|
||||
profileMatch = /Chrome/.test(ua);
|
||||
break;
|
||||
case 'ie10':
|
||||
profileMatch = /MSIE 10/.test(ua);
|
||||
break;
|
||||
case 'windows':
|
||||
profileMatch = /MSIE 10/.test(ua) || /Trident/.test(ua);
|
||||
break;
|
||||
case 'tizen':
|
||||
profileMatch = /Tizen/.test(ua);
|
||||
break;
|
||||
case 'firefox':
|
||||
profileMatch = /Firefox/.test(ua);
|
||||
}
|
||||
if (profileMatch) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
|
||||
for (i = 0,ln = styleSheets.length; i < ln; i++) {
|
||||
path = styleSheets[i];
|
||||
|
||||
if (typeof path != 'string') {
|
||||
platform = path.platform;
|
||||
exclude = path.exclude;
|
||||
theme = path.theme;
|
||||
path = path.path;
|
||||
}
|
||||
|
||||
if (platform) {
|
||||
if (!filterPlatform(platform) || filterPlatform(exclude)) {
|
||||
continue;
|
||||
}
|
||||
Ext.theme = {
|
||||
name: theme || 'Default'
|
||||
};
|
||||
}
|
||||
|
||||
write('<link rel="stylesheet" href="'+path+'">');
|
||||
}
|
||||
|
||||
for (i = 0,ln = scripts.length; i < ln; i++) {
|
||||
path = scripts[i];
|
||||
|
||||
if (typeof path != 'string') {
|
||||
platform = path.platform;
|
||||
exclude = path.exclude;
|
||||
path = path.path;
|
||||
}
|
||||
|
||||
if (platform) {
|
||||
if (!filterPlatform(platform) || filterPlatform(exclude)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
write('<script src="'+path+'"></'+'script>');
|
||||
}
|
||||
|
||||
})();
|
||||
742
.sencha/app/microloader/production.js
Normal file
742
.sencha/app/microloader/production.js
Normal file
@@ -0,0 +1,742 @@
|
||||
/**
|
||||
* Sencha Blink
|
||||
* @author Jacky Nguyen <jacky@sencha.com>
|
||||
*/
|
||||
(function(global) {
|
||||
var emptyFn = function(){},
|
||||
callbacks = [],
|
||||
doc = global.document,
|
||||
head = doc.head,
|
||||
addWindowListener = global.addEventListener,
|
||||
removeWindowListener = global.removeEventListener,
|
||||
jsonParse = JSON.parse,
|
||||
a = doc.createElement('a'),
|
||||
documentLocation = doc.location,
|
||||
documentUri = documentLocation.protocol + '//' + documentLocation.hostname + documentLocation.pathname + documentLocation.search,
|
||||
manifestFile = 'app.json',
|
||||
isRefreshing = false,
|
||||
activeManifest, appCache, storage;
|
||||
|
||||
try {
|
||||
storage = global.localStorage;
|
||||
appCache = global.applicationCache;
|
||||
}
|
||||
catch(e) {}
|
||||
|
||||
function getManifestStorageKey(id) {
|
||||
return id + '-' + documentUri + manifestFile;
|
||||
}
|
||||
|
||||
function Manifest(manifest) {
|
||||
var manifestContent;
|
||||
|
||||
if (typeof manifest == 'string') {
|
||||
manifestContent = manifest;
|
||||
manifest = jsonParse(manifestContent);
|
||||
}
|
||||
else {
|
||||
manifestContent = JSON.stringify(manifest);
|
||||
}
|
||||
|
||||
var applicationId = manifest.id,
|
||||
key = getManifestStorageKey(applicationId),
|
||||
assetMap = {};
|
||||
|
||||
function processAsset(asset) {
|
||||
var uri;
|
||||
|
||||
if (typeof asset == 'string') {
|
||||
asset = {
|
||||
path: asset
|
||||
};
|
||||
}
|
||||
|
||||
if (asset.shared) {
|
||||
asset.version = asset.shared;
|
||||
uri = asset.shared + asset.path;
|
||||
}
|
||||
else {
|
||||
uri = toAbsoluteUri(asset.path);
|
||||
}
|
||||
|
||||
asset.uri = uri;
|
||||
asset.key = applicationId + '-' + uri;
|
||||
assetMap[uri] = asset;
|
||||
|
||||
return asset;
|
||||
}
|
||||
|
||||
function processAssets(assets, type) {
|
||||
var ln = assets.length,
|
||||
i, asset;
|
||||
|
||||
for (i = 0; i < ln; i++) {
|
||||
asset = assets[i];
|
||||
|
||||
assets[i] = asset = processAsset(asset);
|
||||
|
||||
asset.type = type;
|
||||
asset.index = i;
|
||||
asset.collection = assets;
|
||||
asset.ready = false;
|
||||
asset.evaluated = false;
|
||||
}
|
||||
|
||||
return assets;
|
||||
}
|
||||
|
||||
this.key = key;
|
||||
this.css = processAssets(manifest.css, 'css');
|
||||
this.js = processAssets(manifest.js, 'js');
|
||||
|
||||
Ext.microloaded = true;
|
||||
|
||||
var filterPlatform = window.Ext.filterPlatform = function(platform) {
|
||||
var profileMatch = false,
|
||||
ua = navigator.userAgent,
|
||||
j, jln;
|
||||
|
||||
platform = [].concat(platform);
|
||||
|
||||
function isPhone(ua) {
|
||||
var isMobile = /Mobile(\/|\s)/.test(ua);
|
||||
|
||||
// Either:
|
||||
// - iOS but not iPad
|
||||
// - Android 2
|
||||
// - Android with "Mobile" in the UA
|
||||
|
||||
return /(iPhone|iPod)/.test(ua) ||
|
||||
(!/(Silk)/.test(ua) && (/(Android)/.test(ua) && (/(Android 2)/.test(ua) || isMobile))) ||
|
||||
(/(BlackBerry|BB)/.test(ua) && isMobile) ||
|
||||
/(Windows Phone)/.test(ua);
|
||||
}
|
||||
|
||||
function isTablet(ua) {
|
||||
return !isPhone(ua) && (/iPad/.test(ua) || /Android|Silk/.test(ua) || /(RIM Tablet OS)/.test(ua) ||
|
||||
(/MSIE 10/.test(ua) && /; Touch/.test(ua)));
|
||||
}
|
||||
|
||||
// Check if the ?platform parameter is set in the URL
|
||||
var paramsString = window.location.search.substr(1),
|
||||
paramsArray = paramsString.split("&"),
|
||||
params = {},
|
||||
testPlatform, i;
|
||||
|
||||
for (i = 0; i < paramsArray.length; i++) {
|
||||
var tmpArray = paramsArray[i].split("=");
|
||||
params[tmpArray[0]] = tmpArray[1];
|
||||
}
|
||||
|
||||
testPlatform = params.platform;
|
||||
if (testPlatform) {
|
||||
return platform.indexOf(testPlatform) != -1;
|
||||
}
|
||||
|
||||
for (j = 0, jln = platform.length; j < jln; j++) {
|
||||
switch (platform[j]) {
|
||||
case 'phone':
|
||||
profileMatch = isPhone(ua);
|
||||
break;
|
||||
case 'tablet':
|
||||
profileMatch = isTablet(ua);
|
||||
break;
|
||||
case 'desktop':
|
||||
profileMatch = !isPhone(ua) && !isTablet(ua);
|
||||
break;
|
||||
case 'ios':
|
||||
profileMatch = /(iPad|iPhone|iPod)/.test(ua);
|
||||
break;
|
||||
case 'android':
|
||||
profileMatch = /(Android|Silk)/.test(ua);
|
||||
break;
|
||||
case 'blackberry':
|
||||
profileMatch = /(BlackBerry|BB)/.test(ua);
|
||||
break;
|
||||
case 'safari':
|
||||
profileMatch = /Safari/.test(ua) && !(/(BlackBerry|BB)/.test(ua));
|
||||
break;
|
||||
case 'chrome':
|
||||
profileMatch = /Chrome/.test(ua);
|
||||
break;
|
||||
case 'ie10':
|
||||
profileMatch = /MSIE 10/.test(ua);
|
||||
break;
|
||||
case 'windows':
|
||||
profileMatch = /MSIE 10/.test(ua) || /Trident/.test(ua);
|
||||
break;
|
||||
case 'tizen':
|
||||
profileMatch = /Tizen/.test(ua);
|
||||
break;
|
||||
case 'firefox':
|
||||
profileMatch = /Firefox/.test(ua);
|
||||
}
|
||||
if (profileMatch) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
this.css = this.css.filter(function(css) {
|
||||
var platform = css.platform,
|
||||
exclude = css.exclude;
|
||||
|
||||
if (platform) {
|
||||
if (filterPlatform(platform) && !filterPlatform(exclude)) {
|
||||
Ext.theme = {
|
||||
name: css.theme || 'Default'
|
||||
};
|
||||
return true;
|
||||
}
|
||||
css.filtered = true;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
|
||||
this.js = this.js.filter(function(js) {
|
||||
var platform = js.platform,
|
||||
exclude = js.exclude;
|
||||
|
||||
if (platform) {
|
||||
if (filterPlatform(platform) && !filterPlatform(exclude)) {
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
js.filtered = true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
});
|
||||
|
||||
this.assets = this.css.concat(this.js);
|
||||
this.getAsset = function(uri) {
|
||||
return assetMap[uri];
|
||||
};
|
||||
this.store = function() {
|
||||
store(key, manifestContent);
|
||||
};
|
||||
}
|
||||
|
||||
if (typeof global.Ext === 'undefined') {
|
||||
var Ext = global.Ext = {};
|
||||
}
|
||||
|
||||
function toAbsoluteUri(uri) {
|
||||
a.href = uri;
|
||||
return a.href;
|
||||
}
|
||||
|
||||
function addMeta(name, content) {
|
||||
var meta = document.createElement('meta');
|
||||
|
||||
meta.setAttribute('name', name);
|
||||
meta.setAttribute('content', content);
|
||||
head.appendChild(meta);
|
||||
}
|
||||
|
||||
function request(uri, isShared, onSuccess, onFailure) {
|
||||
(isShared ? requestIframe : requestXhr)(uri, onSuccess, onFailure);
|
||||
}
|
||||
|
||||
function requestXhr(uri, onSuccess, onFailure) {
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
onFailure = onFailure || emptyFn;
|
||||
|
||||
uri = uri + ((uri.indexOf('?') == -1) ? '?' : '&') + Date.now();
|
||||
|
||||
try {
|
||||
xhr.open('GET', uri, true);
|
||||
xhr.onreadystatechange = function() {
|
||||
if (xhr.readyState == 4) {
|
||||
var status = xhr.status,
|
||||
content = xhr.responseText;
|
||||
|
||||
if ((status >= 200 && status < 300) || status == 304 || (status == 0 && content.length > 0)) {
|
||||
onSuccess(content);
|
||||
}
|
||||
else {
|
||||
onFailure();
|
||||
}
|
||||
}
|
||||
};
|
||||
xhr.send(null);
|
||||
} catch (e) {
|
||||
onFailure();
|
||||
}
|
||||
}
|
||||
|
||||
function requestIframe(uri, onSuccess) {
|
||||
var iframe = doc.createElement('iframe');
|
||||
|
||||
callbacks.push({
|
||||
iframe: iframe,
|
||||
callback: onSuccess
|
||||
});
|
||||
|
||||
iframe.src = uri + '.html';
|
||||
iframe.style.cssText = 'width:0;height:0;border:0;position:absolute;z-index:-999;visibility:hidden';
|
||||
doc.body.appendChild(iframe);
|
||||
}
|
||||
|
||||
function requestAsset(asset, onSuccess, onFailure) {
|
||||
var isRemote = !!asset.remote,
|
||||
isShared = !!asset.shared;
|
||||
|
||||
if (isRemote) {
|
||||
onSuccess('');
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isShared) {
|
||||
var onRequestSuccess = onSuccess,
|
||||
version = asset.version,
|
||||
versionLn = version.length,
|
||||
checksumFail, checksumType;
|
||||
|
||||
onSuccess = function(content) {
|
||||
checksumType = content.substring(0, 1);
|
||||
if (checksumType == '/') {
|
||||
if (content.substring(2, versionLn + 2) !== version) {
|
||||
checksumFail = true;
|
||||
}
|
||||
}
|
||||
else if (checksumType == 'f') {
|
||||
if (content.substring(9, versionLn + 9) !== version) {
|
||||
checksumFail = true;
|
||||
}
|
||||
}
|
||||
else if (checksumType == '.') {
|
||||
if (content.substring(1, versionLn + 1) !== version) {
|
||||
checksumFail = true;
|
||||
}
|
||||
}
|
||||
if (checksumFail === true) {
|
||||
if (confirm("Requested: '" + asset.uri + " seems to have been changed. Attempt to refresh the application?")) {
|
||||
refresh();
|
||||
}
|
||||
return;
|
||||
}
|
||||
onRequestSuccess(content);
|
||||
};
|
||||
}
|
||||
|
||||
request(asset.uri, isShared, onSuccess, onFailure);
|
||||
}
|
||||
|
||||
function onMessage(e) {
|
||||
var data = e.data,
|
||||
sourceWindow = e.source.window,
|
||||
i, ln, callback, iframe;
|
||||
|
||||
for (i = 0, ln = callbacks.length; i < ln; i++) {
|
||||
callback = callbacks[i];
|
||||
iframe = callback.iframe;
|
||||
|
||||
if (iframe.contentWindow === sourceWindow) {
|
||||
callback.callback(data);
|
||||
doc.body.removeChild(iframe);
|
||||
callbacks.splice(i, 1);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function patch(content, delta) {
|
||||
var output = [],
|
||||
chunk, i, ln;
|
||||
|
||||
if (delta.length === 0) {
|
||||
return content;
|
||||
}
|
||||
|
||||
for (i = 0,ln = delta.length; i < ln; i++) {
|
||||
chunk = delta[i];
|
||||
|
||||
if (typeof chunk === 'number') {
|
||||
output.push(content.substring(chunk, chunk + delta[++i]));
|
||||
}
|
||||
else {
|
||||
output.push(chunk);
|
||||
}
|
||||
}
|
||||
|
||||
return output.join('');
|
||||
}
|
||||
|
||||
function log(message) {
|
||||
if (typeof console != 'undefined') {
|
||||
(console.error || console.log).call(console, message);
|
||||
}
|
||||
}
|
||||
|
||||
function store(key, value) {
|
||||
try {
|
||||
storage.setItem(key, value);
|
||||
}
|
||||
catch (e) {
|
||||
if (storage && e.code == e.QUOTA_EXCEEDED_ERR && activeManifest) {
|
||||
log("LocalStorage Quota exceeded, cannot store " + key + " locally");
|
||||
// Quota exceeded, clean up unused items
|
||||
// var items = activeManifest.assets.map(function(asset) {
|
||||
// return asset.key;
|
||||
// }),
|
||||
// i = 0,
|
||||
// ln = storage.length,
|
||||
// cleaned = false,
|
||||
// item;
|
||||
//
|
||||
// items.push(activeManifest.key);
|
||||
//
|
||||
// while (i <= ln - 1) {
|
||||
// item = storage.key(i);
|
||||
//
|
||||
// if (items.indexOf(item) == -1) {
|
||||
// storage.removeItem(item);
|
||||
// cleaned = true;
|
||||
// ln--;
|
||||
// }
|
||||
// else {
|
||||
// i++;
|
||||
// }
|
||||
// }
|
||||
|
||||
// Done cleaning up, attempt to store the value again
|
||||
// If there's still not enough space, no other choice
|
||||
// but to skip this item from being stored
|
||||
// if (cleaned) {
|
||||
// store(key, value);
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function retrieve(key) {
|
||||
try {
|
||||
return storage.getItem(key);
|
||||
}
|
||||
catch (e) {
|
||||
// Private browsing mode
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
function retrieveAsset(asset) {
|
||||
return retrieve(asset.key);
|
||||
}
|
||||
|
||||
function storeAsset(asset, content) {
|
||||
return store(asset.key, content);
|
||||
}
|
||||
|
||||
function refresh() {
|
||||
if (!isRefreshing) {
|
||||
isRefreshing = true;
|
||||
requestXhr(manifestFile, function(content) {
|
||||
new Manifest(content).store();
|
||||
global.location.reload();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function blink(currentManifest) {
|
||||
var currentAssets = currentManifest.assets,
|
||||
assetsCount = currentAssets.length,
|
||||
newManifest;
|
||||
|
||||
activeManifest = currentManifest;
|
||||
|
||||
addWindowListener('message', onMessage, false);
|
||||
|
||||
function onAssetReady(asset, content) {
|
||||
var assets = asset.collection,
|
||||
index = asset.index,
|
||||
ln = assets.length,
|
||||
i;
|
||||
|
||||
asset.ready = true;
|
||||
asset.content = content;
|
||||
|
||||
for (i = index - 1; i >= 0; i--) {
|
||||
asset = assets[i];
|
||||
if (!asset.filtered && (!asset.ready || !asset.evaluated)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = index; i < ln; i++) {
|
||||
asset = assets[i];
|
||||
if (asset.ready) {
|
||||
if (!asset.evaluated) {
|
||||
evaluateAsset(asset);
|
||||
}
|
||||
}
|
||||
else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function evaluateAsset(asset) {
|
||||
asset.evaluated = true;
|
||||
|
||||
if (asset.type == 'js') {
|
||||
try {
|
||||
eval(asset.content);
|
||||
}
|
||||
catch (e) {
|
||||
log("Error evaluating " + asset.uri + " with message: " + e);
|
||||
}
|
||||
}
|
||||
else {
|
||||
var style = doc.createElement('style'),
|
||||
base;
|
||||
|
||||
style.type = 'text/css';
|
||||
style.textContent = asset.content;
|
||||
|
||||
if ('id' in asset) {
|
||||
style.id = asset.id;
|
||||
}
|
||||
|
||||
if ('disabled' in asset) {
|
||||
style.disabled = asset.disabled;
|
||||
}
|
||||
|
||||
base = document.createElement('base');
|
||||
base.href = asset.path.replace(/\/[^\/]*$/, '/');
|
||||
head.appendChild(base);
|
||||
head.appendChild(style);
|
||||
head.removeChild(base);
|
||||
}
|
||||
|
||||
delete asset.content;
|
||||
|
||||
if (--assetsCount == 0) {
|
||||
onReady();
|
||||
}
|
||||
}
|
||||
|
||||
function onReady() {
|
||||
var updatingAssets = [],
|
||||
appCacheReady = false,
|
||||
onAppCacheIdle = function() {},
|
||||
onAppCacheReady = function() {
|
||||
appCache.swapCache();
|
||||
appCacheReady = true;
|
||||
onAppCacheIdle();
|
||||
},
|
||||
updatingCount;
|
||||
|
||||
removeWindowListener('message', onMessage, false);
|
||||
|
||||
if (appCache.status == appCache.UPDATEREADY) {
|
||||
onAppCacheReady();
|
||||
}
|
||||
else if (appCache.status == appCache.CHECKING || appCache.status == appCache.DOWNLOADING) {
|
||||
appCache.onupdateready = onAppCacheReady;
|
||||
appCache.onnoupdate = appCache.onobsolete = function() {
|
||||
onAppCacheIdle();
|
||||
};
|
||||
}
|
||||
|
||||
function notifyUpdateIfAppCacheReady() {
|
||||
if (appCacheReady) {
|
||||
notifyUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
function notifyUpdate() {
|
||||
var updatedCallback = Ext.onUpdated || emptyFn;
|
||||
|
||||
if ('onSetup' in Ext) {
|
||||
Ext.onSetup(updatedCallback);
|
||||
}
|
||||
else {
|
||||
updatedCallback();
|
||||
}
|
||||
}
|
||||
|
||||
function doUpdate() {
|
||||
newManifest.store();
|
||||
|
||||
updatingAssets.forEach(function(asset) {
|
||||
storeAsset(asset, asset.content);
|
||||
});
|
||||
|
||||
notifyUpdate();
|
||||
}
|
||||
|
||||
function onAssetUpdated(asset, content) {
|
||||
asset.content = content;
|
||||
|
||||
if (--updatingCount == 0) {
|
||||
if (appCache.status == appCache.IDLE) {
|
||||
doUpdate();
|
||||
}
|
||||
else {
|
||||
onAppCacheIdle = doUpdate;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function checkForUpdate() {
|
||||
removeWindowListener('online', checkForUpdate, false);
|
||||
requestXhr(manifestFile, function(manifestContent) {
|
||||
activeManifest = newManifest = new Manifest(manifestContent);
|
||||
|
||||
var assets = newManifest.assets,
|
||||
currentAsset;
|
||||
|
||||
assets.forEach(function(asset) {
|
||||
currentAsset = currentManifest.getAsset(asset.uri);
|
||||
|
||||
if (!currentAsset || asset.version !== currentAsset.version) {
|
||||
updatingAssets.push(asset);
|
||||
}
|
||||
});
|
||||
|
||||
updatingCount = updatingAssets.length;
|
||||
|
||||
if (updatingCount == 0) {
|
||||
if (appCache.status == appCache.IDLE) {
|
||||
notifyUpdateIfAppCacheReady();
|
||||
}
|
||||
else {
|
||||
onAppCacheIdle = notifyUpdateIfAppCacheReady;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
updatingAssets.forEach(function(asset) {
|
||||
var currentAsset = currentManifest.getAsset(asset.uri),
|
||||
path = asset.path,
|
||||
update = asset.update;
|
||||
|
||||
function updateFull() {
|
||||
requestAsset(asset, function(content) {
|
||||
onAssetUpdated(asset, content);
|
||||
});
|
||||
}
|
||||
|
||||
// New asset (never used before)
|
||||
// OR Shared from CDN
|
||||
// OR Missing local storage
|
||||
// OR Full update
|
||||
if (!currentAsset || !update || retrieveAsset(asset) === null || update != 'delta') {
|
||||
updateFull();
|
||||
}
|
||||
else {
|
||||
requestXhr('deltas/' + path + '/' + currentAsset.version + '.json',
|
||||
function(content) {
|
||||
try {
|
||||
onAssetUpdated(asset, patch(retrieveAsset(asset), jsonParse(content)));
|
||||
}
|
||||
catch (e) {
|
||||
log("Malformed delta content received for " + asset.uri);
|
||||
}
|
||||
},
|
||||
updateFull
|
||||
);
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
if (navigator.onLine !== false) {
|
||||
checkForUpdate();
|
||||
}
|
||||
else {
|
||||
addWindowListener('online', checkForUpdate, false);
|
||||
}
|
||||
}
|
||||
|
||||
if (assetsCount == 0) {
|
||||
onReady();
|
||||
return;
|
||||
}
|
||||
|
||||
currentAssets.forEach(function(asset) {
|
||||
var content = retrieveAsset(asset);
|
||||
|
||||
if (content === null) {
|
||||
requestAsset(asset, function(content) {
|
||||
if (!asset.remote) {
|
||||
storeAsset(asset, content);
|
||||
}
|
||||
onAssetReady(asset, content);
|
||||
}, function() {
|
||||
onAssetReady(asset, '');
|
||||
});
|
||||
}
|
||||
else {
|
||||
onAssetReady(asset, content);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function blinkOnDomReady(manifest) {
|
||||
if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
|
||||
var msViewportStyle = document.createElement("style");
|
||||
msViewportStyle.appendChild(
|
||||
document.createTextNode(
|
||||
"@media screen and (orientation: portrait) {" +
|
||||
"@-ms-viewport {width: 320px !important;}" +
|
||||
"}" +
|
||||
"@media screen and (orientation: landscape) {" +
|
||||
"@-ms-viewport {width: 560px !important;}" +
|
||||
"}"
|
||||
)
|
||||
);
|
||||
document.getElementsByTagName("head")[0].appendChild(msViewportStyle);
|
||||
}
|
||||
|
||||
var readyStateRe = (/MSIE 10/.test(navigator.userAgent)) ? /complete|loaded/ : /interactive|complete|loaded/;
|
||||
if (doc.readyState.match(readyStateRe) !== null) {
|
||||
blink(manifest);
|
||||
}
|
||||
else {
|
||||
addWindowListener('DOMContentLoaded', function() {
|
||||
if (navigator.standalone) {
|
||||
// When running from Home Screen, the splash screen will not disappear until all
|
||||
// external resource requests finish.
|
||||
// The first timeout clears the splash screen
|
||||
// The second timeout allows inital HTML content to be displayed
|
||||
setTimeout(function() {
|
||||
setTimeout(function() {
|
||||
blink(manifest);
|
||||
}, 1);
|
||||
}, 1);
|
||||
}
|
||||
else {
|
||||
setTimeout(function() {
|
||||
blink(manifest);
|
||||
}, 1);
|
||||
}
|
||||
}, false);
|
||||
}
|
||||
}
|
||||
|
||||
Ext.blink = function(manifest) {
|
||||
var manifestContent = retrieve(getManifestStorageKey(manifest.id));
|
||||
|
||||
addMeta('viewport', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no');
|
||||
addMeta('apple-mobile-web-app-capable', 'yes');
|
||||
addMeta('apple-touch-fullscreen', 'yes');
|
||||
|
||||
if (manifestContent) {
|
||||
manifest = new Manifest(manifestContent);
|
||||
blinkOnDomReady(manifest);
|
||||
}
|
||||
else {
|
||||
requestXhr(manifestFile, function(content) {
|
||||
manifest = new Manifest(content);
|
||||
manifest.store();
|
||||
blinkOnDomReady(manifest);
|
||||
});
|
||||
}
|
||||
};
|
||||
})(this);
|
||||
177
.sencha/app/microloader/testing.js
Normal file
177
.sencha/app/microloader/testing.js
Normal file
@@ -0,0 +1,177 @@
|
||||
/**
|
||||
* Sencha Blink - Testing
|
||||
* @author Jacky Nguyen <jacky@sencha.com>
|
||||
*/
|
||||
(function(global) {
|
||||
var head = global.document.head,
|
||||
Ext = global.Ext;
|
||||
|
||||
if (typeof Ext == 'undefined') {
|
||||
global.Ext = Ext = {};
|
||||
}
|
||||
|
||||
function write(content) {
|
||||
document.write(content);
|
||||
}
|
||||
|
||||
function addMeta(name, content) {
|
||||
var meta = document.createElement('meta');
|
||||
|
||||
meta.setAttribute('name', name);
|
||||
meta.setAttribute('content', content);
|
||||
head.appendChild(meta);
|
||||
}
|
||||
|
||||
Ext.blink = function(options) {
|
||||
var scripts = options.js || [],
|
||||
styleSheets = options.css || [],
|
||||
i, ln, path, platform, theme;
|
||||
|
||||
if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
|
||||
var msViewportStyle = document.createElement("style");
|
||||
msViewportStyle.appendChild(
|
||||
document.createTextNode(
|
||||
"@media screen and (orientation: portrait) {" +
|
||||
"@-ms-viewport {width: 320px !important;}" +
|
||||
"}" +
|
||||
"@media screen and (orientation: landscape) {" +
|
||||
"@-ms-viewport {width: 560px !important;}" +
|
||||
"}"
|
||||
)
|
||||
);
|
||||
document.getElementsByTagName("head")[0].appendChild(msViewportStyle);
|
||||
}
|
||||
addMeta('viewport', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no');
|
||||
addMeta('apple-mobile-web-app-capable', 'yes');
|
||||
addMeta('apple-touch-fullscreen', 'yes');
|
||||
|
||||
Ext.microloaded = true;
|
||||
|
||||
var filterPlatform = window.Ext.filterPlatform = function(platform) {
|
||||
var profileMatch = false,
|
||||
ua = navigator.userAgent,
|
||||
j, jln, exclude;
|
||||
|
||||
platform = [].concat(platform);
|
||||
|
||||
function isPhone(ua) {
|
||||
var isMobile = /Mobile(\/|\s)/.test(ua);
|
||||
|
||||
// Either:
|
||||
// - iOS but not iPad
|
||||
// - Android 2
|
||||
// - Android with "Mobile" in the UA
|
||||
|
||||
return /(iPhone|iPod)/.test(ua) ||
|
||||
(!/(Silk)/.test(ua) && (/(Android)/.test(ua) && (/(Android 2)/.test(ua) || isMobile))) ||
|
||||
(/(BlackBerry|BB)/.test(ua) && isMobile) ||
|
||||
/(Windows Phone)/.test(ua);
|
||||
}
|
||||
|
||||
function isTablet(ua) {
|
||||
return !isPhone(ua) && (/iPad/.test(ua) || /Android|Silk/.test(ua) || /(RIM Tablet OS)/.test(ua) ||
|
||||
(/MSIE 10/.test(ua) && /; Touch/.test(ua)));
|
||||
}
|
||||
|
||||
// Check if the ?platform parameter is set in the URL
|
||||
var paramsString = window.location.search.substr(1),
|
||||
paramsArray = paramsString.split("&"),
|
||||
params = {},
|
||||
testPlatform, i;
|
||||
|
||||
for (i = 0; i < paramsArray.length; i++) {
|
||||
var tmpArray = paramsArray[i].split("=");
|
||||
params[tmpArray[0]] = tmpArray[1];
|
||||
}
|
||||
|
||||
testPlatform = params.platform;
|
||||
if (testPlatform) {
|
||||
return platform.indexOf(testPlatform) != -1;
|
||||
}
|
||||
|
||||
for (j = 0, jln = platform.length; j < jln; j++) {
|
||||
switch (platform[j]) {
|
||||
case 'phone':
|
||||
profileMatch = isPhone(ua);
|
||||
break;
|
||||
case 'tablet':
|
||||
profileMatch = isTablet(ua);
|
||||
break;
|
||||
case 'desktop':
|
||||
profileMatch = !isPhone(ua) && !isTablet(ua);
|
||||
break;
|
||||
case 'ios':
|
||||
profileMatch = /(iPad|iPhone|iPod)/.test(ua);
|
||||
break;
|
||||
case 'android':
|
||||
profileMatch = /(Android|Silk)/.test(ua);
|
||||
break;
|
||||
case 'blackberry':
|
||||
profileMatch = /(BlackBerry|BB)/.test(ua);
|
||||
break;
|
||||
case 'safari':
|
||||
profileMatch = /Safari/.test(ua) && !(/(BlackBerry|BB)/.test(ua));
|
||||
break;
|
||||
case 'chrome':
|
||||
profileMatch = /Chrome/.test(ua);
|
||||
break;
|
||||
case 'ie10':
|
||||
profileMatch = /MSIE 10/.test(ua);
|
||||
break;
|
||||
case 'windows':
|
||||
profileMatch = /MSIE 10/.test(ua) || /Trident/.test(ua);
|
||||
break;
|
||||
case 'tizen':
|
||||
profileMatch = /Tizen/.test(ua);
|
||||
break;
|
||||
case 'firefox':
|
||||
profileMatch = /Firefox/.test(ua);
|
||||
}
|
||||
if (profileMatch) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
for (i = 0,ln = styleSheets.length; i < ln; i++) {
|
||||
path = styleSheets[i];
|
||||
|
||||
if (typeof path != 'string') {
|
||||
platform = path.platform;
|
||||
exclude = path.exclude;
|
||||
theme = path.theme;
|
||||
path = path.path;
|
||||
}
|
||||
|
||||
if (platform) {
|
||||
if (!filterPlatform(platform) || filterPlatform(exclude)) {
|
||||
continue;
|
||||
}
|
||||
Ext.theme = {
|
||||
name: theme || 'Default'
|
||||
};
|
||||
}
|
||||
write('<link rel="stylesheet" href="'+path+'">');
|
||||
}
|
||||
|
||||
for (i = 0,ln = scripts.length; i < ln; i++) {
|
||||
path = scripts[i];
|
||||
|
||||
if (typeof path != 'string') {
|
||||
platform = path.platform;
|
||||
exclude = path.exclude;
|
||||
path = path.path;
|
||||
}
|
||||
|
||||
if (platform) {
|
||||
if (!filterPlatform(platform) || filterPlatform(exclude)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
write('<script src="'+path+'"></'+'script>');
|
||||
}
|
||||
}
|
||||
|
||||
})(this);
|
||||
19
.sencha/app/native.properties
Normal file
19
.sencha/app/native.properties
Normal file
@@ -0,0 +1,19 @@
|
||||
# =============================================================================
|
||||
# This file provides an override point for default variables defined in
|
||||
# build.properties and defaults.properties.
|
||||
#
|
||||
# IMPORTANT - Sencha Cmd will merge your changes with its own during upgrades.
|
||||
# To avoid potential merge conflicts avoid making large, sweeping changes to
|
||||
# this file.
|
||||
# =============================================================================
|
||||
|
||||
# enable yui compression
|
||||
build.compression.yui=1
|
||||
enable.standalone.manifest=true
|
||||
|
||||
build.options=${build.options.debug.disable},${build.options.logger.disable},${build.options.default}
|
||||
app.microloader.name=testing.js
|
||||
|
||||
skip.native-package=false
|
||||
|
||||
build.dir=${app.phonegap.www.dir}
|
||||
15
.sencha/app/package.properties
Normal file
15
.sencha/app/package.properties
Normal file
@@ -0,0 +1,15 @@
|
||||
# =============================================================================
|
||||
# This file provides an override point for default variables defined in
|
||||
# build.properties and defaults.properties.
|
||||
#
|
||||
# IMPORTANT - Sencha Cmd will merge your changes with its own during upgrades.
|
||||
# To avoid potential merge conflicts avoid making large, sweeping changes to
|
||||
# this file.
|
||||
# =============================================================================
|
||||
|
||||
# enable yui compression
|
||||
build.compression.yui=1
|
||||
|
||||
build.options=${build.options.debug.disable},${build.options.logger.disable},${build.options.default}
|
||||
app.microloader.name=testing.js
|
||||
|
||||
127
.sencha/app/packager-impl.xml
Normal file
127
.sencha/app/packager-impl.xml
Normal file
@@ -0,0 +1,127 @@
|
||||
<project name="packager-impl">
|
||||
<macrodef name="x-run-mobile-packager">
|
||||
<attribute name="configfile"/>
|
||||
<attribute name="action"/>
|
||||
<sequential>
|
||||
<echo>Running mobile packager action @{action} on file @{configFile}</echo>
|
||||
<x-sencha-command dir="${app.dir}" inheritall="true">
|
||||
<![CDATA[
|
||||
app
|
||||
package
|
||||
@{action}
|
||||
-path=@{configfile}
|
||||
]]>
|
||||
</x-sencha-command>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
|
||||
<macrodef name="x-run-mobile-packager-config">
|
||||
<attribute name="config"/>
|
||||
<attribute name="run" default="${args.autorun}"/>
|
||||
<sequential>
|
||||
<if>
|
||||
<not>
|
||||
<available file="@{config}"/>
|
||||
</not>
|
||||
<then>
|
||||
<!--
|
||||
if the input packager config file for stbuild is
|
||||
not available, then create it
|
||||
-->
|
||||
<echo><![CDATA[
|
||||
Creating default mobile packager config file at :
|
||||
@{config}
|
||||
]]></echo>
|
||||
<x-run-mobile-packager
|
||||
configfile="@{config}"
|
||||
action="generate"/>
|
||||
</then>
|
||||
</if>
|
||||
|
||||
<local name="local.build.mobile.out.dir"/>
|
||||
<local name="local.build.mobile.config.name"/>
|
||||
|
||||
<!--
|
||||
append the current config file name to the output directory
|
||||
for mobile packages. this allows multiple config outputs to
|
||||
be sandboxed by the name of the config file in the mobile
|
||||
package output directory.
|
||||
-->
|
||||
<basename file="@{config}" property="local.build.mobile.config.name"/>
|
||||
<property name="local.build.mobile.out.dir"
|
||||
value="${build.mobile.packager.out.dir}/${local.build.mobile.config.name}"/>
|
||||
|
||||
<!--
|
||||
duplicate the config file, so that we can set the
|
||||
input and output properties w/o losing comment blocks
|
||||
-->
|
||||
<x-set-json-property file="@{config}"
|
||||
tofile="${build.mobile.packager.temp.file}">
|
||||
<property name="inputPath"
|
||||
value="${build.mobile.packager.in.dir}"/>
|
||||
<property name="outputPath"
|
||||
value="${local.build.mobile.out.dir}"/>
|
||||
</x-set-json-property>
|
||||
|
||||
<echo><![CDATA[
|
||||
Processing Mobile Packager config file
|
||||
config: @{config}
|
||||
inputPath: ${build.mobile.packager.in.dir}
|
||||
outputPath: ${local.build.mobile.out.dir}
|
||||
]]></echo>
|
||||
|
||||
<local name="mobile.packager.platform"/>
|
||||
|
||||
<x-load-properties file="${build.mobile.packager.temp.file}"
|
||||
prefix="mobile.packager"
|
||||
required="true"/>
|
||||
|
||||
<if>
|
||||
<contains string="${mobile.packager.platform}" substring="iOS"/>
|
||||
<then>
|
||||
<copy todir="${build.dir}">
|
||||
<fileset dir="${app.dir}/resources/icons" includes="**/*"/>
|
||||
<fileset dir="${app.dir}/resources/loading" includes="**/*"/>
|
||||
</copy>
|
||||
</then>
|
||||
</if>
|
||||
|
||||
<local name="build.mobile.action"/>
|
||||
<condition property="build.mobile.action" value="run">
|
||||
<x-is-true value="@{run}"/>
|
||||
</condition>
|
||||
<property name="build.mobile.action" value="build"/>
|
||||
|
||||
<x-run-mobile-packager
|
||||
configFile="${build.mobile.packager.temp.file}"
|
||||
action="${build.mobile.action}"/>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<target name="-native-package-mobile">
|
||||
<if>
|
||||
<x-is-true value="${args.autorun}"/>
|
||||
<then>
|
||||
<echo>Running default mobile packager config.</echo>
|
||||
<x-run-mobile-packager-config config="${build.mobile.packager.default.file}"
|
||||
run="true"/>
|
||||
</then>
|
||||
<else>
|
||||
<echo>Building all specified mobile packager configs.</echo>
|
||||
<for param="configfile" list="${build.mobile.packager.file}">
|
||||
<sequential>
|
||||
<x-run-mobile-packager-config config="@{configfile}" run="false"/>
|
||||
</sequential>
|
||||
</for>
|
||||
</else>
|
||||
</if>
|
||||
</target>
|
||||
|
||||
<target name="-before-native-package"/>
|
||||
<target name="-native-package"
|
||||
depends="-native-package-mobile">
|
||||
</target>
|
||||
<target name="-after-native-package"/>
|
||||
|
||||
</project>
|
||||
182
.sencha/app/page-impl.xml
Normal file
182
.sencha/app/page-impl.xml
Normal file
@@ -0,0 +1,182 @@
|
||||
<project name="page-impl.xml">
|
||||
<target name="-build-output-microload-page">
|
||||
<if>
|
||||
<x-is-true value="${build.enable.embedded.manifest}"/>
|
||||
<then>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
# generate microloader file
|
||||
microload
|
||||
-operation=microloader
|
||||
-microloaderPath=${app.microloader.path}
|
||||
-tpl=${build.microloader.code.tpl}
|
||||
-out=${build.microloader.path}
|
||||
and
|
||||
# generate json file
|
||||
microload
|
||||
-operation=json
|
||||
-append
|
||||
-tpl=${build.microloader.json.tpl.embedded}
|
||||
-out=${build.microloader.path}
|
||||
]]>
|
||||
</x-compile>
|
||||
</then>
|
||||
<else>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
# generate json file
|
||||
microload
|
||||
-operation=json
|
||||
-tpl=${build.microloader.json.tpl.standalone}
|
||||
-out=${build.out.json.path}
|
||||
and
|
||||
# generate microloader file
|
||||
microload
|
||||
-operation=microloader
|
||||
-microloaderPath=${app.microloader.path}
|
||||
-tpl=${build.microloader.code.tpl}
|
||||
-out=${build.microloader.path}
|
||||
and
|
||||
microload
|
||||
-operation=json
|
||||
-append
|
||||
-tpl=${build.microloader.json.tpl.external}
|
||||
-out=${build.microloader.path}
|
||||
]]>
|
||||
</x-compile>
|
||||
</else>
|
||||
</if>
|
||||
|
||||
<if>
|
||||
<x-is-true value="${build.enable.embedded.microloader}"/>
|
||||
<then>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
markup
|
||||
-contentFile=${build.microloader.path}
|
||||
-tpl=${build.embedded.microloader.tpl}
|
||||
-out=${build.out.page.path}
|
||||
]]>
|
||||
</x-compile>
|
||||
|
||||
<!--once the generated microloader file is embedded, delete it-->
|
||||
<delete file="${build.microloader.path}"/>
|
||||
</then>
|
||||
<else>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
markup
|
||||
-markup=${build.external.microloader.markup}
|
||||
-out=${build.out.page.path}
|
||||
]]>
|
||||
</x-compile>
|
||||
</else>
|
||||
</if>
|
||||
|
||||
</target>
|
||||
|
||||
<!-- generates a separate json manifest for use with native packager -->
|
||||
<target name="-build-standalone-json-manifest">
|
||||
<x-run-if-true value="${enable.standalone.manifest}">
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
# generate json file
|
||||
microload
|
||||
-operation=json
|
||||
-tpl=${build.microloader.json.tpl.standalone}
|
||||
-out=${build.out.json.path}
|
||||
]]>
|
||||
</x-compile>
|
||||
</x-run-if-true>
|
||||
</target>
|
||||
|
||||
<target name="-build-output-markup-page">
|
||||
<condition property="internal.app.css.rel" value="${app.out.css.rel}">
|
||||
<x-is-true value="${enable.ext42.themes}"/>
|
||||
</condition>
|
||||
<property name="internal.app.css.rel" value=""/>
|
||||
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
markup
|
||||
-out=${build.out.page.path}
|
||||
]]>
|
||||
</x-compile>
|
||||
</target>
|
||||
|
||||
<!-- '-detect-app-build-properties' is defined in js-impl.xml -->
|
||||
<target name="-build-output-page"
|
||||
depends="-detect-app-build-properties,-build-standalone-json-manifest">
|
||||
<if>
|
||||
<x-is-true value="${build.output.markuponly}"/>
|
||||
<then>
|
||||
<x-ant-call target="-build-output-markup-page"/>
|
||||
</then>
|
||||
<else>
|
||||
<x-ant-call target="-build-output-microload-page"/>
|
||||
</else>
|
||||
</if>
|
||||
</target>
|
||||
|
||||
<target name="-copy-app-resources" depends="-init-compiler">
|
||||
<if>
|
||||
<x-is-false value="${build.output.markuponly}"/>
|
||||
<then>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
app-resources
|
||||
-compress=${enable.resource.compression}
|
||||
-out=${build.dir}
|
||||
]]>
|
||||
</x-compile>
|
||||
</then>
|
||||
</if>
|
||||
</target>
|
||||
|
||||
<target name="-generate-deltas" depends="-init-compiler">
|
||||
<if>
|
||||
<and>
|
||||
<x-is-true value="${enable.deltas}"/>
|
||||
<x-is-false value="${build.output.markuponly}"/>
|
||||
</and>
|
||||
<then>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
deltas
|
||||
-archivePath=${build.out.archive.path}
|
||||
-deltaPath=${build.out.delta.path}
|
||||
-resourcePath=${build.dir}
|
||||
]]>
|
||||
</x-compile>
|
||||
</then>
|
||||
</if>
|
||||
</target>
|
||||
|
||||
<target name="-generate-cache-manifest" depends="-init-compiler">
|
||||
<if>
|
||||
<and>
|
||||
<x-is-true value="${enable.cache.manifest}"/>
|
||||
<x-is-false value="${build.output.markuponly}"/>
|
||||
</and>
|
||||
<then>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
cache-manifest
|
||||
-cacheManifestPath=${build.manifest.path}
|
||||
]]>
|
||||
</x-compile>
|
||||
<replace file="${build.out.page.path}"
|
||||
token="<html manifest="""
|
||||
value="<html manifest="${build.manifest.name}""/>
|
||||
</then>
|
||||
</if>
|
||||
</target>
|
||||
|
||||
<target name="-before-page"/>
|
||||
<target name="-page"
|
||||
depends="-copy-app-resources,
|
||||
-generate-deltas,
|
||||
-build-output-page,
|
||||
-generate-cache-manifest"/>
|
||||
<target name="-after-page"/>
|
||||
</project>
|
||||
156
.sencha/app/phonegap-impl.xml
Normal file
156
.sencha/app/phonegap-impl.xml
Normal file
@@ -0,0 +1,156 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project name="PhoneGap">
|
||||
|
||||
<!-- ////////////// -->
|
||||
<!-- Public Targets -->
|
||||
<!-- ////////////// -->
|
||||
|
||||
<target name="PhoneGap + Sencha - Build" description="Builds the Application and the PhoneGap Native Platform"
|
||||
depends="phonegap-sencha-build"/>
|
||||
|
||||
<target name="PhoneGap + Sencha - Run" description="Builds the Application and the PhoneGap Native app then runs it"
|
||||
depends="phonegap-sencha-run"/>
|
||||
|
||||
<target name="Build" description="Builds the application without building the Sencha app"
|
||||
depends="phonegap-build"/>
|
||||
|
||||
<target name="Run" description="Runs the Native Application without building the Sencha app"
|
||||
depends="phonegap-run"/>
|
||||
|
||||
<target name="Clean"
|
||||
description="Cleans the General PhoneGap WWW Folder"
|
||||
depends="phonegap-clean"/>
|
||||
|
||||
<target name="phonegap-sencha-build" depends="native, build"/>
|
||||
<target name="phonegap-sencha-run" depends="native, -autorun, build"/>
|
||||
|
||||
<!--Init for All PhoneGap Tasks-->
|
||||
<target name="-before-phonegap-init"/>
|
||||
<target name="-phonegap-init">
|
||||
<property name="phonegap.local.properties" value="${app.dir}/phonegap.local.properties"/>
|
||||
<property file="${phonegap.local.properties}"/>
|
||||
</target>
|
||||
<target name="-after-phonegap-init"/>
|
||||
<target name="phonegap-init"
|
||||
depends="init, -before-phonegap-init, -phonegap-init, -after-phonegap-init"/>
|
||||
|
||||
<!-- Clean target for the Phonegap WWW directory -->
|
||||
<target name="-before-phonegap-clean"/>
|
||||
<target name="-phonegap-clean">
|
||||
<delete includeemptydirs="true">
|
||||
<fileset dir="${app.phonegap.www.dir}" includes="**/*"/>
|
||||
</delete>
|
||||
</target>
|
||||
<target name="-after-phonegap-clean"/>
|
||||
<target name="phonegap-clean" depends="phonegap-init, -before-phonegap-clean, -phonegap-clean, -after-phonegap-clean "/>
|
||||
|
||||
<!-- Copies a build folder into the Phonegap WWW Folder. Used for Native bulding command -->
|
||||
<target name="-before-phonegap-copy-build"/>
|
||||
<target name="-phonegap-copy-build">
|
||||
<if>
|
||||
<not>
|
||||
<equals arg1="${build.dir}" arg2="${app.phonegap.www.dir}"/>
|
||||
</not>
|
||||
<then>
|
||||
<copy todir="${app.phonegap.www.dir}" failonerror="false" quiet="true">
|
||||
<fileset dir="${build.dir}">
|
||||
<include name="**/*"/>
|
||||
</fileset>
|
||||
</copy>
|
||||
</then>
|
||||
</if>
|
||||
</target>
|
||||
<target name="-after-phonegap-copy-build"/>
|
||||
<target name="phonegap-copy-build" depends="phonegap-init">
|
||||
<x-ant-call unless="skip.phonegap-copy-build">
|
||||
<target name="-before-phonegap-copy-build"/>
|
||||
<target name="-phonegap-copy-build"/>
|
||||
<target name="-after-phonegap-copy-build"/>
|
||||
</x-ant-call>
|
||||
</target>
|
||||
|
||||
<target name="-before-phonegap"/>
|
||||
<target name="-after-phonegap"/>
|
||||
|
||||
<!-- Overall Phonegap Build Target. Determines type of build to use -->
|
||||
<target name="-before-phonegap-build"/>
|
||||
<target name="-phonegap-build" depends="phonegap-init, phonegap-copy-build">
|
||||
<if>
|
||||
<x-is-false value="${args.autorun}"/>
|
||||
<then>
|
||||
<if>
|
||||
<x-is-true value="${phonegap.build.remote}"/>
|
||||
<then>
|
||||
<x-ant-call target="-phonegap-remote-build"/>
|
||||
</then>
|
||||
<else>
|
||||
<x-ant-call target="-phonegap-local-build"/>
|
||||
</else>
|
||||
</if>
|
||||
</then>
|
||||
</if>
|
||||
</target>
|
||||
<target name="-after-phonegap-build"/>
|
||||
<target name="phonegap-build" depends="phonegap-init, -before-phonegap, -before-phonegap-build, -phonegap-build, -after-phonegap-build, -after-phonegap" />
|
||||
|
||||
<target name="-before-phonegap-run"/>
|
||||
<target name="-phonegap-run" depends="phonegap-init, phonegap-copy-build">
|
||||
<if>
|
||||
<x-is-true value="${args.autorun}"/>
|
||||
<then>
|
||||
<if>
|
||||
<x-is-true value="${phonegap.build.remote}"/>
|
||||
<then>
|
||||
<x-ant-call target="-phonegap-remote-run"/>
|
||||
</then>
|
||||
<else>
|
||||
<x-ant-call target="-phonegap-local-run"/>
|
||||
</else>
|
||||
</if>
|
||||
</then>
|
||||
</if>
|
||||
</target>
|
||||
<target name="-after-phonegap-run"/>
|
||||
<target name="phonegap-run" depends="phonegap-init, -autorun, -before-phonegap, -before-phonegap-run, -phonegap-run, -after-phonegap-run, -after-phonegap" />
|
||||
|
||||
<!-- Remote BUILD TARGETS -->
|
||||
<target name="-phonegap-remote-login">
|
||||
<x-shell reloadprofile="true" dir="${app.phonegap.dir}">
|
||||
phonegap remote login --username="${phonegap.build.remote.username}" --password="${phonegap.build.remote.password}"
|
||||
</x-shell>
|
||||
</target>
|
||||
|
||||
<target name="-phonegap-remote-build" depends="-phonegap-remote-login">
|
||||
<x-shell reloadprofile="true" dir="${app.phonegap.dir}">
|
||||
phonegap remote build ${phonegap.platform}
|
||||
</x-shell>
|
||||
</target>
|
||||
|
||||
<target name="-phonegap-remote-run" depends="-phonegap-remote-login">
|
||||
<x-shell reloadprofile="true" dir="${app.phonegap.dir}">
|
||||
phonegap remote run ${phonegap.platform}
|
||||
</x-shell>
|
||||
</target>
|
||||
|
||||
<!-- LOCAL BUILD TARGETS -->
|
||||
<target name="-phonegap-local-build">
|
||||
<x-shell reloadprofile="true" dir="${app.phonegap.dir}">
|
||||
phonegap local build ${phonegap.platform}
|
||||
</x-shell>
|
||||
</target>
|
||||
|
||||
<target name="-phonegap-local-run">
|
||||
<x-shell reloadprofile="true" dir="${app.phonegap.dir}">
|
||||
phonegap local run ${phonegap.platform}
|
||||
</x-shell>
|
||||
</target>
|
||||
|
||||
<target name="-before-native-package"/>
|
||||
<target name="-native-package" depends="phonegap-init, -before-phonegap, -phonegap-build, -phonegap-run, -after-phonegap"/>
|
||||
<target name="-after-native-package"/>
|
||||
|
||||
<!-- Utility Target for specifing autorun -->
|
||||
<target name="-autorun">
|
||||
<property name="args.autorun" value="true"/>
|
||||
</target>
|
||||
</project>
|
||||
32
.sencha/app/plugin.xml
Normal file
32
.sencha/app/plugin.xml
Normal file
@@ -0,0 +1,32 @@
|
||||
<project basedir=".">
|
||||
<!--
|
||||
This file can be freely edited, so long as the <import file="plugin-impl.xml"/>
|
||||
statement is not removed.
|
||||
|
||||
One of the purposes of this file is to hook various Sencha Command operations and do
|
||||
processing before or after the command is processed. To do this, simply provide the
|
||||
logic in a <target> using one of these names:
|
||||
|
||||
-before-generate-app Called before an application is generated
|
||||
-after-generate-app Called after an application is generated
|
||||
|
||||
-before-generate-controller Called before a controller is generated
|
||||
-after-generate-controller Called after a controller is generated
|
||||
|
||||
-before-generate-model Called before a model is generated
|
||||
-after-generate-model Called after a model is generated
|
||||
|
||||
-before-generate-profile Called before a profile is generated
|
||||
-after-generate-profile Called after a profile is generated
|
||||
-->
|
||||
<import file="${workspace.config.dir}/plugin.xml"/>
|
||||
|
||||
<!--
|
||||
<target name="-after-generate-model">
|
||||
... use ${args.path}, ${args.name} and ${args.fields} as needed ...
|
||||
</target>
|
||||
|
||||
Other targets are similar. There are properties prefixed with "args." and the name of
|
||||
the command line option that hold the parameters for the command.
|
||||
-->
|
||||
</project>
|
||||
17
.sencha/app/production.properties
Normal file
17
.sencha/app/production.properties
Normal file
@@ -0,0 +1,17 @@
|
||||
# =============================================================================
|
||||
# This file provides an override point for default variables defined in
|
||||
# build.properties and defaults.properties.
|
||||
#
|
||||
# IMPORTANT - Sencha Cmd will merge your changes with its own during upgrades.
|
||||
# To avoid potential merge conflicts avoid making large, sweeping changes to
|
||||
# this file.
|
||||
# =============================================================================
|
||||
|
||||
enable.deltas=true
|
||||
enable.cache.manifest=true
|
||||
enable.resource.compression=true
|
||||
build.enable.embedded.manifest=false
|
||||
|
||||
build.options=${build.options.debug.disable},${build.options.logger.disable},${build.options.default}
|
||||
app.microloader.name=production.js
|
||||
|
||||
152
.sencha/app/refresh-impl.xml
Normal file
152
.sencha/app/refresh-impl.xml
Normal file
@@ -0,0 +1,152 @@
|
||||
<project name="refresh-impl">
|
||||
<!--
|
||||
This macrodef regenerates the bootstrap.js class system metadata, which includes
|
||||
relative file paths, class names, alternate class names, and class alias data
|
||||
-->
|
||||
<macrodef name="x-run-bootstrap">
|
||||
<attribute name="file"/>
|
||||
<attribute name="basedir"/>
|
||||
<attribute name="appendMicroloader" default="false"/>
|
||||
<sequential>
|
||||
|
||||
<local name="tag.filter"/>
|
||||
<local name="ux.include"/>
|
||||
<local name="load.script.tpl"/>
|
||||
|
||||
<condition property="tag.filter" value="package-sencha-core,core">
|
||||
<x-is-true value="${enable.sencha-core.filter}"/>
|
||||
</condition>
|
||||
<property name="tag.filter" value="core"/>
|
||||
|
||||
<if>
|
||||
<equals arg1="${framework.name}" arg2="ext"/>
|
||||
<then>
|
||||
<property name="ux.include">
|
||||
include
|
||||
-namespace=Ext.ux
|
||||
and
|
||||
</property>
|
||||
<property name="load.script.tpl" value="Ext.Loader.loadScript("{0}");"/>
|
||||
</then>
|
||||
<else>
|
||||
<property name="ux.include" value=""/>
|
||||
<property name="load.script.tpl" value="Ext.Loader.loadScriptFile("{0}", Ext.emptyFn);"/>
|
||||
</else>
|
||||
</if>
|
||||
|
||||
<echo file="@{file}">
|
||||
/**
|
||||
* This file is generated by Sencha Cmd and should NOT be edited. It is
|
||||
* provided to support globbing requires, custom xtypes, and other
|
||||
* metadata-driven class system features
|
||||
*/
|
||||
</echo>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
union
|
||||
-not
|
||||
-tag=${tag.filter}
|
||||
and
|
||||
metadata
|
||||
+append
|
||||
-base-path=@{basedir}
|
||||
+loader-paths
|
||||
-jsonp=Ext.Loader.addClassPathMappings
|
||||
-out=@{file}
|
||||
and
|
||||
exclude
|
||||
-tag=${tag.filter}
|
||||
and
|
||||
${ux.include}
|
||||
metadata
|
||||
+append
|
||||
-base-path=@{basedir}
|
||||
+alternates
|
||||
-out=@{file}
|
||||
and
|
||||
metadata
|
||||
+append
|
||||
-base-path=@{basedir}
|
||||
+alias
|
||||
-out=@{file}
|
||||
and
|
||||
meta
|
||||
+append
|
||||
+packages
|
||||
-out=@{file}
|
||||
and
|
||||
union
|
||||
-tag=overrides
|
||||
and
|
||||
metadata
|
||||
-base-path=@{basedir}
|
||||
+append
|
||||
+filenames
|
||||
-tpl=${load.script.tpl};
|
||||
-out=@{file}
|
||||
]]>
|
||||
</x-compile>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<!--
|
||||
Refreshes the application's bootstrap javascript and microloader manifest
|
||||
'-detect-app-build-properties' is defined in js-impl.xml
|
||||
-->
|
||||
<target name="-refresh-app" depends="-detect-app-build-properties">
|
||||
|
||||
<!--regenerate class system metadata-->
|
||||
<x-run-bootstrap file="${app.bootstrap.js}"
|
||||
basedir="${app.bootstrap.base.path}"/>
|
||||
|
||||
<!--regenerate json manifest bootstrap data-->
|
||||
<if>
|
||||
<equals arg1="${app.page.mode}" arg2="xcompile"/>
|
||||
<then>
|
||||
<!--
|
||||
append the microloader and manifest to the end
|
||||
of bootstrap.js
|
||||
-->
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
microload
|
||||
-operation=microloader
|
||||
-microloaderPath=${app.microloader.bootstrap}
|
||||
-append
|
||||
-out=${app.bootstrap.js}
|
||||
]]>
|
||||
</x-compile>
|
||||
</then>
|
||||
</if>
|
||||
|
||||
<!--
|
||||
create / overwrite bootstrap.json, which will be used
|
||||
by the default development.js microloader
|
||||
-->
|
||||
|
||||
<echo file="${build.json.bootstrap.path}">
|
||||
/**
|
||||
* This file is generated by Sencha Cmd and should NOT be edited. It is a
|
||||
* combination of content from app.json, and all required package's package.json
|
||||
* files. Customizations should be placed in app.json.
|
||||
*/
|
||||
</echo>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
microload
|
||||
-operation=json
|
||||
-bootstrap
|
||||
-append
|
||||
-tpl={0}
|
||||
-out=${build.json.bootstrap.path}
|
||||
]]>
|
||||
</x-compile>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
Refresh app
|
||||
-->
|
||||
<target name="-before-refresh"/>
|
||||
<target name="-refresh" depends="-refresh-app"/>
|
||||
<target name="-after-refresh"/>
|
||||
</project>
|
||||
83
.sencha/app/resolve-impl.xml
Normal file
83
.sencha/app/resolve-impl.xml
Normal file
@@ -0,0 +1,83 @@
|
||||
<project name="resolve-impl">
|
||||
|
||||
<target name="-before-web-start"/>
|
||||
<target name="-web-start">
|
||||
<property name="enable.background.server" value="false"/>
|
||||
<x-sencha-command>
|
||||
<![CDATA[
|
||||
fs
|
||||
web
|
||||
-port=${build.web.port}
|
||||
-background=${enable.background.server}
|
||||
start
|
||||
-map=${build.web.root}
|
||||
]]>
|
||||
</x-sencha-command>
|
||||
</target>
|
||||
<target name="-after-web-start"/>
|
||||
<target name="web-start"
|
||||
depends="-init,-before-web-start,-web-start,-after-web-start"/>
|
||||
|
||||
<target name="-before-web-stop"/>
|
||||
<target name="-web-stop">
|
||||
<!--
|
||||
This needs to be in it's own process due to threading issues when called from a
|
||||
target.
|
||||
-->
|
||||
<x-shell dir="${app.dir}">
|
||||
${cmd.dir}/sencha fs web -port ${build.web.port} stop
|
||||
</x-shell>
|
||||
</target>
|
||||
<target name="-after-web-stop"/>
|
||||
<target name="web-stop"
|
||||
depends="-init,-before-web-stop,-web-stop,-after-web-stop"/>
|
||||
|
||||
<target name="-resolve-impl" depends="-refresh">
|
||||
<x-ant-call target="web-start" unless="skip.web.start">
|
||||
<param name="enable.background.server" value="true"/>
|
||||
</x-ant-call>
|
||||
|
||||
<local name="app.relative.url"/>
|
||||
<local name="build.resolve.relative.url"/>
|
||||
|
||||
<!--calculate the relative path from the web root to the index page-->
|
||||
<x-get-relative-path from="${build.web.root}"
|
||||
to="${app.page.file}"
|
||||
property="app.relative.url"/>
|
||||
|
||||
<property name="build.resolve.relative.url"
|
||||
value="${build.resolve.url}/${app.relative.url}"/>
|
||||
|
||||
<x-sencha-command dir="${app.dir}" inheritall="true">
|
||||
<![CDATA[
|
||||
app
|
||||
resolve
|
||||
-mode=${build.resolve.mode}
|
||||
-uri=${build.resolve.relative.url}
|
||||
-tpl=${build.resolve.tpl}
|
||||
-out=${build.resolve.file}
|
||||
]]>
|
||||
</x-sencha-command>
|
||||
<x-ant-call target="web-stop" unless="skip.web.start"/>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
restore
|
||||
page
|
||||
and
|
||||
load-refs
|
||||
-file=${build.resolve.file}
|
||||
-defaultSrcName=@${build.tag.name}
|
||||
-allowUnmatched=${build.resolve.allow.unmatched}
|
||||
and
|
||||
save
|
||||
page
|
||||
]]>
|
||||
</x-compile>
|
||||
</target>
|
||||
|
||||
<target name="-before-resolve"/>
|
||||
<target name="-resolve">
|
||||
<x-ant-call target="-resolve-impl"/>
|
||||
</target>
|
||||
<target name="-after-resolve"/>
|
||||
</project>
|
||||
22
.sencha/app/resources-impl.xml
Normal file
22
.sencha/app/resources-impl.xml
Normal file
@@ -0,0 +1,22 @@
|
||||
<project name="resources-impl">
|
||||
<target name="-before-inherit-resources"/>
|
||||
<target name="-before-copy-resources"/>
|
||||
|
||||
<!--'-init-compiler' defined in init-impl.xml-->
|
||||
<target name="-compile-resources" depends="-init-compiler">
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
resources
|
||||
-excludes=-all*.css
|
||||
-out=${build.resources.dir}
|
||||
and
|
||||
resources
|
||||
-model=true
|
||||
-out=${build.dir}
|
||||
]]>
|
||||
</x-compile>
|
||||
</target>
|
||||
|
||||
<target name="-after-copy-resources"/>
|
||||
<target name="-after-inherit-resources"/>
|
||||
</project>
|
||||
222
.sencha/app/sass-impl.xml
Normal file
222
.sencha/app/sass-impl.xml
Normal file
@@ -0,0 +1,222 @@
|
||||
<project name="sass-impl">
|
||||
|
||||
<!--
|
||||
Uses the compiler to generate the top-level scss file for the app
|
||||
by using the current set of js files to determine the Components
|
||||
used by the app, then including the corresponding scss files into the
|
||||
app's style
|
||||
-->
|
||||
<target name="-compile-sass" depends="-init-compiler">
|
||||
<x-normalize-path
|
||||
path="${build.dir}/resources"
|
||||
property="image.search.path"/>
|
||||
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
restore
|
||||
page
|
||||
and
|
||||
#only set variables for used classes eg. $include-class-name
|
||||
sass
|
||||
+class-name-vars
|
||||
-variable=$image-search-path:'${image.search.path}'
|
||||
-variable=$theme-name: '${app.theme}' !default
|
||||
-output=${app.out.scss}
|
||||
and
|
||||
include
|
||||
-all
|
||||
and
|
||||
# include etc and vars from all classes
|
||||
sass
|
||||
+etc
|
||||
+vars
|
||||
+append
|
||||
-output=${app.out.scss}
|
||||
and
|
||||
restore
|
||||
page
|
||||
and
|
||||
#only include rules from used classes
|
||||
sass
|
||||
+rules
|
||||
+append
|
||||
-output=${app.out.scss}
|
||||
and
|
||||
sass
|
||||
+ruby
|
||||
-output=${app.out.ruby}
|
||||
]]>
|
||||
</x-compile>
|
||||
<!--
|
||||
app.out.css.path is relative to the app output index.html file
|
||||
-->
|
||||
<x-get-relative-path
|
||||
from="${app.dir}"
|
||||
to="${app.out.css}"
|
||||
property="app.out.css.path"
|
||||
/>
|
||||
|
||||
<!--update the application's bootstrap.css file to point to the build output-->
|
||||
<echo file="${app.bootstrap.css}">
|
||||
<![CDATA[
|
||||
/*
|
||||
* This file is generated by Sencha Cmd and should NOT be edited. It redirects
|
||||
* to the most recently built CSS file for the application to allow index.html
|
||||
* in the development directory to load properly (i.e., "dev mode").
|
||||
*/
|
||||
@import '${app.out.css.path}';
|
||||
]]>
|
||||
</echo>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
This macrodef is used for post-processing Ext JS 4.2+ style theme css files
|
||||
and will split based on selector thresholds, as well as run the css preprocessor
|
||||
and compressor
|
||||
-->
|
||||
<macrodef name="x-compress-css-files">
|
||||
<attribute name="dir"/>
|
||||
<attribute name="prefix"/>
|
||||
<attribute name="outprefix"/>
|
||||
<attribute name="compress"/>
|
||||
<attribute name="preprocess"/>
|
||||
<sequential>
|
||||
<x-split-css file="@{dir}/@{prefix}.css"
|
||||
outdir="${build.resources.dir}"
|
||||
limit="${build.css.selector.limit}"/>
|
||||
|
||||
<for param="cssfile">
|
||||
<fileset dir="@{dir}" includes="@{prefix}*.css"/>
|
||||
<sequential>
|
||||
<local name="css.output.name"/>
|
||||
<local name="pattern"/>
|
||||
<property name="pattern" value="(.*?)(@{prefix})(_\d{1,2})*\.css"/>
|
||||
<propertyregex property="css.output.name"
|
||||
input="@{cssfile}"
|
||||
regexp="${pattern}"
|
||||
select="\1@{outprefix}\3.css"
|
||||
override="true"/>
|
||||
<if>
|
||||
<equals arg1="@{preprocess}" arg2="true"/>
|
||||
<then>
|
||||
<echo>Preprocessing @{cssfile} to ${css.output.name}</echo>
|
||||
<x-css-preprocess
|
||||
file="@{cssfile}"
|
||||
tofile="${css.output.name}"
|
||||
options="${build.css.preprocessor.opts}"/>
|
||||
</then>
|
||||
</if>
|
||||
<if>
|
||||
<equals arg1="@{compress}" arg2="true"/>
|
||||
<then>
|
||||
<echo>Compressing @{cssfile} to ${css.output.name}</echo>
|
||||
<x-compress-css srcfile="@{cssfile}"
|
||||
outfile="${css.output.name}"/>
|
||||
</then>
|
||||
</if>
|
||||
</sequential>
|
||||
</for>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<!--
|
||||
This target builds Ext JS 4.2+ style themes, first generating the top-level
|
||||
scss file, then running compass with the css, sass, and config options set
|
||||
-->
|
||||
<target name="-compass-compile-theme-package">
|
||||
<x-run-if-true value="${enable.ext42.themes}">
|
||||
<x-ant-call target="-compile-sass"/>
|
||||
|
||||
<x-compass-compile
|
||||
dir="${build.dir}"
|
||||
trace="${compass.comiple.trace}"
|
||||
boring="${compass.compile.boring}"
|
||||
force="${compass.compile.force}"
|
||||
sassdir="${compass.sass.dir}"
|
||||
cssdir="${compass.css.dir}"
|
||||
config="${compass.config.file}"/>
|
||||
|
||||
<x-compress-css-files dir="${build.dir}/resources"
|
||||
prefix="${app.out.base.debug}"
|
||||
outprefix="${app.out.base}"
|
||||
preprocess="${build.css.preprocess}"
|
||||
compress="${build.css.compress}"/>
|
||||
</x-run-if-true>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
This is a legacy macrodef to support building Ext JS 4.1 themes, which have been
|
||||
deprecated in favor of Ext JS 4.2 theme packages
|
||||
-->
|
||||
<macrodef name="x-build-sass">
|
||||
<attribute name="theme"/>
|
||||
<sequential>
|
||||
<local name="sass.name"/>
|
||||
<local name="use.shell"/>
|
||||
|
||||
<!--
|
||||
convert abspath to just the leaf path name
|
||||
-->
|
||||
<basename property="sass.name" file="@{theme}"/>
|
||||
<local name="sass.base.name"/>
|
||||
<property name="sass.base.name" value="${sass.name}"/>
|
||||
|
||||
<echo>Compiling sass directory : @{theme}/sass</echo>
|
||||
<x-compass-compile
|
||||
boring="${compass.compile.boring}"
|
||||
force="${compass.compile.force}"
|
||||
trace="${compass.compile.trace}"
|
||||
dir="@{theme}/sass"/>
|
||||
|
||||
<x-compress-css srcfile="${app.dir}/resources/${sass.base.name}/*.css"
|
||||
outdir="${app.dir}/resources/${sass.base.name}"/>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<!--
|
||||
This target builds Ext JS 4.1 style themes, iterating over each directory
|
||||
under the specified ${app.theme.dir} directory and compiling the sass
|
||||
located there
|
||||
-->
|
||||
<target name="-compass-compile-theme-folders">
|
||||
<x-run-if-true value="${enable.ext41.themes}">
|
||||
<!-- run sass compilation over the various themes -->
|
||||
<for param="sass">
|
||||
<dirset dir="${app.theme.dir}" includes="*"/>
|
||||
<sequential>
|
||||
<x-build-sass theme="@{sass}"/>
|
||||
</sequential>
|
||||
</for>
|
||||
</x-run-if-true>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
This target builds Touch style themes, by running compass
|
||||
over the directory containing the manually maintined scss files
|
||||
-->
|
||||
<target name="-compass-compile-sass-dir">
|
||||
<x-run-if-true value="${enable.touch.themes}">
|
||||
<x-compass-compile
|
||||
trace="${compass.comiple.trace}"
|
||||
boring="${compass.compile.boring}"
|
||||
force="${compass.compile.force}"
|
||||
dir="${compass.sass.dir}"/>
|
||||
</x-run-if-true>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
This is a summation target triggering the three different supported
|
||||
sass modes (ext 41, ext 42+, and touch).
|
||||
-->
|
||||
<target name="-compass-compile"
|
||||
depends="-compass-compile-theme-package,
|
||||
-compass-compile-theme-folders,
|
||||
-compass-compile-sass-dir"/>
|
||||
|
||||
<!--
|
||||
Build SASS
|
||||
-->
|
||||
<target name="-before-sass"/>
|
||||
<target name="-sass" depends="-compass-compile"/>
|
||||
<target name="-after-sass"/>
|
||||
</project>
|
||||
14
.sencha/app/sencha.cfg
Normal file
14
.sencha/app/sencha.cfg
Normal file
@@ -0,0 +1,14 @@
|
||||
app.name=DssMobile
|
||||
|
||||
app.framework=touch
|
||||
|
||||
app.classpath=${app.dir}/app.js,${app.dir}/app
|
||||
|
||||
# this property specifies a comma separated list of paths containing
|
||||
# resources to copy to the build directory
|
||||
app.resource.paths=
|
||||
|
||||
app.build.dir=${workspace.build.dir}/${app.name}
|
||||
|
||||
app.framework.version=2.3.0
|
||||
app.cmd.version=4.0.0.203
|
||||
236
.sencha/app/slice-impl.xml
Normal file
236
.sencha/app/slice-impl.xml
Normal file
@@ -0,0 +1,236 @@
|
||||
<project name="slice-impl">
|
||||
<!--
|
||||
Uses the compiler to generate a special theme-only scss file containing
|
||||
rules for all framework / package / app components. This is then used
|
||||
by the slicer example page to capture theme sprites
|
||||
-->
|
||||
<target name="-compile-slicer-sass" depends="-init-compiler">
|
||||
<x-normalize-path
|
||||
path="${build.dir}/resources"
|
||||
property="image.search.path"/>
|
||||
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
restore
|
||||
page
|
||||
and
|
||||
include
|
||||
-all
|
||||
and
|
||||
sass
|
||||
+class-name-vars
|
||||
+etc
|
||||
+vars
|
||||
+rules
|
||||
-variable=$image-search-path:'${image.search.path}'
|
||||
-variable=$theme-name: '${app.theme}' !default
|
||||
-output=${app.example.scss}
|
||||
and
|
||||
restore
|
||||
page
|
||||
and
|
||||
sass
|
||||
+ruby
|
||||
-output=${app.example.out.ruby}
|
||||
]]>
|
||||
</x-compile>
|
||||
|
||||
<x-get-relative-path from="${app.example.dir}"
|
||||
to="${app.example.css}"
|
||||
property="app.example.css.path"/>
|
||||
|
||||
<!--update the app's example to point to the build output-->
|
||||
<echo file="${app.example.css.file}">
|
||||
<![CDATA[
|
||||
/*
|
||||
* This file is generated by Sencha Cmd and should NOT be edited. It redirects
|
||||
* to the most recently built CSS file for the application to allow theme.html
|
||||
* to load properly for image slicing (required to support non-CSS3 browsers
|
||||
* such as IE9 and below).
|
||||
*/
|
||||
@import '${app.example.css.path}';
|
||||
]]>
|
||||
</echo>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
Compiles the scss file for the theme slicer page
|
||||
-->
|
||||
<target name="-compass-compile-slicer-css" depends="-compile-slicer-sass">
|
||||
<x-compass-compile
|
||||
dir="${app.example.build.dir}"
|
||||
trace="${compass.compile.trace}"
|
||||
boring="${compass.compile.boring}"
|
||||
force="${compass.compile.force}"
|
||||
sassdir="${app.example.build.dir}"
|
||||
cssdir="${app.example.build.dir}"
|
||||
config="${app.example.compass.config}"/>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
Generates theme images for Ext JS 4.2+ apps using theme packages
|
||||
'-detect-app-build-properties' is defined in js-impl.xml
|
||||
-->
|
||||
<target name="-slice-app-theme" depends="-detect-app-build-properties">
|
||||
<x-ant-call target="-compass-compile-slicer-css"/>
|
||||
<x-run-bootstrap file="${bootstrap.example.js}"
|
||||
basedir="${bootstrap.base.path}"/>
|
||||
|
||||
<echo>Capture theme image to ${build.capture.png}</echo>
|
||||
<x-sencha-command>
|
||||
<![CDATA[
|
||||
theme
|
||||
capture
|
||||
-page=${app.example.theme.html}
|
||||
-image=${build.capture.png}
|
||||
-manifest=${build.capture.json}
|
||||
]]>
|
||||
</x-sencha-command>
|
||||
|
||||
<echo>Slicing theme images to ${build.resources.dir}</echo>
|
||||
<x-sencha-command>
|
||||
<![CDATA[
|
||||
fs
|
||||
slice
|
||||
${build.slice.options}
|
||||
-image=${build.capture.png}
|
||||
-manifest=${build.capture.json}
|
||||
-out=${build.resources.dir}
|
||||
]]>
|
||||
</x-sencha-command>
|
||||
</target>
|
||||
|
||||
<macrodef name="x-build-theme">
|
||||
<attribute name="theme" description="the path of the theme folder"/>
|
||||
<attribute name="buildsass" default="false"/>
|
||||
<attribute name="basetheme" default="default"/>
|
||||
<sequential>
|
||||
<local name="theme.name"/>
|
||||
|
||||
<local name="framework.theme.dir"/>
|
||||
<local name="tmp.theme.dir"/>
|
||||
<local name="tmp.img.dir"/>
|
||||
|
||||
<basename property="theme.name" file="@{theme}"/>
|
||||
<local name="theme.base.name"/>
|
||||
<property name="theme.base.name" value="${theme.name}"/>
|
||||
<property name="theme.images.dir" location="@{theme}/images"/>
|
||||
<property name="theme.page.dir" location="@{theme}/${theme.page.name}"/>
|
||||
|
||||
<property name="tmp.res.dir" value="${app.resources.dir}"/>
|
||||
<property name="tmp.theme.dir" value="${tmp.res.dir}/${theme.base.name}"/>
|
||||
<property name="tmp.img.dir" value="${tmp.theme.dir}/images"/>
|
||||
|
||||
<property name="app.res.dir" location="${app.dir}/packages"/>
|
||||
<property name="app.img.dir" location="${app.res.dir}/images"/>
|
||||
|
||||
<property name="framework.res.dir" location="${framework.dir}/resources"/>
|
||||
<property name="framework.img.dir" location="${framework.res.dir}/themes/images"/>
|
||||
<property name="framework.theme.dir" location="${framework.img.dir}/@{basetheme}"/>
|
||||
|
||||
<echo>Copying base framework images from ${framework.theme.dir} to ${tmp.img.dir}</echo>
|
||||
<copy todir="${tmp.img.dir}">
|
||||
<fileset dir="${framework.theme.dir}" includes="**/*"/>
|
||||
</copy>
|
||||
|
||||
<if>
|
||||
<equals arg1="@{buildsass}" arg2="true"/>
|
||||
<then>
|
||||
<echo>Building sass for theme ${theme.name}</echo>
|
||||
<!--x-build-sass is defined in sass-impl.xml-->
|
||||
<x-build-sass theme="@{theme}"/>
|
||||
</then>
|
||||
</if>
|
||||
|
||||
<echo>Slicing images for theme ${theme.name} to ${tmp.img.dir}</echo>
|
||||
<x-sencha-command>
|
||||
<![CDATA[
|
||||
theme
|
||||
build
|
||||
-data-file=${build.capture.json}
|
||||
-image-file=${build.capture.png}
|
||||
-page=${theme.page.dir}
|
||||
-out=${tmp.img.dir}
|
||||
]]>
|
||||
</x-sencha-command>
|
||||
|
||||
<if>
|
||||
<available file="${theme.images.dir}"/>
|
||||
<then>
|
||||
<echo>Copying user defined images from @{theme}/images to ${tmp.img.dir}</echo>
|
||||
<copy todir="${tmp.img.dir}">
|
||||
<fileset dir="${theme.images.dir}" includes="**/*"/>
|
||||
</copy>
|
||||
</then>
|
||||
</if>
|
||||
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<!--
|
||||
This is a legacy macrodef for copying resources in theme-directory based themes.
|
||||
It is provided to support building Ext JS 4.1 app themes
|
||||
-->
|
||||
<macrodef name="x-copy-resources">
|
||||
<sequential>
|
||||
<copy todir="${build.resources.dir}" includeEmptyDirs="false">
|
||||
<fileset dir="${app.resources.dir}"
|
||||
includes="**/*"/>
|
||||
</copy>
|
||||
|
||||
<x-get-relative-path from="${app.dir}"
|
||||
to="${framework.dir}"
|
||||
property="framework.rel.path"/>
|
||||
|
||||
<copy toDir="${build.dir}/${framework.rel.path}">
|
||||
<fileset dir="${framework.dir}"
|
||||
includes="src/ux/**/css/**/*"/>
|
||||
</copy>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<!--
|
||||
Generates theme images for Ext JS 4.1 apps that use directory based
|
||||
themes. These have been deprecated in favor of ExtJS 4.2 theme packages
|
||||
-->
|
||||
<target name="-slice-theme-directories">
|
||||
<echo>Processing theme directories from ${app.theme.dir}</echo>
|
||||
<for param="theme">
|
||||
<dirset dir="${app.theme.dir}" includes="*"/>
|
||||
<sequential>
|
||||
<x-build-theme theme="@{theme}"/>
|
||||
</sequential>
|
||||
</for>
|
||||
<x-copy-resources/>
|
||||
</target>
|
||||
|
||||
<target name="-slice-images">
|
||||
<x-run-if-true value="${enable.ext42.themes}">
|
||||
<x-ant-call target="-slice-app-theme"/>
|
||||
</x-run-if-true>
|
||||
<x-run-if-true value="${enable.ext41.themes}">
|
||||
<x-ant-call target="-slice-theme-directories"/>
|
||||
</x-run-if-true>
|
||||
</target>
|
||||
|
||||
<target name="-before-slice"/>
|
||||
<target name="-slice" depends="-slice-images"/>
|
||||
<target name="-after-slice"/>
|
||||
|
||||
<!--
|
||||
Refresh Individual Theme
|
||||
-->
|
||||
<target name="-before-refresh-theme"/>
|
||||
<target name="-refresh-theme">
|
||||
<if>
|
||||
<x-is-true value="${enable.ext41.themes}"/>
|
||||
<then>
|
||||
<local name="theme.dir"/>
|
||||
<property name="theme.dir" location="${app.theme.dir}/${args.themeName}"/>
|
||||
<x-build-theme theme="${theme.dir}" buildsass="true"/>
|
||||
<x-copy-resources/>
|
||||
</then>
|
||||
</if>
|
||||
</target>
|
||||
<target name="-after-refresh-theme"/>
|
||||
</project>
|
||||
12
.sencha/app/testing.properties
Normal file
12
.sencha/app/testing.properties
Normal file
@@ -0,0 +1,12 @@
|
||||
# =============================================================================
|
||||
# This file provides an override point for default variables defined in
|
||||
# build.properties and defaults.properties.
|
||||
#
|
||||
# IMPORTANT - Sencha Cmd will merge your changes with its own during upgrades.
|
||||
# To avoid potential merge conflicts avoid making large, sweeping changes to
|
||||
# this file.
|
||||
# =============================================================================
|
||||
|
||||
build.options=${build.options.debug.enable},${build.options.logger.enable},${build.options.default}
|
||||
app.microloader.name=testing.js
|
||||
|
||||
51
.sencha/app/watch-impl.xml
Normal file
51
.sencha/app/watch-impl.xml
Normal file
@@ -0,0 +1,51 @@
|
||||
<project name="watch-impl">
|
||||
|
||||
<target name="-watch-impl">
|
||||
<x-ant-call target="${build.trigger.targets}"/>
|
||||
</target>
|
||||
|
||||
<target name="-watch-compiler">
|
||||
<x-watch compilerRef="${compiler.ref.id}" targets="-watch-impl"/>
|
||||
</target>
|
||||
|
||||
<target name="-watch-theme-package-css">
|
||||
<x-compass-watch
|
||||
dir="${build.dir}"
|
||||
trace="${compass.compile.trace}"
|
||||
boring="${compass.compile.boring}"
|
||||
force="${compass.compile.force}"
|
||||
sassdir="${compass.sass.dir}"
|
||||
cssdir="${compass.css.dir}"
|
||||
config="${compass.config.file}"
|
||||
fork="true"/>
|
||||
</target>
|
||||
|
||||
<macrodef name="x-run-compass-watch">
|
||||
<attribute name="directory"/>
|
||||
<sequential>
|
||||
<x-compass-watch
|
||||
dir="@{directory}"
|
||||
trace="${compass.compile.trace}"
|
||||
boring="${compass.compile.boring}"
|
||||
force="${compass.compile.force}"
|
||||
fork="true"/>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<target name="-watch-sass-dir">
|
||||
<x-run-compass-watch directory="${app.sass.dir}"/>
|
||||
</target>
|
||||
|
||||
<target name="-watch-theme-dir">
|
||||
<local name="watch.sass.dir"/>
|
||||
<property name="watch.sass.dir"
|
||||
value="${app.theme.dir}/${watch.theme.name}/sass"/>
|
||||
<x-run-compass-watch directory="${watch.sass.dir}"/>
|
||||
</target>
|
||||
|
||||
<target name="-before-watch" depends="init"/>
|
||||
<target name="-watch" depends="app-build-impl.build">
|
||||
<x-ant-call target="${build.watcher.targets}"/>
|
||||
</target>
|
||||
<target name="-after-watch" depends="init"/>
|
||||
</project>
|
||||
11
.sencha/workspace/plugin.xml
Normal file
11
.sencha/workspace/plugin.xml
Normal file
@@ -0,0 +1,11 @@
|
||||
<project basedir=".">
|
||||
<!--
|
||||
If framework.config.dir is already set, this next task will do nothing and
|
||||
the original value will remain... but if framework.config.dir is not yet
|
||||
defined, we are running in a workspace sans framework and so we need to go
|
||||
directly to the plugin base from cmd.config.dir instead.
|
||||
-->
|
||||
<property name="framework.config.dir" value="${cmd.config.dir}"/>
|
||||
|
||||
<import file="${framework.config.dir}/plugin.xml"/>
|
||||
</project>
|
||||
35
.sencha/workspace/sencha.cfg
Normal file
35
.sencha/workspace/sencha.cfg
Normal file
@@ -0,0 +1,35 @@
|
||||
#Fri, 08 Nov 2013 10:39:02 +0000
|
||||
# -----------------------------------------------------------------------------
|
||||
# This file contains configuration options that apply to all applications in
|
||||
# the workspace. By convention, these options start with "workspace." but any
|
||||
# option can be set here. Options specified in an application's sencha.cfg will
|
||||
# take priority over those values contained in this file. These options will
|
||||
# take priority over configuration values in Sencha Cmd or a framework plugin.
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# This configuration property (if set) is included by default in all compile
|
||||
# commands executed according to this formulation:
|
||||
#
|
||||
# sencha compile -classpath=...,${framework.classpath},${workspace.classpath},${app.classpath}
|
||||
|
||||
#workspace.classpath=
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# This is the folder for build outputs in the workspace
|
||||
|
||||
workspace.build.dir=${workspace.dir}/build
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# This folder contains all generated and extracted packages.
|
||||
|
||||
workspace.packages.dir=${workspace.dir}/packages
|
||||
|
||||
workspace.theme.dir=${workspace.packages.dir}/${args.themeName}
|
||||
|
||||
# =============================================================================
|
||||
# Customizations go below this divider to avoid merge conflicts on upgrade
|
||||
# =============================================================================
|
||||
|
||||
workspace.cmd.version=4.0.0.203
|
||||
|
||||
touch.dir=${workspace.dir}/touch
|
||||
Reference in New Issue
Block a user