浏览代码

first commit

TonyKang 8 年之前
当前提交
efc324ade7
共有 100 个文件被更改,包括 219633 次插入0 次删除
  1. 3 0
      .gitignore
  2. 1 0
      .idea/.name
  3. 6 0
      .idea/jsLibraryMappings.xml
  4. 14 0
      .idea/libraries/smartconstruct_node_modules.xml
  5. 14 0
      .idea/misc.xml
  6. 8 0
      .idea/modules.xml
  7. 9 0
      .idea/smartconstruct.iml
  8. 6 0
      .idea/vcs.xml
  9. 307 0
      .idea/workspace.xml
  10. 10 0
      package.json
  11. 11 0
      protect/cache/rpt_cache.js
  12. 57 0
      protect/controllers/cacheController.js
  13. 68 0
      protect/controllers/reportController.js
  14. 202 0
      protect/models/rpt_component/JpcEx.js
  15. 52 0
      protect/models/rpt_component/Jpc_Band.js
  16. 78 0
      protect/models/rpt_component/Jpc_BillTab.js
  17. 548 0
      protect/models/rpt_component/Jpc_CrossTab.js
  18. 98 0
      protect/models/rpt_component/Jpc_Data.js
  19. 47 0
      protect/models/rpt_component/Jpc_Field.js
  20. 229 0
      protect/models/rpt_component/Jpc_FlowTab.js
  21. 18 0
      protect/models/rpt_component/Jpc_Function.js
  22. 27 0
      protect/models/rpt_component/Jpc_Param.js
  23. 47 0
      protect/models/rpt_component/Jpc_RTE.js
  24. 197 0
      protect/models/rpt_component/Jpc_ValueDefine.js
  25. 58 0
      protect/models/rpt_component/helper/Jpc_Helper_Area.js
  26. 74 0
      protect/models/rpt_component/helper/Jpc_Helper_Band.js
  27. 148 0
      protect/models/rpt_component/helper/Jpc_Helper_Common.js
  28. 60 0
      protect/models/rpt_component/helper/Jpc_Helper_CommonOutput.js
  29. 189 0
      protect/models/rpt_component/helper/Jpc_Helper_CrossTab.js
  30. 58 0
      protect/models/rpt_component/helper/Jpc_Helper_Discrete.js
  31. 44 0
      protect/models/rpt_component/helper/Jpc_Helper_Field.js
  32. 43 0
      protect/models/rpt_component/helper/Jpc_Helper_FlowTab.js
  33. 14 0
      protect/models/rpt_component/helper/Jpc_Helper_Text.js
  34. 42 0
      protect/models/rpt_control.js
  35. 45 0
      protect/models/rpt_font.js
  36. 38 0
      protect/models/rpt_style.js
  37. 31 0
      protect/models/rpt_temp_data.js
  38. 35 0
      protect/models/rpt_template.js
  39. 6 0
      protect/models/smartcostdb.js
  40. 47 0
      server.js
  41. 12 0
      src/404.html
  42. 156 0
      src/RptHome.html
  43. 19 0
      src/SmartCostHome.html
  44. 150550 0
      src/ext/ext-all-debug.js
  45. 22 0
      src/ext/ext-all.js
  46. 26442 0
      src/ext/ext.js
  47. 1 0
      src/ext/packages/ext-aria/build/config.rb
  48. 764 0
      src/ext/packages/ext-aria/build/ext-aria-all-debug.scss
  49. 764 0
      src/ext/packages/ext-aria/build/ext-aria-all-rtl-debug.scss
  50. 11834 0
      src/ext/packages/ext-aria/build/ext-aria-debug.js
  51. 43 0
      src/ext/packages/ext-aria/build/ext-aria.js
  52. 3 0
      src/ext/packages/ext-aria/build/resources/Readme.md
  53. 2 0
      src/ext/packages/ext-aria/build/resources/ext-aria-all-debug.css
  54. 2 0
      src/ext/packages/ext-aria/build/resources/ext-aria-all-rtl-debug.css
  55. 0 0
      src/ext/packages/ext-aria/build/resources/ext-aria-all-rtl.css
  56. 0 0
      src/ext/packages/ext-aria/build/resources/ext-aria-all.css
  57. 二进制
      src/ext/packages/ext-aria/build/resources/images/form/date-trigger-rtl.gif
  58. 二进制
      src/ext/packages/ext-aria/build/resources/images/form/date-trigger.gif
  59. 二进制
      src/ext/packages/ext-aria/build/resources/images/form/exclamation.gif
  60. 二进制
      src/ext/packages/ext-aria/build/resources/images/form/trigger-rtl.gif
  61. 二进制
      src/ext/packages/ext-aria/build/resources/images/form/trigger.gif
  62. 二进制
      src/ext/packages/ext-aria/build/resources/images/shared/left-btn.gif
  63. 二进制
      src/ext/packages/ext-aria/build/resources/images/shared/right-btn.gif
  64. 1 0
      src/ext/packages/ext-charts/build/config.rb
  65. 717 0
      src/ext/packages/ext-charts/build/ext-charts-all-debug.scss
  66. 717 0
      src/ext/packages/ext-charts/build/ext-charts-all-rtl-debug.scss
  67. 19855 0
      src/ext/packages/ext-charts/build/ext-charts-debug.js
  68. 1 0
      src/ext/packages/ext-charts/build/ext-charts.js
  69. 262 0
      src/ext/packages/ext-charts/build/resources/ext-charts-all-debug.css
  70. 262 0
      src/ext/packages/ext-charts/build/resources/ext-charts-all-rtl-debug.css
  71. 1 0
      src/ext/packages/ext-charts/build/resources/ext-charts-all-rtl.css
  72. 1 0
      src/ext/packages/ext-charts/build/resources/ext-charts-all.css
  73. 154 0
      src/ext/packages/ext-locale/build/ext-locale-af-debug.js
  74. 1 0
      src/ext/packages/ext-locale/build/ext-locale-af.js
  75. 258 0
      src/ext/packages/ext-locale/build/ext-locale-bg-debug.js
  76. 1 0
      src/ext/packages/ext-locale/build/ext-locale-bg.js
  77. 294 0
      src/ext/packages/ext-locale/build/ext-locale-ca-debug.js
  78. 1 0
      src/ext/packages/ext-locale/build/ext-locale-ca.js
  79. 292 0
      src/ext/packages/ext-locale/build/ext-locale-cs-debug.js
  80. 1 0
      src/ext/packages/ext-locale/build/ext-locale-cs.js
  81. 277 0
      src/ext/packages/ext-locale/build/ext-locale-da-debug.js
  82. 1 0
      src/ext/packages/ext-locale/build/ext-locale-da.js
  83. 325 0
      src/ext/packages/ext-locale/build/ext-locale-de-debug.js
  84. 1 0
      src/ext/packages/ext-locale/build/ext-locale-de.js
  85. 268 0
      src/ext/packages/ext-locale/build/ext-locale-el_GR-debug.js
  86. 1 0
      src/ext/packages/ext-locale/build/ext-locale-el_GR.js
  87. 403 0
      src/ext/packages/ext-locale/build/ext-locale-en-debug.js
  88. 1 0
      src/ext/packages/ext-locale/build/ext-locale-en.js
  89. 388 0
      src/ext/packages/ext-locale/build/ext-locale-en_AU-debug.js
  90. 1 0
      src/ext/packages/ext-locale/build/ext-locale-en_AU.js
  91. 390 0
      src/ext/packages/ext-locale/build/ext-locale-en_GB-debug.js
  92. 1 0
      src/ext/packages/ext-locale/build/ext-locale-en_GB.js
  93. 310 0
      src/ext/packages/ext-locale/build/ext-locale-es-debug.js
  94. 1 0
      src/ext/packages/ext-locale/build/ext-locale-es.js
  95. 293 0
      src/ext/packages/ext-locale/build/ext-locale-et-debug.js
  96. 1 0
      src/ext/packages/ext-locale/build/ext-locale-et.js
  97. 260 0
      src/ext/packages/ext-locale/build/ext-locale-fa-debug.js
  98. 1 0
      src/ext/packages/ext-locale/build/ext-locale-fa.js
  99. 288 0
      src/ext/packages/ext-locale/build/ext-locale-fi-debug.js
  100. 0 0
      src/ext/packages/ext-locale/build/ext-locale-fi.js

+ 3 - 0
.gitignore

@@ -0,0 +1,3 @@
+node_modules/
+.git/
+dist/

+ 1 - 0
.idea/.name

@@ -0,0 +1 @@
+smartconstruct

+ 6 - 0
.idea/jsLibraryMappings.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="JavaScriptLibraryMappings">
+    <file url="file://$PROJECT_DIR$" libraries="{smartconstruct node_modules}" />
+  </component>
+</project>

+ 14 - 0
.idea/libraries/smartconstruct_node_modules.xml

@@ -0,0 +1,14 @@
+<component name="libraryTable">
+  <library name="smartconstruct node_modules" type="javaScript">
+    <properties>
+      <option name="frameworkName" value="node_modules" />
+      <sourceFilesUrls>
+        <item url="file://$PROJECT_DIR$/node_modules" />
+      </sourceFilesUrls>
+    </properties>
+    <CLASSES>
+      <root url="file://$PROJECT_DIR$/node_modules" />
+    </CLASSES>
+    <SOURCES />
+  </library>
+</component>

+ 14 - 0
.idea/misc.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectLevelVcsManager" settingsEditedManually="false">
+    <OptionsSetting value="true" id="Add" />
+    <OptionsSetting value="true" id="Remove" />
+    <OptionsSetting value="true" id="Checkout" />
+    <OptionsSetting value="true" id="Update" />
+    <OptionsSetting value="true" id="Status" />
+    <OptionsSetting value="true" id="Edit" />
+    <ConfirmationsSetting value="0" id="Add" />
+    <ConfirmationsSetting value="0" id="Remove" />
+  </component>
+  <component name="ProjectRootManager" version="2" />
+</project>

+ 8 - 0
.idea/modules.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/smartconstruct.iml" filepath="$PROJECT_DIR$/.idea/smartconstruct.iml" />
+    </modules>
+  </component>
+</project>

+ 9 - 0
.idea/smartconstruct.iml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="smartconstruct node_modules" level="project" />
+  </component>
+</module>

+ 6 - 0
.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="" />
+  </component>
+</project>

+ 307 - 0
.idea/workspace.xml

@@ -0,0 +1,307 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ChangeListManager">
+    <list default="true" id="bb42ffbe-4c4c-435c-9611-252a221deed3" name="Default" comment="" />
+    <ignored path="smartconstruct.iws" />
+    <ignored path=".idea/workspace.xml" />
+    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
+    <option name="TRACKING_ENABLED" value="true" />
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
+  <component name="CreatePatchCommitExecutor">
+    <option name="PATCH_PATH" value="" />
+  </component>
+  <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
+  <component name="FavoritesManager">
+    <favorites_list name="smartconstruct" />
+  </component>
+  <component name="FileEditorManager">
+    <leaf>
+      <file leaf-file-name="server.js" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/server.js">
+          <provider selected="true" editor-type-id="text-editor">
+            <state vertical-scroll-proportion="0.0">
+              <caret line="12" column="0" selection-start-line="12" selection-start-column="0" selection-end-line="12" selection-end-column="0" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="RptHome.html" pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/src/RptHome.html">
+          <provider selected="true" editor-type-id="text-editor">
+            <state vertical-scroll-proportion="0.0">
+              <caret line="51" column="22" selection-start-line="51" selection-start-column="22" selection-end-line="51" selection-end-column="22" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="Jpc_Output.js" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/jpc_report/rpt_component/Jpc_Output.js">
+          <provider selected="true" editor-type-id="text-editor">
+            <state vertical-scroll-proportion="0.0">
+              <caret line="176" column="54" selection-start-line="176" selection-start-column="54" selection-end-line="176" selection-end-column="54" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+    </leaf>
+  </component>
+  <component name="IdeDocumentHistory">
+    <option name="CHANGED_PATHS">
+      <list>
+        <option value="$PROJECT_DIR$/server.js" />
+        <option value="$PROJECT_DIR$/src/jpc_report/rpt_component/Jpc_Output.js" />
+      </list>
+    </option>
+  </component>
+  <component name="JsBuildToolGruntFileManager" detection-done="true" />
+  <component name="JsGulpfileManager">
+    <detection-done>true</detection-done>
+  </component>
+  <component name="NamedScopeManager">
+    <order />
+  </component>
+  <component name="ProjectFrameBounds">
+    <option name="x" value="-8" />
+    <option name="y" value="-8" />
+    <option name="width" value="1936" />
+    <option name="height" value="1056" />
+  </component>
+  <component name="ProjectLevelVcsManager" settingsEditedManually="false">
+    <OptionsSetting value="true" id="Add" />
+    <OptionsSetting value="true" id="Remove" />
+    <OptionsSetting value="true" id="Checkout" />
+    <OptionsSetting value="true" id="Update" />
+    <OptionsSetting value="true" id="Status" />
+    <OptionsSetting value="true" id="Edit" />
+    <ConfirmationsSetting value="0" id="Add" />
+    <ConfirmationsSetting value="0" id="Remove" />
+  </component>
+  <component name="ProjectView">
+    <navigator currentView="ProjectPane" proportions="" version="1">
+      <flattenPackages />
+      <showMembers />
+      <showModules />
+      <showLibraryContents />
+      <hideEmptyPackages />
+      <abbreviatePackageNames />
+      <autoscrollToSource />
+      <autoscrollFromSource />
+      <sortByType />
+    </navigator>
+    <panes>
+      <pane id="Scope" />
+      <pane id="ProjectPane">
+        <subPane>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="smartconstruct" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="smartconstruct" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="SmartConstruct" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
+        </subPane>
+      </pane>
+      <pane id="Scratches" />
+    </panes>
+  </component>
+  <component name="PropertiesComponent">
+    <property name="last_opened_file_path" value="$PROJECT_DIR$" />
+    <property name="WebServerToolWindowFactoryState" value="false" />
+    <property name="HbShouldOpenHtmlAsHb" value="" />
+    <property name="recentsLimit" value="5" />
+    <property name="FullScreen" value="false" />
+  </component>
+  <component name="RunManager" selected="Node.js.server.js">
+    <configuration default="false" name="server.js" type="NodeJSConfigurationType" factoryName="Node.js" temporary="true" path-to-node="C:/Program Files/nodejs/node" path-to-js-file="server.js" working-dir="$PROJECT_DIR$">
+      <method />
+    </configuration>
+    <configuration default="true" type="DartCommandLineRunConfigurationType" factoryName="Dart Command Line Application">
+      <method />
+    </configuration>
+    <configuration default="true" type="DartUnitRunConfigurationType" factoryName="DartUnit">
+      <method />
+    </configuration>
+    <configuration default="true" type="JavaScriptTestRunnerKarma" factoryName="Karma" config-file="">
+      <envs />
+      <method />
+    </configuration>
+    <configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug">
+      <method />
+    </configuration>
+    <configuration default="true" type="JsTestDriver-test-runner" factoryName="JsTestDriver">
+      <setting name="configLocationType" value="CONFIG_FILE" />
+      <setting name="settingsFile" value="" />
+      <setting name="serverType" value="INTERNAL" />
+      <setting name="preferredDebugBrowser" value="Chrome" />
+      <method />
+    </configuration>
+    <configuration default="true" type="NodeJSConfigurationType" factoryName="Node.js" working-dir="">
+      <method />
+    </configuration>
+    <configuration default="true" type="cucumber.js" factoryName="Cucumber.js">
+      <option name="cucumberJsArguments" value="" />
+      <option name="executablePath" />
+      <option name="filePath" />
+      <method />
+    </configuration>
+    <configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
+      <node-options />
+      <gulpfile />
+      <tasks />
+      <arguments />
+      <pass-parent-envs>true</pass-parent-envs>
+      <envs />
+      <method />
+    </configuration>
+    <list size="1">
+      <item index="0" class="java.lang.String" itemvalue="Node.js.server.js" />
+    </list>
+    <recent_temporary>
+      <list size="1">
+        <item index="0" class="java.lang.String" itemvalue="Node.js.server.js" />
+      </list>
+    </recent_temporary>
+  </component>
+  <component name="ShelveChangesManager" show_recycled="false" />
+  <component name="SvnConfiguration">
+    <configuration />
+  </component>
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="Default task">
+      <changelist id="bb42ffbe-4c4c-435c-9611-252a221deed3" name="Default" comment="" />
+      <created>1483608818885</created>
+      <option name="number" value="Default" />
+      <updated>1483608818885</updated>
+    </task>
+    <servers />
+  </component>
+  <component name="ToolWindowManager">
+    <frame x="-8" y="-8" width="1936" height="1056" extended-state="6" />
+    <editor active="false" />
+    <layout>
+      <window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.21285564" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
+      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
+      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
+      <window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32864866" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
+      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
+      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
+      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
+      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+    </layout>
+  </component>
+  <component name="Vcs.Log.UiProperties">
+    <option name="RECENTLY_FILTERED_USER_GROUPS">
+      <collection />
+    </option>
+    <option name="RECENTLY_FILTERED_BRANCH_GROUPS">
+      <collection />
+    </option>
+  </component>
+  <component name="VcsContentAnnotationSettings">
+    <option name="myLimit" value="2678400000" />
+  </component>
+  <component name="XDebuggerManager">
+    <breakpoint-manager />
+    <watches-manager />
+  </component>
+  <component name="editorHistoryManager">
+    <entry file="file://$PROJECT_DIR$/server.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="12" column="0" selection-start-line="12" selection-start-column="0" selection-end-line="12" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/RptHome.html">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/jpc_report/rpt_component/Jpc_Output.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="176" column="54" selection-start-line="176" selection-start-column="54" selection-end-line="176" selection-end-column="54" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/server.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="12" column="0" selection-start-line="12" selection-start-column="0" selection-end-line="12" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/RptHome.html">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/jpc_report/rpt_component/Jpc_Output.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="176" column="54" selection-start-line="176" selection-start-column="54" selection-end-line="176" selection-end-column="54" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/jpc_report/rpt_component/Jpc_Output.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="176" column="54" selection-start-line="176" selection-start-column="54" selection-end-line="176" selection-end-column="54" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/server.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="12" column="0" selection-start-line="12" selection-start-column="0" selection-end-line="12" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/RptHome.html">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="51" column="22" selection-start-line="51" selection-start-column="22" selection-end-line="51" selection-end-column="22" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+  </component>
+</project>

+ 10 - 0
package.json

@@ -0,0 +1,10 @@
+{
+  "name": "",
+  "version": "0.1.0",
+  "description": "to make question",
+  "devDependencies": {
+    "body-parser": "^1.13.2",
+    "express": "^4.13.1",
+    "mongoose": "^4.1.0"
+  }
+}

+ 11 - 0
protect/cache/rpt_cache.js

@@ -0,0 +1,11 @@
+/**
+ * Created by Tony on 2016/12/28.
+ */
+
+var cache_report = {
+    common_ctrls: null,
+    common_fonts: null,
+    common_styles: null
+}
+
+module.exports = cache_report;

+ 57 - 0
protect/controllers/cacheController.js

@@ -0,0 +1,57 @@
+/**
+ * Created by Tony on 2016/12/28.
+ */
+var cache = require('../cache/rpt_cache');
+var cmn_ctrl = require('../models/rpt_control');
+var cmn_font = require('../models/rpt_font');
+var cmn_style = require('../models/rpt_style');
+
+//统一回调函数
+var callback = function(req, res, err, data){
+    if(err){
+        //res.send({success: false, error: err});
+        res.json({success: false, error: err});
+    }
+    else{
+        //res.send({success: true, data: data});
+        res.json({success:true, data: data});
+    }
+}
+
+module.exports = {
+    setCache: function(cacheKey, cacheValue) {
+        cache[cacheKey] = cacheValue;
+        return true;
+    },
+    getCache: function(cacheKey) {
+        return cache[cacheKey];
+    },
+    setReportDefaultCache: function (req, res) {
+        var err = "", defProperties = {ctrls: null, fonts: null, styles: null};
+        cmn_ctrl.getAll(null, function(err, ctrls){
+            if (ctrls) {
+                cache.common_ctrls = ctrls;
+                defProperties.ctrls = ctrls;
+            } else {
+                err += 'No default controls! ';
+            }
+        });
+        cmn_font.getAll(null, function(err, fonts){
+            if (fonts) {
+                cache.common_fonts = fonts;
+                defProperties.fonts = fonts;
+            } else {
+                err += 'No default fonts! ';
+            }
+        });
+        cmn_style.getAll(null, function(err, styles){
+            if (styles) {
+                cache.common_styles = styles;
+                defProperties.styles = styles;
+            } else {
+                err += 'No default styles!';
+            }
+        });
+        callback(req, res, err, defProperties);
+    }
+}

+ 68 - 0
protect/controllers/reportController.js

@@ -0,0 +1,68 @@
+/**
+ * Created by Tony on 2016/12/24.
+ */
+
+var JV = require('../models/rpt_component/Jpc_ValueDefine');
+var Template = require('../models/rpt_template');
+var TemplateData = require('../models/rpt_temp_data');
+var JpcEx = require('../models/rpt_component/JpcEx');
+var cacheController = require('./cacheController');
+
+//统一回调函数
+var callback = function(req, res, err, data){
+    if(err){
+        //res.send({success: false, error: err});
+        res.json({success: false, error: err});
+    }
+    else{
+        //res.send({success: true, data: data});
+        res.json({success:true, data: data});
+    }
+}
+
+module.exports = {
+    getReportAllPages: function(req, res){
+        var grp_id = req.body.grp_id;
+        var tpl_id = req.body.tpl_id;
+        var pageSize = req.body.pageSize;
+        Template.get(grp_id, tpl_id, function(err, rptTpl){
+            if (rptTpl) {
+                TemplateData.get(tpl_id, function(err, tplData){
+                    if (tplData) {
+                        var printCom = JpcEx.createNew();
+                        rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] = pageSize;
+                        var dftControls = cacheController.getCache("common_ctrls");
+                        var dftFonts = cacheController.getCache("common_fonts");
+                        var dftStyles = cacheController.getCache("common_styles");
+                        var defProperties = {ctrls: dftControls, fonts: dftFonts, styles: dftStyles};
+                        printCom.initialize(rptTpl);
+                        printCom.analyzeData(rptTpl, tplData, defProperties);
+                        var maxPages = printCom.totalPages;
+                        var pageRst = printCom.outputAsSimpleJSONPageArray(rptTpl, tplData, 1, maxPages, defProperties);
+                        if (pageRst) {
+                            callback(req, res, err, pageRst);
+                        } else {
+                            callback(req, res, "Have errors while on going...", null);
+                        }
+                        //callback(req, res, err, tplData);
+                    } else {
+                        callback(req, res, err, null);
+                    }
+                })
+            } else {
+                callback(req, res, err, null);
+            }
+        });
+    },
+    getReportByPage: function(req, res){
+    },
+    getDefaultControls: function(req, res){
+    },
+    getDefaultFonts: function(req, res){
+    },
+    getDefaultStyles: function(req, res){
+    },
+    remove: function(req, res){
+    }
+
+}

+ 202 - 0
protect/models/rpt_component/JpcEx.js

@@ -0,0 +1,202 @@
+var JV = require('./Jpc_ValueDefine');
+var JpcBand = require('./Jpc_Band');
+var JpcFlowTab = require('./Jpc_FlowTab');
+var JpcBillTab = require('./Jpc_BillTab');
+var JpcCrossTab = require('./Jpc_CrossTab');
+var JpcField = require('./Jpc_Field');
+var JpcParam = require('./Jpc_Param');
+var JpcFunc = require('./Jpc_Function');
+var JpcData = require('./Jpc_Data');
+var JpcCommonHelper = require('./helper/Jpc_Helper_Common');
+var JE = require('./Jpc_RTE'); //Important: for self-define function execution purpose
+
+var JpcExSrv = function(){};
+JpcExSrv.prototype.createNew = function(){
+    function private_buildDftItems(rptTpl, dftCollection, propArray, nodeName) {
+        var rst = {};
+        if (dftCollection) {
+            for (var i = 0; i < dftCollection.length; i++) {
+                var item = {};
+                for (var j = 0; j < propArray.length; j++) {
+                    item[propArray[j]] = dftCollection[i][propArray[j]];
+                }
+                rst[dftCollection[i][JV.PROP_ID]] = item;
+            }
+            if (rptTpl && rptTpl[nodeName] && rptTpl[nodeName].length > 0) {
+                for (var i = 0; i < rptTpl[nodeName].length; i++) {
+                    var rptDftItem = rptTpl[nodeName][i];
+                    if (rst[rptDftItem[JV.PROP_ID]] == undefined) {
+                        var item = {};
+                        for (var j = 0; j < propArray.length; j++) {
+                            item[propArray[j]] = rptDftItem[propArray[j]];
+                        }
+                        rst[rptDftItem[JV.PROP_ID]] = item;
+                    }
+                }
+            }
+        }
+        return rst;
+    }
+    function private_buildDftControls(rptTpl, dftControlCollection) {
+        var rst = private_buildDftItems(rptTpl,dftControlCollection, JV.CONTROL_PROPS, JV.NODE_CONTROL_COLLECTION);
+        return rst;
+    }
+    function private_buildDftFonts(rptTpl, dftFontCollection) {
+        var rst = private_buildDftItems(rptTpl,dftFontCollection, JV.FONT_PROPS, JV.NODE_FONT_COLLECTION);
+        return rst;
+    }
+    function private_buildDftStyles(rptTpl, dftStyleCollection) {
+        var rst = {};
+        if (dftStyleCollection) {
+            for (var i = 0; i < dftStyleCollection.length; i++) {
+                var item = {};
+                if (dftStyleCollection[i][JV.PROP_BORDER_STYLE] && dftStyleCollection[i][JV.PROP_BORDER_STYLE].length > 0) {
+                    for (var j = 0; j < dftStyleCollection[i][JV.PROP_BORDER_STYLE].length; j++) {
+                        var borderItem = {};
+                        for (var k = 0; k < JV.BORDER_STYLE_PROPS.length; k++) {
+                            borderItem[JV.BORDER_STYLE_PROPS[k]] = dftStyleCollection[i][JV.PROP_BORDER_STYLE][j][JV.BORDER_STYLE_PROPS[k]];
+                        }
+                        item[dftStyleCollection[i][JV.PROP_BORDER_STYLE][j][JV.PROP_POSITION]] = borderItem;
+                    }
+                }
+                rst[dftStyleCollection[i][JV.PROP_ID]] = item;
+            }
+            if (rptTpl && rptTpl[JV.NODE_STYLE_COLLECTION] && rptTpl[JV.NODE_STYLE_COLLECTION].length > 0) {
+                for (var i = 0; i < rptTpl[JV.NODE_STYLE_COLLECTION].length; i++) {
+                    var rptDftItem = rptTpl[JV.NODE_STYLE_COLLECTION][i];
+                    if (rst[rptDftItem[JV.PROP_ID]] == undefined) {
+                        var item = {};
+                        for (var j = 0; j < rptDftItem[JV.PROP_BORDER_STYLE].length; j++) {
+                            var borderItem = {};
+                            for (var k = 0; k < JV.BORDER_STYLE_PROPS.length; k++) {
+                                borderItem[JV.BORDER_STYLE_PROPS[k]] = rptDftItem[JV.PROP_BORDER_STYLE][j][JV.BORDER_STYLE_PROPS[k]];
+                            }
+                            item[rptDftItem[JV.PROP_BORDER_STYLE][j][JV.PROP_POSITION]] = borderItem;
+                        }
+                        rst[rptDftItem[JV.PROP_ID]] = item;
+                    }
+                }
+            }
+        }
+        return rst;
+    }
+    var JpcResult = {};
+    //JpcResult.report_title
+    JpcResult.initialize = function(rptTpl) {
+        var me = this;
+        if (rptTpl[JV.NODE_FLOW_INFO]) {
+            me.flowTab = JpcFlowTab.createNew();
+            me.flowTab.initialize();
+        }
+        if (rptTpl[JV.NODE_BILL_INFO]) {
+            me.billTab = JpcBillTab.createNew();
+            me.billTab.initialize();
+        }
+        //var dt1 = new Date();
+        if (rptTpl[JV.NODE_CROSS_INFO]) {
+            me.crossTab = JpcCrossTab.createNew();
+            me.crossTab.initialize();
+        }
+        me.totalPages = 0;
+        me.runTimePageData = {};
+        me.fields = JpcField.createNew(rptTpl);
+        me.params = JpcParam.createNew(rptTpl);
+        me.formulas = JpcFunc.createNew(rptTpl);
+    };
+
+    JpcResult.analyzeData = function(rptTpl, dataObj, defProperties) {
+        var me = this;
+        //1. data object
+        var dataHelper = JpcData.createNew();
+        dataHelper.analyzeData(rptTpl, dataObj);
+        //2. tab object
+        //pre-condition: the data should be sorted in SQL/NoSQL level!
+        //var dt1 = new Date();
+        if (me.flowTab) {
+            me.flowTab.sorting(rptTpl, dataObj, dataHelper.dataSeq.slice(0));
+        }
+        if (me.crossTab) {
+            me.crossTab.sorting(rptTpl, dataObj, dataHelper.dataSeq.slice(0));
+        }
+        //var dt2 = new Date();
+        //alert(dt2 - dt1);
+        //3. formulas
+        me.executeFormulas(JV.RUN_TYPE_BEFORE_PAGING, rptTpl, dataObj, me);
+        //4. paging
+        me.paging(rptTpl, dataObj, defProperties);
+        //alert('analyzeData was completed!');
+        //for garbage collection:
+        dataHelper = null;
+    };
+    JpcResult.paging = function(rptTpl, dataObj, defProperties) {
+        var me = this;
+        if (me.flowTab) {
+            me.totalPages = me.flowTab.preSetupPages(rptTpl, dataObj, defProperties);
+        } else if (me.crossTab) {
+            me.totalPages = me.crossTab.preSetupPages(rptTpl, defProperties);
+        } else if (me.billTab) {
+            //me.totalPages = billTab.paging();
+        }
+    };
+    JpcResult.executeFormulas = function(runType, $CURRENT_TEMPLATE, $CURRENT_DATA, $CURRENT_RPT) {
+        var me = this;
+        for (var i = 0; i < me.formulas.length; i++) {
+            if (me.formulas[i][JV.PROP_RUN_TYPE] === runType) {
+                var expression = me.formulas[i][JV.PROP_EXPRESSION];
+                if (expression) {
+                    eval(expression);
+                }
+            }
+        }
+    };
+    JpcResult.outputAsSimpleJSONPageArray = function(rptTpl, dataObj, startPage, endPage, defProperties) {
+        var me = this, rst = {};
+        if ((startPage > 0) && (startPage <= endPage) && (endPage <= me.totalPages)) {
+            rst[JV.NODE_CONTROL_COLLECTION] = private_buildDftControls(rptTpl, (defProperties == null)?null:defProperties.ctrls);
+            rst[JV.NODE_STYLE_COLLECTION] = private_buildDftStyles(rptTpl, (defProperties == null)?null:defProperties.styles);
+            rst[JV.NODE_FONT_COLLECTION] = private_buildDftFonts(rptTpl, (defProperties == null)?null:defProperties.fonts);
+            rst[JV.NODE_PAGE_INFO] = JpcCommonHelper.getPageSize(rptTpl);
+            rst.items = [];
+            var bands = JpcBand.createNew(rptTpl, defProperties);
+            try {
+                for (var page = startPage; page <= endPage; page++) {
+                    me.runTimePageData.currentPage = page;
+                    me.executeFormulas(JV.RUN_TYPE_BEFORE_OUTPUT, rptTpl, dataObj, me);
+                    rst.items.push(me.outputAsSimpleJSONPage(rptTpl, dataObj, bands, page, rst[JV.NODE_CONTROL_COLLECTION]));
+                }
+                if (bands[JV.BAND_PROP_MERGE_BAND]) {
+                    var mergedBand = {}, band = bands[JV.BAND_PROP_MERGE_BAND];
+                    mergedBand[JV.PROP_LEFT] = band[JV.PROP_LEFT].toFixed(0);
+                    mergedBand[JV.PROP_RIGHT] = band[JV.PROP_RIGHT].toFixed(0);
+                    mergedBand[JV.PROP_TOP] = band[JV.PROP_TOP].toFixed(0);
+                    mergedBand[JV.PROP_BOTTOM] = band[JV.PROP_BOTTOM].toFixed(0);
+                    mergedBand[JV.BAND_PROP_STYLE] = band[JV.BAND_PROP_STYLE];
+                    rst[JV.BAND_PROP_MERGE_BAND] = mergedBand;
+                }
+            } finally {
+                bands = null;
+            }
+        }
+        return rst;
+    };
+    JpcResult.outputAsSimpleJSONPage = function(rptTpl, dataObj, bands, page, controls) {
+        var me = this, rst = null;
+        if (me.totalPages >= page) {
+            rst = {};
+            rst[JV.PROP_PAGE_SEQ] = page;
+            //rst.cells = [];
+            if (me.flowTab) {
+                rst.cells = me.flowTab.outputAsSimpleJSONPage(rptTpl, dataObj, page, bands, controls, me);
+            } else if (me.crossTab) {
+                rst.cells = me.crossTab.outputAsSimpleJSONPage(rptTpl, dataObj, page, bands, controls, me);
+            } else if (me.billTab) {
+                //
+            }
+        }
+        return rst;
+    };
+    //JpcEx.rte.currentRptObj = JpcResult;
+    return JpcResult;
+}
+
+module.exports = new JpcExSrv();

+ 52 - 0
protect/models/rpt_component/Jpc_Band.js

@@ -0,0 +1,52 @@
+var JV = require('./Jpc_ValueDefine');
+var JpcCommonHelper = require('./helper/Jpc_Helper_Common');
+var JpcBandHelper = require('./helper/Jpc_Helper_Band');
+
+var JpcBand = {
+    createNew: function(rptTpl, defProperties) {
+        var me = this;
+        var JpcBandResult = {};
+        if (rptTpl[JV.NODE_BAND_COLLECTION]) {
+            for (var i = 0; i < rptTpl[JV.NODE_BAND_COLLECTION].length; i++) {
+                me.createSingle(rptTpl[JV.NODE_BAND_COLLECTION][i], JpcBandResult, rptTpl, defProperties);
+            }
+        }
+        return JpcBandResult;
+    },
+    createSingle: function(bandNode, parentObj, rptTpl, defProperties) {
+        var me = this;
+        if (bandNode && bandNode[JV.BAND_PROP_NAME]) {
+            var item = {Left:0, Right:0, Top:0, Bottom:0};
+            item[JV.BAND_PROP_STYLE] = JpcCommonHelper.getStyle(bandNode[JV.BAND_PROP_STYLE], defProperties.styles, null);
+            item[JV.BAND_PROP_CONTROL] = JpcCommonHelper.getControl(bandNode[JV.BAND_PROP_CONTROL], defProperties.ctrls, null);
+            if (bandNode[JV.BAND_PROP_HEIGHT]) {
+                item[JV.BAND_PROP_HEIGHT] = 1.0 * bandNode[JV.BAND_PROP_HEIGHT];
+            } else {
+                item[JV.BAND_PROP_HEIGHT] = 0.0;
+            }
+            if (bandNode[JV.BAND_PROP_WIDTH]) {
+                item[JV.BAND_PROP_WIDTH] = 1.0 * bandNode[JV.BAND_PROP_WIDTH];
+            } else {
+                item[JV.BAND_PROP_WIDTH] = 0.0;
+            }
+            item[JV.BAND_PROP_DISPLAY_TYPE] = JpcBandHelper.getBandTypeValByString(bandNode[JV.BAND_PROP_DISPLAY_TYPE]);
+            item[JV.BAND_PROP_ALIGNMENT] = JpcCommonHelper.getLayoutAlignment(bandNode[JV.BAND_PROP_ALIGNMENT]);
+            item[JV.PROP_CALCULATION] = JpcCommonHelper.getPosCalculationType(bandNode[JV.PROP_CALCULATION]);
+
+            if (bandNode[JV.BAND_PROP_MERGE_BORDER]) {
+                item[JV.BAND_PROP_MERGE_BORDER] = bandNode[JV.BAND_PROP_MERGE_BORDER];
+            }
+            if (bandNode[JV.BAND_PROP_SUB_BANDS]) {
+                for (var i = 0; i < bandNode[JV.BAND_PROP_SUB_BANDS].length; i++) {
+                    me.createSingle(bandNode[JV.BAND_PROP_SUB_BANDS][i], parentObj, rptTpl, defProperties);
+                }
+            }
+            parentObj[bandNode[JV.BAND_PROP_NAME]] = item;
+            if (item[JV.BAND_PROP_MERGE_BORDER] != null && item[JV.BAND_PROP_MERGE_BORDER] != undefined && item[JV.BAND_PROP_MERGE_BORDER] == 'T') {
+                parentObj[JV.BAND_PROP_MERGE_BAND] = item;
+            }
+        }
+    }
+}
+
+module.exports = JpcBand;

+ 78 - 0
protect/models/rpt_component/Jpc_BillTab.js

@@ -0,0 +1,78 @@
+var JV = require('./Jpc_ValueDefine');
+var JpcFieldHelper = require('./helper/Jpc_Helper_Field');
+var JpcBandHelper = require('./helper/Jpc_Helper_Band');
+var JpcBand = require('./Jpc_Band');
+var JpcFlowTabHelper = require('./helper/Jpc_Helper_FlowTab');
+var JpcCommonHelper = require('./helper/Jpc_Helper_Common');
+var JpcDiscreteHelper = require('./helper/Jpc_Helper_Discrete');
+var JpcTextHelper = require('./helper/Jpc_Helper_Text');
+var JpcCommonOutputHelper = require('./helper/Jpc_Helper_CommonOutput');
+var JpcAreaHelper = require('./helper/Jpc_Helper_Area');
+
+var JpcBillTabSrv = function(){};
+JpcBillTabSrv.prototype.createNew = function(){
+    var JpcBillTabResult = {};
+    JpcBillTabResult.initialize = function() {
+        var me = this;
+        me.disp_fields_idx = [];
+    };
+    JpcBillTabResult.sorting = function(rptTpl) {
+        var me = this;
+        JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[JV.NODE_BILL_INFO][JV.NODE_BILL_CONTENT][JV.PROP_BILL_FIELDS], null, me.disp_fields_idx);
+    };
+    JpcBillTabResult.outputAsSimpleJSONPage = function (rptTpl, dataObj, page, bands, controls, $CURRENT_RPT) {
+        var me = this, rst = [], tabRstLst = [];
+        //1 calculate the band position
+        var pageStatus = [true, false, false, false, false, false, false, false];
+        JpcBandHelper.setBandArea(bands, rptTpl, pageStatus);
+        //2. start to output detail-part
+        var unitFactor = JpcCommonHelper.getUnitFactor(rptTpl);
+        //2.1 output content
+        tabRstLst.push(me.outputContent(rptTpl, dataObj, page, bands, unitFactor, controls, pageStatus));
+        //2.2 output discrete
+        tabRstLst.push(JpcDiscreteHelper.outputDiscreteInfo(rptTpl[JV.NODE_BILL_INFO][JV.NODE_DISCRETE_INFO], bands, dataObj, unitFactor, pageStatus, page - 1, 1, 0, $CURRENT_RPT));
+    }
+    JpcBillTabResult.outputContent = function(rptTpl, dataObj, page, bands, unitFactor, controls, pageStatus) {
+        var me = this, rst = [];
+        var tab = rptTpl[JV.NODE_BILL_INFO][JV.NODE_BILL_CONTENT];
+        var band = bands[tab[JV.PROP_BAND_NAME]];
+        if (band) {
+            if (pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]] == true) {
+                var tab_fields = tab[JV.PROP_BILL_FIELDS];
+                var data_details = dataObj[JV.DATA_MASTER_DATA];
+                for (var i = 0; i < tab_fields.length; i++) {
+                    var tab_field = tab_fields[i];
+                    var data_field = null;
+                    if (me.disp_fields_idx[i] != JV.BLANK_FIELD_INDEX) {
+                        data_field = data_details[me.disp_fields_idx[i]];
+                    } else {
+                        data_field = JE.F(tab_field[JV.PROP_FIELD_ID]);
+                        if (data_field) {
+                            data_field = data_field[JV.PROP_AD_HOC_DATA];
+                        }
+                    }
+                    if (!(tab_field[JV.PROP_HIDDEN])) {
+                        var cellItem = JpcCommonOutputHelper.createCommonOutput(tab_field, JpcFieldHelper.getValue(data_field, page - 1), controls);
+                        cellItem[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_field[JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, 1, 0, true, false);
+                        rst.push(cellItem);
+                    }
+                }
+                if (tab[JV.PROP_TEXT]) {
+                    rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXT], band, unitFactor, 1, 0, 1, 0, 1, 0));
+                }
+                if (tab[JV.PROP_TEXTS]) {
+                    for (var j = 0; j < tab[JV.PROP_TEXTS].length; j++) {
+                        rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXTS][j], band, unitFactor, 1, 0, 1, 0, 1, 0));
+                    }
+                }
+                if (tab[JV.NODE_DISCRETE_INFO]) {
+                    rst = rst.concat(JpcDiscreteHelper.outputDiscreteInfo(tab[JV.NODE_DISCRETE_INFO], bands, dataObj, unitFactor, pageStatus, page - 1, 1, 0));
+                }
+            }
+        }
+        return rst;
+    }
+    return JpcBillTabResult;
+}
+
+module.exports = new JpcBillTabSrv();

+ 548 - 0
protect/models/rpt_component/Jpc_CrossTab.js

@@ -0,0 +1,548 @@
+var JV = require('./Jpc_ValueDefine');
+var JpcFieldHelper = require('./helper/Jpc_Helper_Field');
+var JpcBandHelper = require('./helper/Jpc_Helper_Band');
+var JpcBand = require('./Jpc_Band');
+var JpcFlowTabHelper = require('./helper/Jpc_Helper_FlowTab');
+var JpcCrossTabHelper = require('./helper/Jpc_Helper_CrossTab');
+var JpcCommonHelper = require('./helper/Jpc_Helper_Common');
+var JpcDiscreteHelper = require('./helper/Jpc_Helper_Discrete');
+var JpcTextHelper = require('./helper/Jpc_Helper_Text');
+var JpcCommonOutputHelper = require('./helper/Jpc_Helper_CommonOutput');
+var JpcAreaHelper = require('./helper/Jpc_Helper_Area');
+
+var JpcCrossTabSrv = function(){};
+JpcCrossTabSrv.prototype.createNew = function(){
+    function private_addTabValue(tabValuedIdxLst, sortedSequence, segIdx, preRec, nextRec, dispSerialIdxLst, sorted_sum_value_Lst, rst_sum_value_Lst) {
+        if (tabValuedIdxLst) {
+            var serial1stTier = null;
+            if (dispSerialIdxLst) serial1stTier = [];
+            var pgseg1stTier = [];
+            var sumVal = [];
+            var sumValL = 1;
+            if (sortedSequence) {
+                var arrDupVals = sortedSequence[segIdx];
+                var arrDupSumVals = null;
+                if (sorted_sum_value_Lst != null) {
+                    arrDupSumVals = sorted_sum_value_Lst[segIdx];
+                    sumValL = arrDupSumVals[0].length;
+                }
+
+                for (var i = 0; i < nextRec; i++) {
+                    if (arrDupVals.length <= preRec + i) {
+                        pgseg1stTier[i] = JV.BLANK_VALUE_INDEX;
+                        sumVal[i] = [];
+                        for (var ei = 0; ei < sumValL; ei++) {
+                            sumVal[i][ei] = null;
+                        }
+                        if (serial1stTier != null) {
+                            serial1stTier[i] = JV.BLANK_VALUE_INDEX;
+                        }
+                        continue;
+                    }
+                    var duplicateValueArr = arrDupVals[preRec + i];
+                    pgseg1stTier[i] = duplicateValueArr[0];
+                    if (arrDupSumVals != null) sumVal[i] = arrDupSumVals[preRec + i];
+
+                    if (serial1stTier != null) {
+                        serial1stTier[i] = preRec + i;
+                    }
+                }
+                tabValuedIdxLst.push(pgseg1stTier);
+                if (dispSerialIdxLst != null) {
+                    dispSerialIdxLst.push(serial1stTier);
+                }
+                if (sorted_sum_value_Lst != null && rst_sum_value_Lst != null) {
+                    rst_sum_value_Lst.push(sumVal);
+                }
+            } else {
+                //should push blank value index rather than null
+                for (var i = 0; i < nextRec; i++) {
+                    pgseg1stTier[i] = JV.BLANK_VALUE_INDEX;
+                    sumVal[i] = null;
+                    if (serial1stTier != null) {
+                        serial1stTier[i] = JV.BLANK_VALUE_INDEX;
+                    }
+                }
+                tabValuedIdxLst.push(pgseg1stTier);
+                if (dispSerialIdxLst != null) {
+                    dispSerialIdxLst.push(serial1stTier);
+                }
+                if (sorted_sum_value_Lst != null && rst_sum_value_Lst != null) {
+                    rst_sum_value_Lst.push(sumVal);
+                }
+            }
+        }
+    }
+    function private_addContentValue(dispValueIdxLst_Content, sortedContentSequence, segIdx, counterRowRec, maxRowRec, counterColRec, maxColRec, page_seg_map, pageIdx) {
+        if (dispValueIdxLst_Content != null) {
+            page_seg_map.push([pageIdx,segIdx]);
+            var arrContents = [];
+            if (sortedContentSequence != null) {
+                var arrAllContent = sortedContentSequence[segIdx];
+                for (var i = 0; i < maxRowRec; i++) {
+                    arrContents.push([]);
+                    for (var j = 0; j < maxColRec; j++) {
+                        if (arrAllContent.length <= counterRowRec + i || arrAllContent[counterRowRec + i].length <= counterColRec + j) {
+                            arrContents[i][j] = JV.BLANK_VALUE_INDEX;
+                        } else {
+                            arrContents[i][j] = arrAllContent[counterRowRec + i][counterColRec + j];
+                        }
+                    }
+                }
+                dispValueIdxLst_Content.push(arrContents);
+            } else {
+                //should push blank value index rather than null
+                for (var i = 0; i < maxRowRec; i++) {
+                    arrContents.push([]);
+                    for (var j = 0; j < maxColRec; j++) {
+                        arrContents[i][j] = JV.BLANK_VALUE_INDEX;
+                    }
+                }
+                dispValueIdxLst_Content.push(arrContents);
+            }
+        }
+    }
+    function private_SortAndOptimize(rptTpl, dataObj, dataSeq, sortTab, rstFieldsIdx) {
+        var result = [];
+        var tab = rptTpl[JV.NODE_CROSS_INFO][sortTab];
+        if (tab) {
+            var sIDX = 0;
+            //1. prepare and sort by tab-field
+            var fields = [];
+            JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, tab[JV.TAB_CROSS_FIELDS], fields, rstFieldsIdx);
+            var data_details = dataObj[JV.DATA_DETAIL_DATA];
+            JpcCrossTabHelper.sortTabFields(fields, rstFieldsIdx, data_details, dataSeq);
+            //2. distinguish sort tab fields value
+            var b1 = false;
+            for (var i = 0; i < dataSeq.length; i++) {
+                sIDX = 0;
+                var segArr = [];
+                if (dataSeq[i].length == 1) {
+                    JpcCrossTabHelper.pushToSeg(segArr, dataSeq, i, 0, 1);
+                } else {
+                    for (var j = 1; j < dataSeq[i].length; j++) {
+                        b1 = false;
+                        for (var k = 0; k < rstFieldsIdx.length; k++) {
+                            if (data_details[rstFieldsIdx[k]][dataSeq[i][j - 1]] != data_details[rstFieldsIdx[k]][dataSeq[i][j]]) {
+                                b1 = true;
+                                break;
+                            }
+                        }
+                        if (b1) {
+                            JpcCrossTabHelper.pushToSeg(segArr, dataSeq, i, sIDX, j);
+                            sIDX = j;
+                            if (j == dataSeq[i].length - 1) {
+                                JpcCrossTabHelper.pushToSeg(segArr, dataSeq, i, j, dataSeq[i].length);
+                            }
+                        } else if (j == dataSeq[i].length - 1) {
+                            JpcCrossTabHelper.pushToSeg(segArr, dataSeq, i, sIDX, dataSeq[i].length);
+                        }
+                    }
+                }
+                if (segArr.length > 0) result.push(segArr);
+            }
+        }
+        return result;
+    }
+    function private_SortForDisplayContent(rptTpl, rowSeq, colSeq, rstFieldsIdx){
+        var result = [];
+        var tab = rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_CONTENT];
+        if (tab) {
+            JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, tab[JV.TAB_CROSS_FIELDS], null, rstFieldsIdx);
+        }
+        for (var i = 0; i < rowSeq.length; i++) {
+            var rl = rowSeq[i], cl = colSeq[i];
+            var ds = [];
+            //1. initialize to blank value index
+            for (var j = 0; j < rl.length; j++) {
+                ds.push([]);
+                for (var k = 0; k < cl.length; k++) {
+                    ds[j].push(JV.BLANK_VALUE_INDEX);
+                }
+            }
+            //2. then fill up the right index
+            for (var j = 0; j < rl.length; j++) {
+                var ra = rl[j];
+                for (var k = 0; k < ra.length; k++) {
+                    var colIdx = JpcCrossTabHelper.getColIDX(cl, ra[k]);
+                    if (colIdx >= 0) {
+                        ds[j][colIdx] = ra[k];
+                    }
+                }
+            }
+            result.push(ds);
+        }
+        return result;
+    }
+
+    var JpcCrossTabResult = {};
+    JpcCrossTabResult.initialize = function() {
+        var me = this;
+        me.dispValueIdxLst_Row = [];
+        me.dispValueIdxLst_Col = [];
+        me.dispValueIdxLst_Content = [];
+        me.dispSerialIdxLst_Row = [];
+        me.col_sum_fields_idx = [];
+        me.col_sum_fields_value_total = [];
+        me.dispSumValueLst_Col = [];
+        me.page_seg_map = [];
+        me.row_fields_idx = [];
+        me.col_fields_idx = [];
+        me.content_fields_idx = [];
+        me.row_extension_fields_idx = [];
+        me.row_sum_extension_fields_idx = [];
+        me.crsOrient = JV.PAGE_ORIENTATION_V_FIRST;
+        me.pageStatusLst = [];
+    };
+    JpcCrossTabResult.sorting = function(rptTpl, dataObj, dataSeq) {
+        var me = this;
+        //IMPORTANT: the data should be sorted in SQL/NoSQL level!
+        me.sortedRowSequence = private_SortAndOptimize(rptTpl, dataObj, dataSeq, JV.NODE_CROSS_ROW, me.row_fields_idx);
+        me.sortedColSequence = private_SortAndOptimize(rptTpl, dataObj, dataSeq, JV.NODE_CROSS_COL, me.col_fields_idx);
+        me.sortedContentSequence = private_SortForDisplayContent(rptTpl, me.sortedRowSequence, me.sortedColSequence, me.content_fields_idx);
+        JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_COL_SUM][JV.TAB_CROSS_FIELDS], null, me.col_sum_fields_idx);
+        //pre-sum the data(for col sum display)
+        var data_details = dataObj[JV.DATA_DETAIL_DATA],
+            data_fields = [];
+        for (var i = 0; i < me.col_sum_fields_idx.length; i++) {
+            var data_field = data_details[me.col_sum_fields_idx[i]];
+            data_fields.push(data_field);
+        }
+        for (var i = 0; i < me.sortedRowSequence.length; i++) { //seg level
+            if (me.sortedRowSequence[i].length > 0) {
+                me.col_sum_fields_value_total.push([]);
+                for (var j = 0; j < me.sortedRowSequence[i].length; j++) {
+                    var rowGrandTotal = [];
+                    for (var di = 0; di < data_fields.length; di++) {
+                        rowGrandTotal.push(0.0);
+                        for (var k = 0; k < me.sortedRowSequence[i][j].length; k++) {
+                            //3. start to sum
+                            rowGrandTotal[di] = rowGrandTotal[di] + 1.0 * JpcFieldHelper.getValue(data_fields[di], me.sortedRowSequence[i][j][k]);
+                        }
+                    }
+                    me.col_sum_fields_value_total[i].push(rowGrandTotal);
+                }
+            }
+
+        }
+    };
+    JpcCrossTabResult.preSetupPages = function(rptTpl, defProperties) {
+        var rst = 0, me = this;
+        //1. original initialize
+        var maxRowRec = 1, maxColRec = 1, counterRowRec = 0, counterColRec = 0, pageIdx = 0, segCnt = me.sortedContentSequence.length;
+        var pageStatus = [true, true, false, true, false, false, false, false];
+        //2. calculate the page info one by one
+        var bands = JpcBand.createNew(rptTpl, defProperties);
+        function private_resetBandArea() {
+            JpcBandHelper.setBandArea(bands, rptTpl, pageStatus);
+            maxRowRec = JpcCrossTabHelper.getMaxRowsPerPage(bands, rptTpl);
+            maxColRec = JpcCrossTabHelper.getMaxColsPerPage(bands, rptTpl);
+        }
+        JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_ROW_EXT][JV.TAB_CROSS_FIELDS], null, me.row_extension_fields_idx);
+        JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_ROW_SUM_EXT][JV.TAB_CROSS_FIELDS], null, me.row_sum_extension_fields_idx);
+        for (var segIdx = 0; segIdx < segCnt; segIdx++) {
+            //2.1. seg level initialize
+            private_resetBandArea();
+            var orgMaxRowRec = maxRowRec, orgMaxColRec = maxColRec;
+            var rowSplitCnt = Math.ceil(1.0 * me.sortedRowSequence[segIdx].length / maxRowRec);
+            var colSplitCnt = Math.ceil(1.0 * me.sortedColSequence[segIdx].length / maxColRec);
+            pageStatus[JV.STATUS_CROSS_ROW_END] = true;
+            private_resetBandArea();
+            var hasAdHocRow = !JpcCrossTabHelper.chkTabEnd(JV.NODE_CROSS_ROW_SUM, rptTpl, bands, me.sortedRowSequence, segIdx, (rowSplitCnt - 1) * orgMaxRowRec, maxRowRec);
+            if (hasAdHocRow) {
+                hasAdHocRow = !JpcCrossTabHelper.chkTabEnd(JV.NODE_CROSS_ROW_EXT, rptTpl, bands, me.sortedRowSequence, segIdx, (rowSplitCnt - 1) * orgMaxRowRec, maxRowRec);
+            }
+            pageStatus[JV.STATUS_CROSS_ROW_END] = false;
+            pageStatus[JV.STATUS_CROSS_COL_END] = true;
+            private_resetBandArea();
+            var hasAdHocCol = !JpcCrossTabHelper.chkTabEnd(JV.NODE_CROSS_COL_SUM, rptTpl, bands, me.sortedColSequence, segIdx, (colSplitCnt - 1) * orgMaxColRec, maxColRec);
+            pageStatus[JV.STATUS_CROSS_COL_END] = false;
+            private_resetBandArea();
+            if (hasAdHocRow) rowSplitCnt++;
+            if (hasAdHocCol) colSplitCnt++;
+            //2.2
+            for (var colIdx = 0; colIdx < colSplitCnt; colIdx++) {
+                pageStatus[JV.STATUS_CROSS_COL_END] = colIdx == (colSplitCnt - 1)?true:false;
+                private_resetBandArea();
+                counterColRec = orgMaxColRec * colIdx;
+                var currentSortedContentSequence = me.sortedContentSequence;
+                var currentSortedColSequence = me.sortedColSequence;
+                if (hasAdHocCol && colIdx == (colSplitCnt - 1)) {
+                    currentSortedColSequence = null;
+                    currentSortedContentSequence = null;
+                    counterColRec = 0;
+                }
+                for (var rowIdx = 0; rowIdx < rowSplitCnt; rowIdx++) {
+                    pageStatus[JV.STATUS_CROSS_ROW_END] = rowIdx == (rowSplitCnt - 1)?true:false;
+                    private_resetBandArea();
+                    me.pageStatusLst.push(pageStatus.slice(0));
+                    pageIdx++;
+                    counterRowRec = orgMaxRowRec * rowIdx;
+                    var currentSortedRowSequence = me.sortedRowSequence;
+                    if (hasAdHocRow && rowIdx == (rowSplitCnt - 1)) {
+                        currentSortedRowSequence = null;
+                        currentSortedContentSequence = null;
+                        counterRowRec = 0;
+                    }
+                    private_addTabValue(me.dispValueIdxLst_Row, currentSortedRowSequence, segIdx, counterRowRec, maxRowRec, me.dispSerialIdxLst_Row, me.col_sum_fields_value_total, me.dispSumValueLst_Col);
+                    private_addTabValue(me.dispValueIdxLst_Col, currentSortedColSequence, segIdx, counterColRec, maxColRec, null, null, null);
+                    private_addContentValue(me.dispValueIdxLst_Content, currentSortedContentSequence, segIdx, counterRowRec, maxRowRec, counterColRec, maxColRec, me.page_seg_map, pageIdx);
+                }
+            }
+            JpcCrossTabHelper.initialPageStatus(pageStatus);
+        }
+        bands = null;
+        //3. set pageSeq and return the result
+        rst = pageIdx;
+        return rst;
+    };
+    JpcCrossTabResult.outputAsSimpleJSONPage = function(rptTpl, dataObj, page, bands, controls, $CURRENT_RPT) {
+        var me = this, rst = [], tabRstLst = [];
+        var segIdx = JpcCommonHelper.getSegIdxByPageIdx(page, me.page_seg_map);
+        //1 calculate the band position
+        JpcBandHelper.setBandArea(bands, rptTpl, me.pageStatusLst[page - 1]);
+        //2. start to output detail-part
+        var unitFactor = JpcCommonHelper.getUnitFactor(rptTpl);
+        //2.1 Row-Tab
+        tabRstLst.push(me.outputRowTab(rptTpl, dataObj, page, bands, unitFactor, controls));
+        //2.2 Col-Tab
+        tabRstLst.push(me.outputColTab(rptTpl, dataObj, page, bands, unitFactor, controls));
+        //2.3 Content-Tab
+        tabRstLst.push(me.outputContent(rptTpl, dataObj, page, bands, unitFactor, controls));
+        //2.4 Sum-Tab Row
+        //2.4 Sum-tab Col
+        tabRstLst.push(me.outputTabSum(rptTpl, dataObj, page, bands, unitFactor, JV.NODE_CROSS_COL_SUM, controls));
+        //2.x row tab ext
+        tabRstLst.push(me.outputTabExt(rptTpl, dataObj, page, bands, unitFactor, controls));
+        tabRstLst.push(me.outputSumTabExt(rptTpl, dataObj, page, bands, unitFactor, segIdx, controls));
+        //2.5 Discrete
+        tabRstLst.push(JpcDiscreteHelper.outputDiscreteInfo(rptTpl[JV.NODE_CROSS_INFO][JV.NODE_DISCRETE_INFO], bands, dataObj, unitFactor, me.pageStatusLst[page - 1], segIdx, 1, 0, $CURRENT_RPT));
+        for (var i = 0; i < tabRstLst.length; i++) {
+            rst = rst.concat(tabRstLst[i]);
+            tabRstLst[i] = null;
+        }
+        return rst;
+    };
+    JpcCrossTabResult.outputRowTab = function(rptTpl, dataObj, page, bands, unitFactor, controls) {
+        var me = this, rst = [];
+        var tab = rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_ROW];
+        var band = bands[tab[JV.PROP_BAND_NAME]];
+        if (band) {
+            var pageStatus = me.pageStatusLst[page - 1];
+            if (pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]] == true) {
+                var tab_fields = tab[JV.TAB_CROSS_FIELDS];
+                var data_details = dataObj[JV.DATA_DETAIL_DATA];
+                var valuesIdx = me.dispValueIdxLst_Row[page - 1];
+                var serialsIdx = me.dispSerialIdxLst_Row[page - 1];
+                for (var i = 0; i < me.row_fields_idx.length; i++) {
+                    var tab_field = tab_fields[i];
+                    var data_field = data_details[me.row_fields_idx[i]];
+                    if (!(tab_field[JV.PROP_HIDDEN])) {
+                        var rows = valuesIdx.length;
+                        for (var rowIdx = 0; rowIdx < rows; rowIdx++) {
+                            rst.push(me.outputTabField(band, tab_field, data_field, valuesIdx[rowIdx], serialsIdx[rowIdx], rows, rowIdx, 1, 0, unitFactor, true, controls));
+                        }
+                    }
+                }
+            }
+        }
+        return rst;
+    };
+    JpcCrossTabResult.outputColTab = function(rptTpl, dataObj, page, bands, unitFactor, controls) {
+        var me = this, rst = [];
+        var tab = rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_COL];
+        var band = bands[tab[JV.PROP_BAND_NAME]];
+        if (band) {
+            var pageStatus = me.pageStatusLst[page - 1];
+            if (pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]] == true) {
+                var tab_fields = tab[JV.TAB_CROSS_FIELDS];
+                var data_details = dataObj[JV.DATA_DETAIL_DATA];
+                var valuesIdx = me.dispValueIdxLst_Col[page - 1];
+                for (var i = 0; i < me.col_fields_idx.length; i++) {
+                    var tab_field = tab_fields[i];
+                    var data_field = data_details[me.col_fields_idx[i]];
+                    if (!(tab_field[JV.PROP_HIDDEN])) {
+                        var cols = valuesIdx.length;
+                        for (var colIdx = 0; colIdx < cols; colIdx++) {
+                            rst.push(me.outputTabField(band, tab_field, data_field, valuesIdx[colIdx], -1, 1, 0, cols, colIdx, unitFactor, false, controls));
+                            //2. output texts
+                            if (tab[JV.PROP_TEXT]) {
+                                rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXT], band, unitFactor, 1, 0, cols, colIdx, 1, 0));
+                            }
+                            if (tab[JV.PROP_TEXTS]) {
+                                for (var j = 0; j < tab[JV.PROP_TEXTS].length; j++) {
+                                    rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXTS][j], band, unitFactor, 1, 0, cols, colIdx, 1, 0));
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        return rst;
+    };
+    JpcCrossTabResult.outputContent = function (rptTpl, dataObj, page, bands, unitFactor, controls) {
+        var me = this, rst = [];
+        var tab = rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_CONTENT];
+        var band = bands[tab[JV.PROP_BAND_NAME]];
+        if (band) {
+            var pageStatus = me.pageStatusLst[page - 1];
+            if (pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]] == true) {
+                var tab_fields = tab[JV.TAB_CROSS_FIELDS];
+                var data_details = dataObj[JV.DATA_DETAIL_DATA];
+                var contentValuesIdx = me.dispValueIdxLst_Content[page - 1];
+                for (var i = 0; i < tab_fields.length; i++) {
+                    var tab_field = tab_fields[i];
+                    var data_field = data_details[me.content_fields_idx[i]];
+                    if (!(tab_field[JV.PROP_HIDDEN])) {
+                        var rows = contentValuesIdx.length;
+                        for (var rowIdx = 0; rowIdx < rows; rowIdx++) {
+                            var cols = contentValuesIdx[rowIdx].length;
+                            for (var colIdx = 0; colIdx < cols; colIdx++) {
+                                rst.push(me.outputTabField(band, tab_field, data_field, contentValuesIdx[rowIdx][colIdx], -1, rows, rowIdx, cols, colIdx, unitFactor, true, controls));
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        return rst;
+    };
+    JpcCrossTabResult.outputTabSum = function (rptTpl, dataObj, page, bands, unitFactor, tabNodeName, controls) {
+        var me = this, rst = [],
+            tab = rptTpl[JV.NODE_CROSS_INFO][tabNodeName],
+            band = bands[tab[JV.PROP_BAND_NAME]];
+        if (band) {
+            var pageStatus = me.pageStatusLst[page - 1];
+            if (pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]] == true) {
+                var tab_fields = tab[JV.TAB_CROSS_FIELDS];
+                for (var i = 0; i < me.dispSumValueLst_Col[page - 1].length; i++) {
+                    if (me.dispSumValueLst_Col[page - 1][i] != null) {
+                        for (var j = 0; j < me.dispSumValueLst_Col[page - 1][i].length; j++) {
+                            var tab_field = tab_fields[j];
+                            var val = me.dispSumValueLst_Col[page - 1][i][j];
+                            var cellItem = JpcCommonOutputHelper.createCommonOutput(tab_field, val, controls);
+                            cellItem[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_field[JV.PROP_AREA], band, unitFactor, me.dispSumValueLst_Col[page - 1].length, i, 1, 0, 1, 0, true, false);
+                            rst.push(cellItem);
+                        }
+                    } else {
+                        var sumL = 1;
+                        for (var si = 0; si < me.dispSumValueLst_Col.length; si++) {
+                            if (me.dispSumValueLst_Col[si][0] != null) {
+                                sumL = me.dispSumValueLst_Col[si][0].length;
+                                break;
+                            }
+                        }
+                        for (var j = 0; j < sumL; j++) {
+                            var tab_field = tab_fields[j];
+                            var val = null;
+                            var cellItem = JpcCommonOutputHelper.createCommonOutput(tab_field, val, controls);
+                            cellItem[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_field[JV.PROP_AREA], band, unitFactor, me.dispSumValueLst_Col[page - 1].length, i, 1, 0, 1, 0, true, false);
+                            rst.push(cellItem);
+                        }
+                    }
+                }
+            }
+        }
+        return rst;
+    };
+    JpcCrossTabResult.outputTabExt = function (rptTpl, dataObj, page, bands, unitFactor, controls) {
+        var me = this, rst = [],
+            tab = rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_ROW_EXT];
+        var band = bands[tab[JV.PROP_BAND_NAME]];
+        if (band) {
+            var pageStatus = me.pageStatusLst[page - 1];
+            if (pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]] == true) {
+                var tab_fields = tab[JV.TAB_CROSS_FIELDS],
+                    data_details = dataObj[JV.DATA_DETAIL_DATA],
+                    valuesIdx = me.dispValueIdxLst_Col[page - 1];
+                for (var i = 0; i < me.row_extension_fields_idx.length; i++) {
+                    var tab_field = tab_fields[i];
+                    var data_field = data_details[me.row_extension_fields_idx[i]];
+                    if (!(tab_field[JV.PROP_HIDDEN])) {
+                        var cols = valuesIdx.length;
+                        for (var colIdx = 0; colIdx < cols; colIdx++) {
+                            rst.push(me.outputTabField(band, tab_field, data_field, valuesIdx[colIdx], -1, 1, 0, cols, colIdx, unitFactor, false, controls));
+                            //2. output texts if has
+                            if (tab[JV.PROP_TEXT]) {
+                                rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXT], band, unitFactor, 1, 0, cols, colIdx, 1, 0));
+                            }
+                            if (tab[JV.PROP_TEXTS]) {
+                                for (var j = 0; j < tab[JV.PROP_TEXTS].length; j++) {
+                                    rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXTS][j], band, unitFactor, 1, 0, cols, colIdx, 1, 0));
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        return rst;
+    };
+    JpcCrossTabResult.outputSumTabExt = function (rptTpl, dataObj, page, bands, unitFactor, segIdx, controls) {
+        var me = this, rst = [],
+            tab = rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_ROW_SUM_EXT];
+        var band = bands[tab[JV.PROP_BAND_NAME]];
+        if (band) {
+            var pageStatus = me.pageStatusLst[page - 1];
+            if (pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]] == true && pageStatus[JV.STATUS_CROSS_ROW_END] === true) {
+                var tab_fields = tab[JV.TAB_CROSS_FIELDS],
+                    data_details = dataObj[JV.DATA_DETAIL_DATA],
+                    data_fields = [];
+                for (var i = 0; i < me.row_sum_extension_fields_idx.length; i++) {
+                    var data_field = data_details[me.row_sum_extension_fields_idx[i]];
+                    data_fields.push(data_field);
+                }
+                //2. initialize grand total value
+                var rowGrandTotal = [];
+                for (var di = 0; di < data_fields.length; di++) {
+                    rowGrandTotal[di] = 0.0;
+                    //3. start to sum
+                    for (var i = 0; i < me.sortedColSequence[segIdx].length; i++) {
+                        //me.sortedColSequence[segIdx][i][0] //this is the data field value index!
+                        rowGrandTotal[di] = rowGrandTotal[di] + 1.0 * JpcFieldHelper.getValue(data_fields[di], me.sortedColSequence[segIdx][i][0]);
+                    }
+                }
+                //4. output
+                for (var di = 0; di < tab_fields.length; di++) {
+                    var tab_field = tab_fields[di];
+                    if (!tab_field[JV.PROP_HIDDEN]) {
+                        var val = rowGrandTotal[di];
+                        var cellItem = JpcCommonOutputHelper.createCommonOutput(tab_field, val, controls);
+                        cellItem[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_field[JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, 1, 0, false, false);
+                        rst.push(cellItem);
+                    }
+                }
+                //output texts if has
+                if (tab[JV.PROP_TEXT]) {
+                    rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXT], band, unitFactor, 1, 0, 1, 0, 1, 0));
+                }
+                if (tab[JV.PROP_TEXTS]) {
+                    for (var j = 0; j < tab[JV.PROP_TEXTS].length; j++) {
+                        rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXTS][j], band, unitFactor, 1, 0, 1, 0, 1, 0));
+                    }
+                }
+            }
+        }
+        return rst;
+    };
+    JpcCrossTabResult.outputTabField = function (band, tab_field, data_field, valueIdx, serialIdx, rows, rowIdx, cols, colIdx, unitFactor, isRow, controls) {
+        var me = this, rst = null;
+        if (isRow == true && tab_field[JV.PROP_IS_SERIAL] && tab_field[JV.PROP_IS_SERIAL] == true) {
+            if (serialIdx >= 0) rst = JpcCommonOutputHelper.createCommonOutput(tab_field, serialIdx + 1)
+            else rst = JpcCommonOutputHelper.createCommonOutput(tab_field, "", controls);
+        } else {
+            rst = JpcCommonOutputHelper.createCommonOutput(tab_field, JpcFieldHelper.getValue(data_field, valueIdx), controls);
+        }
+        //position
+        if (isRow == true) {
+            rst[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_field[JV.PROP_AREA], band, unitFactor, rows, rowIdx, cols, colIdx, 1, 0, true, false);
+        } else {
+            rst[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_field[JV.PROP_AREA], band, unitFactor, rows, rowIdx, cols, colIdx, 1, 0, false, false);
+        }
+        return rst;
+    }
+    return JpcCrossTabResult;
+}
+
+module.exports = new JpcCrossTabSrv();

+ 98 - 0
protect/models/rpt_component/Jpc_Data.js

@@ -0,0 +1,98 @@
+var JV = require('./Jpc_ValueDefine');
+var JpcData = {
+    createNew: function() {
+        var JpcDataRst = {};
+        JpcDataRst.dataSeq = [];
+        JpcDataRst.analyzeData = function(rptTpl, dataObj) {
+            var me = this;
+            if ((rptTpl) && (dataObj)) {
+                //1. get ID fields
+                var masterIDs = [];
+                for (var i = 0; i < rptTpl[JV.NODE_FIELD_MAP][JV.NODE_MASTER_FIELDS].length; i++) {
+                    var mstFieldObj = rptTpl[JV.NODE_FIELD_MAP][JV.NODE_MASTER_FIELDS][i];
+                    if ((mstFieldObj[JV.PROP_IS_ID]) && (mstFieldObj[JV.PROP_IS_ID] === 'T')) {
+                        masterIDs.push({"idx": i, "seq": mstFieldObj[JV.PROP_ID_SEQ]});
+                    }
+                }
+                var detailIDs = [];
+                for (var i = 0; i < rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS].length; i++) {
+                    var dtlFieldObj = rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS][i];
+                    if ((dtlFieldObj[JV.PROP_IS_ID]) && (dtlFieldObj[JV.PROP_IS_ID] === 'T')) {
+                        detailIDs.push({"idx": i, "seq": dtlFieldObj[JV.PROP_ID_SEQ]});
+                    }
+                }
+                //2. sort the ID fields
+                if (masterIDs.length > 1) {
+                    masterIDs.sort(function(a, b) {
+                        return 1*a["seq"] - 1*b["seq"];
+                    })
+                }
+                if (detailIDs.length > 1) {
+                    detailIDs.sort(function(a, b) {
+                        return 1*a["seq"] - 1*b["seq"];
+                    })
+                }
+                //3. prepare data sequence
+                if (masterIDs.length > 0) {
+                    var mst_dt_len = 0, dtl_dt_len = 0, mst_fields = [];
+                    for (var i = 0; i < masterIDs.length; i++) {
+                        mst_fields.push(dataObj[JV.DATA_MASTER_DATA][masterIDs[i]["idx"]]);
+                        mst_dt_len = dataObj[JV.DATA_MASTER_DATA][masterIDs[i]["idx"]].length;
+                    }
+                    var dtl_fields = [];
+                    for (var i = 0; i < detailIDs.length; i++) {
+                        dtl_fields.push(dataObj[JV.DATA_DETAIL_DATA][detailIDs[i]["idx"]]);
+                        dtl_dt_len = dataObj[JV.DATA_DETAIL_DATA][detailIDs[i]["idx"]].length;
+                    }
+                    var sIdx = 0;
+                    var isEqual = true;
+                    for (var i = 0; i < mst_dt_len; i++) {
+                        me.dataSeq.push([]);
+                        //then compare the master/detail ID-field value
+                        for (var j = sIdx; j < dtl_dt_len; j++) {
+                            isEqual = true;
+                            for (var k = 0; k < mst_fields.length; k++) {
+                                if (!(mst_fields[k][i] === dtl_fields[k][j])) {
+                                    isEqual = false;
+                                    break;
+                                }
+                            }
+                            if (isEqual) {
+                                me.dataSeq[i].push(j);
+                            } else {
+                                sIdx = j;
+                                //below logic is for the data robustness purpose, to avoid those strange record(detail level) which could not match even one of the master record!
+                                if (i < mst_dt_len - 1 && j < dtl_dt_len - 1) {
+                                    for (var j1 = j; j1 < dtl_dt_len; j1++) {
+                                        isEqual = true;
+                                        for (var k = 0; k < mst_fields.length; k++) {
+                                            if (!(mst_fields[k][i + 1] === dtl_fields[k][j1])) {
+                                                isEqual = false;
+                                                break;
+                                            }
+                                        }
+                                        if (isEqual) {
+                                            sIdx = j1;
+                                            break;
+                                        }
+                                    }
+                                }
+                                break;
+                            }
+                        }
+                    }
+                } else { //if no master data
+                    var field = dataObj[JV.DATA_DETAIL_DATA][0];
+                    me.dataSeq = [[]];
+                    for (var i = 0; i < field.length; i++) {
+                        me.dataSeq[0].push(i);
+                    }
+                }
+            }
+            //alert(3);
+        };
+        return JpcDataRst;
+    }
+}
+
+module.exports = JpcData;

+ 47 - 0
protect/models/rpt_component/Jpc_Field.js

@@ -0,0 +1,47 @@
+var JV = require('./Jpc_ValueDefine');
+var JpcField = {
+    createNew: function(rptTpl) {
+        var JpcFieldResult = {};
+        var me = this;
+        JpcFieldResult[JV.NODE_DISCRETE_FIELDS] = {};
+        if (rptTpl[JV.NODE_FIELD_MAP] && rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DISCRETE_FIELDS]) {
+            for (var i = 0; i < rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DISCRETE_FIELDS].length; i++) {
+                me.createSingle(rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DISCRETE_FIELDS][i], JpcFieldResult[JV.NODE_DISCRETE_FIELDS], rptTpl, JV.DATA_DISCRETE_DATA, i);
+            }
+        }
+        JpcFieldResult[JV.NODE_MASTER_FIELDS] = {};
+        if (rptTpl[JV.NODE_FIELD_MAP] && rptTpl[JV.NODE_FIELD_MAP][JV.NODE_MASTER_FIELDS]) {
+            for (var i = 0; i < rptTpl[JV.NODE_FIELD_MAP][JV.NODE_MASTER_FIELDS].length; i++) {
+                me.createSingle(rptTpl[JV.NODE_FIELD_MAP][JV.NODE_MASTER_FIELDS][i], JpcFieldResult[JV.NODE_MASTER_FIELDS], rptTpl, JV.DATA_MASTER_DATA, i);
+            }
+        }
+        JpcFieldResult[JV.NODE_DETAIL_FIELDS] = {};
+        if (rptTpl[JV.NODE_FIELD_MAP] && rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS]) {
+            for (var i = 0; i < rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS].length; i++) {
+                me.createSingle(rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS][i], JpcFieldResult[JV.NODE_DETAIL_FIELDS], rptTpl, JV.DATA_DETAIL_DATA, i);
+            }
+        }
+        JpcFieldResult[JV.NODE_NO_MAPPING_FIELDS] = {};
+        if (rptTpl[JV.NODE_NO_MAPPING_FIELDS]) {
+            for (var i = 0; i < rptTpl[JV.NODE_NO_MAPPING_FIELDS].length; i++) {
+                me.createSingle(rptTpl[JV.NODE_NO_MAPPING_FIELDS][i], JpcFieldResult[JV.NODE_NO_MAPPING_FIELDS], rptTpl, "NA", JV.BLANK_FIELD_INDEX);
+            }
+        }
+        //
+        return JpcFieldResult;
+    },
+    createSingle: function(fieldNode, parentObj, rptTpl, dataNodeName, sequence) {
+        var me = this;
+        if (fieldNode && fieldNode[JV.PROP_ID]) {
+            var item = {};
+            item[JV.PROP_ID] = fieldNode[JV.PROP_ID];
+            item[JV.PROP_NAME] = fieldNode[JV.PROP_NAME];
+            item[JV.PROP_DATA_TYPE] = fieldNode[JV.PROP_DATA_TYPE];
+            item.DataNodeName = dataNodeName;
+            item.DataSeq = sequence;
+            parentObj[JV.PROP_ID + "_" + fieldNode[JV.PROP_ID]] = item;
+        }
+    }
+}
+
+module.exports = JpcField;

+ 229 - 0
protect/models/rpt_component/Jpc_FlowTab.js

@@ -0,0 +1,229 @@
+var JV = require('./Jpc_ValueDefine');
+var JE = require('./Jpc_RTE');
+var JpcFieldHelper = require('./helper/Jpc_Helper_Field');
+var JpcBandHelper = require('./helper/Jpc_Helper_Band');
+var JpcBand = require('./Jpc_Band');
+var JpcFlowTabHelper = require('./helper/Jpc_Helper_FlowTab');
+var JpcCommonHelper = require('./helper/Jpc_Helper_Common');
+var JpcDiscreteHelper = require('./helper/Jpc_Helper_Discrete');
+var JpcTextHelper = require('./helper/Jpc_Helper_Text');
+var JpcCommonOutputHelper = require('./helper/Jpc_Helper_CommonOutput');
+var JpcAreaHelper = require('./helper/Jpc_Helper_Area');
+
+var JpcFlowTabSrv = function(){};
+JpcFlowTabSrv.prototype.createNew = function(){
+    function private_addPageValue(ValuedIdxLst, sortedSequence, preRec, nextRec,page_seg_map, segIdx, pageIdx) {
+        var vIdx = [];
+        for (var vi = 0; vi < nextRec; vi++) {
+            if (sortedSequence.length > preRec + vi) {
+                vIdx.push(sortedSequence[preRec + vi]);
+            } else {
+                vIdx.push(JV.BLANK_VALUE_INDEX);
+            }
+        }
+        page_seg_map.push([pageIdx, segIdx]);
+        ValuedIdxLst.push(vIdx);
+    }
+    var JpcFlowTabResult = {};
+    JpcFlowTabResult.initialize = function() {
+        var me = this;
+        me.segments = [];
+        me.dispValueIdxLst = [];
+        me.page_seg_map = [];
+        me.disp_fields_idx = [];
+        me.seg_sum_fields_idx = [];
+        me.seg_sum_tab_fields = [];
+        me.page_sum_fields_idx = [];
+        me.group_fields_idx = [];
+        me.pageStatusLst = [];
+        me.groupSumValLst = [];
+        me.segSumValLst = [];
+        me.multiCols = 1;
+    };
+    JpcFlowTabResult.sorting = function(rptTpl, dataObj, dataSeq) {
+        var me = this;
+        JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_SEG_SUM][JV.PROP_SUM_FIELDS], me.seg_sum_tab_fields, me.seg_sum_fields_idx);
+        JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_PAGE_SUM][JV.PROP_SUM_FIELDS], null, me.page_sum_fields_idx);
+        JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_GROUP][JV.PROP_GROUP_FIELDS], null, me.group_fields_idx);
+        for (var si = 0; si < dataSeq.length; si++) {
+            me.segments.push(dataSeq[si].slice(0));
+        }
+        //pre-sum the data(for seg sum display)
+        var data_details = dataObj[JV.DATA_DETAIL_DATA],
+            data_fields = [];
+        for (var i = 0; i < me.seg_sum_fields_idx.length; i++) {
+            var data_field = data_details[me.seg_sum_fields_idx[i]];
+            data_fields.push(data_field);
+        }
+        for (var i = 0; i < me.segments.length; i++) { //seg level
+            if (me.segments[i].length > 0) {
+                var rowGrandTotal = [];
+                for (var di = 0; di < data_fields.length; di++) {
+                    rowGrandTotal.push(0.0);
+                    for (var j = 0; j < me.segments[i].length; j++) {
+                        //3. start to sum
+                        rowGrandTotal[di] = rowGrandTotal[di] + 1.0 * JpcFieldHelper.getValue(data_fields[di], me.segments[i][j]);
+                    }
+                }
+                me.segSumValLst.push(rowGrandTotal);
+            }
+
+        }
+    };
+    JpcFlowTabResult.preSetupPages = function (rptTpl, dataOjb, defProperties) {
+        var rst = 0, me = this, counterRowRec = 0, maxRowRec = 1, pageIdx = 0;
+        JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_CONTENT][JV.PROP_FLOW_FIELDS], null, me.disp_fields_idx);
+        var bands = JpcBand.createNew(rptTpl, defProperties);
+        var pageStatus = [true, true, false, false, false, false, false, false];
+        if (rptTpl[JV.NODE_FLOW_INFO][JV.PROP_MULTI_COLUMN]) {
+            me.multiCols = 1 * rptTpl[JV.NODE_FLOW_INFO][JV.PROP_MULTI_COLUMN];
+        }
+        function private_resetBandArea() {
+            JpcBandHelper.setBandArea(bands, rptTpl, pageStatus);
+            maxRowRec = JpcFlowTabHelper.getMaxRowsPerPage(bands, rptTpl);
+        }
+        for (var segIdx = 0; segIdx < me.segments.length; segIdx++) {
+            private_resetBandArea();
+            var orgMaxRowRec = maxRowRec;
+            var rowSplitCnt = Math.ceil(1.0 * me.segments[segIdx].length / orgMaxRowRec);
+            pageStatus[JV.STATUS_SEGMENT_END] = true;
+            private_resetBandArea();
+            var hasAdHocRow = !JpcFlowTabHelper.chkSegEnd(bands, rptTpl, me.segments, segIdx, (rowSplitCnt - 1) * orgMaxRowRec, maxRowRec);
+            if (hasAdHocRow) rowSplitCnt++;
+            if (rowSplitCnt % me.multiCols > 0) {
+                rowSplitCnt++
+            }
+            for (var rowIdx = 0; rowIdx < rowSplitCnt; rowIdx++) {
+                pageStatus[JV.STATUS_SEGMENT_END] = rowIdx == (rowSplitCnt - 1)?true:false;
+                if (pageIdx > 0) pageStatus[JV.STATUS_REPORT_START] = false;
+                private_resetBandArea();
+                me.pageStatusLst.push(pageStatus.slice(0));
+                pageIdx++;
+                counterRowRec = orgMaxRowRec * rowIdx;
+                private_addPageValue(me.dispValueIdxLst, me.segments[segIdx], counterRowRec, maxRowRec,me.page_seg_map, segIdx, pageIdx);
+            }
+            pageStatus[JV.STATUS_SEGMENT_END] = false;
+            pageStatus[JV.STATUS_REPORT_START] = false;
+        }
+        rst = Math.ceil(1.0 * pageIdx / me.multiCols);
+        return rst;
+    };
+    JpcFlowTabResult.outputAsSimpleJSONPage = function (rptTpl, dataObj, page, bands, controls, $CURRENT_RPT) {
+        var me = this, rst = [], tabRstLst = [];
+        var segIdx = JpcCommonHelper.getSegIdxByPageIdx(page, me.page_seg_map);
+        //1 calculate the band position
+        JpcBandHelper.setBandArea(bands, rptTpl, me.pageStatusLst[page - 1]);
+        //2. start to output detail-part
+        var unitFactor = JpcCommonHelper.getUnitFactor(rptTpl);
+        for (var pi = 0; pi < me.multiCols; pi++) {
+            var actualPage = (page - 1) * me.multiCols + pi + 1;
+            //2.1 Content-Tab
+            tabRstLst.push(me.outputContent(rptTpl, dataObj, actualPage, bands, unitFactor, controls, pi));
+            //2.2 Column tab
+            tabRstLst.push(me.outputColumn(rptTpl, dataObj, actualPage, segIdx, bands, unitFactor, controls, pi));
+            //2.3 Sum Seg
+            tabRstLst.push(me.outputSegSum(rptTpl, dataObj, actualPage, segIdx, bands, unitFactor, controls));
+            //2.4 Sum Page
+            //2.5 Discrete
+            if (pi == 0) {
+                tabRstLst.push(JpcDiscreteHelper.outputDiscreteInfo(rptTpl[JV.NODE_FLOW_INFO][JV.NODE_DISCRETE_INFO], bands, dataObj, unitFactor, me.pageStatusLst[actualPage - 1], segIdx, 1, pi, $CURRENT_RPT));
+            }
+        }
+        for (var i = 0; i < tabRstLst.length; i++) {
+            rst = rst.concat(tabRstLst[i]);
+            tabRstLst[i] = null;
+        }
+        return rst;
+    };
+    JpcFlowTabResult.outputContent = function(rptTpl, dataObj, page, bands, unitFactor, controls, multiColIdx, $CURRENT_RPT) {
+        var me = this, rst = [];
+        var tab = rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_CONTENT];
+        var band = bands[tab[JV.PROP_BAND_NAME]];
+        if (band) {
+            var pageStatus = me.pageStatusLst[page - 1];
+            if (pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]] == true) {
+                var tab_fields = tab[JV.PROP_FLOW_FIELDS];
+                var data_details = dataObj[JV.DATA_DETAIL_DATA];
+                var contentValuesIdx = me.dispValueIdxLst[page - 1];
+                for (var i = 0; i < tab_fields.length; i++) {
+                    var tab_field = tab_fields[i];
+                    var data_field = null;
+                    if (me.disp_fields_idx[i] != JV.BLANK_FIELD_INDEX) {
+                        data_field = data_details[me.disp_fields_idx[i]];
+                    } else {
+                        data_field = JE.F(tab_field[JV.PROP_FIELD_ID], $CURRENT_RPT);
+                        if (data_field) {
+                            data_field = data_field[JV.PROP_AD_HOC_DATA];
+                        }
+                    }
+                    if (!(tab_field[JV.PROP_HIDDEN])) {
+                        for (var rowIdx = 0; rowIdx < contentValuesIdx.length; rowIdx++) {
+                            rst.push(me.outputTabField(band, tab_field, data_field, contentValuesIdx[rowIdx], -1, contentValuesIdx.length, rowIdx, 1, 0, unitFactor, true, controls, multiColIdx));
+                        }
+                    }
+                }
+            }
+        }
+        return rst;
+    };
+    JpcFlowTabResult.outputColumn = function (rptTpl, dataObj, page, segIdx, bands, unitFactor, controls, multiColIdx) {
+        var me = this, rst = [];
+        var tab = rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_COLUMN];
+        var band = bands[tab[JV.PROP_BAND_NAME]];
+        if (band) {
+            var pageStatus = me.pageStatusLst[page - 1];
+            if (pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]] == true) {
+                if (tab[JV.PROP_TEXT]) {
+                    rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXT], band, unitFactor, 1, 0, 1, 0, me.multiCols, multiColIdx));
+                }
+                if (tab[JV.PROP_TEXTS]) {
+                    for (var j = 0; j < tab[JV.PROP_TEXTS].length; j++) {
+                        rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXTS][j], band, unitFactor, 1, 0, 1, 0, me.multiCols, multiColIdx));
+                    }
+                }
+                if (tab[JV.NODE_DISCRETE_INFO]) {
+                    rst = rst.concat(JpcDiscreteHelper.outputDiscreteInfo(tab[JV.NODE_DISCRETE_INFO], bands, dataObj, unitFactor, me.pageStatusLst[page - 1], segIdx, me.multiCols, multiColIdx));
+                }
+            }
+        }
+        return rst;
+    };
+    JpcFlowTabResult.outputSegSum = function (rptTpl, dataObj, page, segIdx, bands, unitFactor, controls) {
+        var me = this, rst = [];
+        var tab = rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_SEG_SUM];
+        var band = bands[tab[JV.PROP_BAND_NAME]];
+        if (band) {
+            var pageStatus = me.pageStatusLst[page - 1];
+            if (pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]] == true) {
+                var tab_fields = me.seg_sum_tab_fields;
+                for (var i = 0; i < tab_fields.length; i++) {
+                    var cellItem = JpcCommonOutputHelper.createCommonOutput(tab_fields[i], me.segSumValLst[segIdx][i], controls);
+                    cellItem[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_fields[i][JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, me.multiCols, 0, true, false);
+                    rst.push(cellItem);
+                }
+                if (tab[JV.PROP_TEXT]) {
+                    rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXT], band, unitFactor, 1, 0, 1, 0, me.multiCols, 0));
+                }
+                if (tab[JV.PROP_TEXTS]) {
+                    for (var j = 0; j < tab[JV.PROP_TEXTS].length; j++) {
+                        rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXTS][j], band, unitFactor, 1, 0, 1, 0, me.multiCols, 0));
+                    }
+                }
+                if (tab[JV.NODE_DISCRETE_INFO]) {
+                    rst = rst.concat(JpcDiscreteHelper.outputDiscreteInfo(tab[JV.NODE_DISCRETE_INFO], bands, dataObj, unitFactor, me.pageStatusLst[page - 1], segIdx, me.multiCols, 0));
+                }
+            }
+        }
+        return rst;
+    };
+    JpcFlowTabResult.outputTabField = function (band, tab_field, data_field, valueIdx, serialIdx, rows, rowIdx, cols, colIdx, unitFactor, isRow, controls, multiColIdx) {
+        var me = this, rst = null;
+        rst = JpcCommonOutputHelper.createCommonOutput(tab_field, JpcFieldHelper.getValue(data_field, valueIdx), controls);
+        rst[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_field[JV.PROP_AREA], band, unitFactor, rows, rowIdx, cols, colIdx, me.multiCols, multiColIdx, true, false);
+        return rst;
+    }
+
+    return JpcFlowTabResult;
+}
+
+module.exports = new JpcFlowTabSrv();

+ 18 - 0
protect/models/rpt_component/Jpc_Function.js

@@ -0,0 +1,18 @@
+var JV = require('./Jpc_ValueDefine');
+var JpcFunc = {
+    createNew: function (rptTpl) {
+        var me = this;
+        var rst = [];
+        if (rptTpl[JV.NODE_FORMULAS]) {
+            for (var i = 0; i < rptTpl[JV.NODE_FORMULAS].length; i++) {
+                var item = {};
+                item[JV.PROP_RUN_TYPE] = rptTpl[JV.NODE_FORMULAS][i][JV.PROP_RUN_TYPE];
+                item[JV.PROP_EXPRESSION] = rptTpl[JV.NODE_FORMULAS][i][JV.PROP_EXPRESSION];
+                rst.push(item);
+            }
+        }
+        return rst;
+    }
+};
+
+module.exports = JpcFunc;

+ 27 - 0
protect/models/rpt_component/Jpc_Param.js

@@ -0,0 +1,27 @@
+var JV = require('./Jpc_ValueDefine');
+var JpcParam = {
+    createNew: function(rptTpl) {
+        var JpcParamResult = {};
+        var me = this;
+        if (rptTpl[JV.NODE_DISCRETE_PARAMS]) {
+            for (var i = 0; i < rptTpl[JV.NODE_DISCRETE_PARAMS].length; i++) {
+                me.createSingle(rptTpl[JV.NODE_DISCRETE_PARAMS][i], JpcParamResult, rptTpl, i);
+            }
+        }
+        return JpcParamResult;
+    },
+    createSingle: function(paramNode, parentObj, rptTpl, sequence) {
+        var me = this;
+        if (paramNode && paramNode[JV.PROP_ID]) {
+            var item = {};
+            item[JV.PROP_ID] = paramNode[JV.PROP_ID];
+            item[JV.PROP_NAME] = paramNode[JV.PROP_NAME];
+            item[JV.PROP_DATA_TYPE] = paramNode[JV.PROP_DATA_TYPE];
+            if (paramNode[JV.PROP_DFT_VALUE]) item[JV.PROP_DFT_VALUE] = paramNode[JV.PROP_DFT_VALUE];
+            item.DataSeq = sequence;
+            parentObj[JV.PROP_ID + "_" + paramNode[JV.PROP_ID]] = item;
+        }
+    }
+}
+
+module.exports = JpcParam;

+ 47 - 0
protect/models/rpt_component/Jpc_RTE.js

@@ -0,0 +1,47 @@
+/**
+ * Created by Tony on 2016/12/28.
+ */
+
+var JV = require('./Jpc_ValueDefine');
+var JE = {
+    F: function(fID, $CURRENT_RPT) {
+        var rst = null;
+        if ($CURRENT_RPT && ($CURRENT_RPT.fields[JV.NODE_DETAIL_FIELDS][JV.PROP_ID + "_" + fID])) {
+            rst = $CURRENT_RPT.fields[JV.NODE_DETAIL_FIELDS][JV.PROP_ID + "_" + fID];
+        } else if ($CURRENT_RPT && ($CURRENT_RPT.fields[JV.NODE_MASTER_FIELDS][JV.PROP_ID + "_" + fID])) {
+            rst = $CURRENT_RPT.fields[JV.NODE_MASTER_FIELDS][JV.PROP_ID + "_" + fID];
+        } else if ($CURRENT_RPT && ($CURRENT_RPT.fields[JV.NODE_DISCRETE_FIELDS][JV.PROP_ID + "_" + fID])) {
+            rst = $CURRENT_RPT.fields[JV.NODE_DISCRETE_FIELDS][JV.PROP_ID + "_" + fID];
+        } else if ($CURRENT_RPT && ($CURRENT_RPT.fields[JV.NODE_NO_MAPPING_FIELDS][JV.PROP_ID + "_" + fID])) {
+            rst = $CURRENT_RPT.fields[JV.NODE_NO_MAPPING_FIELDS][JV.PROP_ID + "_" + fID];
+        } else {
+            rst = {msg: "the Field-ID is not valid, no result could be found!"};
+        }
+        return rst;
+    },
+    P: function(pID, $CURRENT_RPT) {
+        var rst = null;
+        if ($CURRENT_RPT && ($CURRENT_RPT.params[JV.PROP_ID + "_" + pID])) {
+            rst = $CURRENT_RPT.params[JV.PROP_ID + "_" + pID];
+        } else {
+            rst = {msg: "the Param-ID is not valid, no result was found!"};
+        }
+        return rst;
+    },
+    getCurrentPage: function ($CURRENT_RPT) {
+        var rst = 0;
+        if ($CURRENT_RPT) {
+            rst = $CURRENT_RPT.runTimePageData.currentPage;
+        }
+        return rst;
+    },
+    getTotalPage: function ($CURRENT_RPT) {
+        var rst = 0;
+        if ($CURRENT_RPT) {
+            rst = $CURRENT_RPT.totalPages;
+        }
+        return rst;
+    }
+}
+
+module.exports = JE;

+ 197 - 0
protect/models/rpt_component/Jpc_ValueDefine.js

@@ -0,0 +1,197 @@
+var JV = {
+    NODE_CROSS_INFO: "交叉表_信息",
+    NODE_CROSS_ROW: "交叉行",
+    NODE_CROSS_COL: "交叉列",
+    NODE_CROSS_CONTENT: "交叉数据",
+    NODE_CROSS_ROW_SUM: "交叉行合计",
+    NODE_CROSS_COL_SUM: "交叉列合计",
+    NODE_CROSS_ROW_EXT: "交叉行拓展",
+    NODE_CROSS_ROW_SUM_EXT: "交叉行拓展合计",
+    NODE_FIELD_MAP: "指标_数据_映射",
+    NODE_DISCRETE_FIELDS: "离散指标_集合",
+    NODE_NO_MAPPING_FIELDS: "无映射离散指标_集合",
+    NODE_DISCRETE_PARAMS: "离散参数_集合",
+    NODE_MASTER_FIELDS: "主数据指标_集合",
+    NODE_DETAIL_FIELDS: "从数据指标_集合",
+    NODE_BAND_COLLECTION: "布局框_集合",
+    NODE_FORMULAS: "计算式_集合",
+    NODE_DISCRETE_INFO: "离散信息",
+    NODE_BILL_INFO: "账单式表_信息",
+    NODE_BILL_CONTENT : "账单式表_数据",
+    NODE_FLOW_INFO: "流水式表_信息",
+    NODE_FLOW_GROUP: "流水式表_分组信息",
+    NODE_FLOW_SEG_SUM: "流水式表_段统计信息",
+    NODE_FLOW_PAGE_SUM: "流水式表_页统计信息",
+    NODE_FLOW_COLUMN : "流水式表_列",
+    NODE_FLOW_CONTENT : "流水式表_数据",
+    PROP_MULTI_COLUMN: "多列显示数量",
+
+    NODE_MAIN_INFO: "主信息",
+    NODE_PAGE_INFO: "打印页面_信息",
+    NODE_MARGINS: "页边距",
+
+    NODE_FONT_COLLECTION: "font_collection",
+    NODE_STYLE_COLLECTION: "style_collection",
+    NODE_CONTROL_COLLECTION: "control_collection",
+
+    PROP_ID: "ID",
+    PROP_AD_HOC_DATA: "data_field",
+    PROP_CMN_HEIGHT: "CommonHeight",
+    PROP_CMN_WIDTH: "CommonWidth",
+    PROP_BAND_NAME: "BandName",
+    PROP_UNITS: "单位",
+    PROP_PAGE_SIZE: "页规格",
+    PROP_ORIENTATION: "方向",
+    PROP_LEFT: "Left",
+    PROP_RIGHT: "Right",
+    PROP_TOP: "Top",
+    PROP_BOTTOM: "Bottom",
+    PROP_DATA_TYPE: "DataType",
+    PROP_NAME: "Name",
+    PROP_DFT_VALUE: "Default_Value",
+    PROP_EXPRESSION: "expression",
+    PROP_RUN_TYPE: "run_type",
+    PROP_BORDER_STYLE: "border_style",
+    PROP_POSITION: "Position",
+    PROP_HIDDEN: "Hidden",
+    PROP_IS_SERIAL: "isSerial",
+    PROP_FONT: "font",
+    PROP_CONTROL: "control",
+    PROP_STYLE: "style",
+    PROP_VALUE: "Value",
+    PROP_LABEL: "Label",
+    PROP_AREA: "area",
+    PROP_DISCRETE_FIELDS: "discrete_field_s",
+    PROP_FLOW_FIELDS: "flow_field_s",
+    PROP_BILL_FIELDS: "bill_field_s",
+    PROP_GROUP_FIELDS: "group_field_s",
+    PROP_SUM_FIELDS: "sum_field_s",
+    PROP_TEXTS: "text_s",
+    PROP_TEXT: "text",
+    PROP_FIELD_ID: "FieldID",
+    PROP_PARAM_ID: "ParamID",
+    PROP_PREFIX: "Prefix",
+    PROP_SUFFIX: "Suffix",
+    PROP_FORMAT: "Format",
+
+    PROP_SHOW_ZERO: "ShowZero",
+    PROP_EXTENSION_TYPE: "ExtType",
+
+    PROP_CALCULATION: "CalculationType",
+    PROP_H_CALCULATION: "H_CalculationType",
+    PROP_V_CALCULATION: "V_CalculationType",
+
+    IDX_LEFT: 0,
+    IDX_TOP: 1,
+    IDX_RIGHT: 2,
+    IDX_BOTTOM: 3,
+
+    BAND_PROP_NAME: "Name",
+    BAND_PROP_MERGE_BAND: "MergeBand",
+    BAND_PROP_STYLE: "style",
+    BAND_PROP_CONTROL: "control",
+    BAND_PROP_HEIGHT: "Height",
+    BAND_PROP_WIDTH: "Width",
+    BAND_PROP_DISPLAY_TYPE: "DisplayType",
+    BAND_PROP_ALIGNMENT: "Alignment",
+    BAND_PROP_MERGE_BORDER: "MergeBorder",
+    BAND_PROP_SUB_BANDS: "band_s",
+
+    MEASUREMENT: {
+        PIXEL:["像素点", "象素点", "PIXEL"],
+        CM: ["厘米", "CM"],
+        INCH: ["英寸","INCH"]
+    },
+
+    PROP_IS_ID: "isID",
+    PROP_ID_SEQ: "IDSeq",
+
+    TAB_CROSS_FIELDS: "cross_field_s",
+    TAB_FIELD_PROP_SORT: "Sort",
+    TAB_FIELD_PROP_SORT_VAL_NOSORT: "no_sort",
+    TAB_FIELD_PROP_SORT_VAL_ASC: "ascend",
+    TAB_FIELD_PROP_SORT_VAL_DESC: "descend",
+
+    DATA_DISCRETE_DATA: "discrete_data",
+    DATA_MASTER_DATA: "master_data",
+    DATA_DETAIL_DATA: "detail_data",
+
+    BLANK_FIELD_INDEX: -10,
+    BLANK_VALUE_INDEX: -100,
+    BLANK_PAGE_VALUE_INDEX: -200,
+
+    RUN_TYPE_BEFORE_PAGING: "before_paging",
+    RUN_TYPE_BEFORE_OUTPUT: "before_output",
+
+    PAGE_STATUS: ["EveryPage","FirstPage", "LastPage", "SegmentStart", "SegmentEnd", "Group", "CrossRowEnd", "CrossColEnd"],
+
+    CONTROL_PROPS: ["Shrink", "ShowZero", "Horizon", "Vertical", "Wrap"],
+    BORDER_STYLE_PROPS: ["LineWeight", "DashStyle", "Color"],
+    PROP_LINE_WEIGHT: "LineWeight",
+    PROP_DASH_STYLE: "DashStyle",
+    PROP_COLOR: "Color",
+    FONT_PROPS: ["Name", "FontHeight", "FontColor", "FontBold", "FontItalic", "FontUnderline", "FontStrikeOut", "FontAngle"],
+
+    STATUS_NORMAL: 0,
+    STATUS_REPORT_START: 1,
+    STATUS_REPORT_END: 2,
+    STATUS_SEGMENT_START: 3,
+    STATUS_SEGMENT_END: 4,
+    STATUS_GROUP: 5,
+    STATUS_CROSS_ROW_END: 6,
+    STATUS_CROSS_COL_END: 7,
+
+    LAYOUT: ["Top","Bottom", "Left", "Right", "Fulfill"],
+    LAYOUT_TOP: 0,
+    LAYOUT_BOTTOM: 1,
+    LAYOUT_LEFT: 2,
+    LAYOUT_RIGHT: 3,
+    LAYOUT_FULFILL: 4,
+
+    OUTPUT_ALIGN: {
+        H: ["Left", "Center", "Right"],
+        V: ["Top", "Center", "Bottom"]
+    },
+
+    CAL_TYPE:["percentage","abstract"],
+    CAL_TYPE_PERCENTAGE: 0,
+    CAL_TYPE_ABSTRACT: 1,
+
+    PAGE_ORIENTATION_V_FIRST: 0,
+    PAGE_ORIENTATION_H_FIRST: 1,
+
+    ORIENTATION_PORTRAIT: "PORTRAIT",
+    ORIENTATION_LANDSCAPE: "LANDSCAPE",
+    ORIENTATION_PORTRAIT_CHN: "纵",
+    ORIENTATION_LANDSCAPE_CHN: "横",
+    SIZE_A3: [11.69, 16.54],
+    SIZE_A4: [8.27, 11.69],
+    SIZE_A5: [5.83, 8.27],
+    SIZE_B5: [6.93, 9.84],
+    SIZE_LETTER: [8.5, 11.0],
+    SIZE_LEGAL: [8.5, 14.0],
+    SIZE_16K: [7.75, 10.75],
+    SIZE_EXECUTIVE: [7.25, 10.5],
+
+    OUTPUT_OFFSET: [2,1,2,3],
+    OFFSET_IDX_LEFT: 0,
+    OFFSET_IDX_RIGHT: 1,
+    OFFSET_IDX_TOP: 2,
+    OFFSET_IDX_BOTTOM: 3,
+
+    PROP_PAGE_SEQ: "page_seq",
+
+    PAGE_SELF_DEFINE: "自定义",
+
+    PAGES_SIZE_STR: ["A3", "A4", "A5", "B5", "LETTER", "LEGAL", "EXECUTIVE", "16K"],
+    PAGES_SIZE: [[11.69, 16.54], [8.27, 11.69], [5.83, 8.27], [6.93, 9.84], [8.5, 11.0], [8.5, 14.0], [7.25, 10.5], [7.25, 10.5]],
+
+    HUNDRED_PERCENT : 100.0,
+
+    VERTICAL_ANGLE: "90",
+    ANTI_VERTICAL_ANGLE: "-90",
+
+    LAST_DEF: ""
+}
+
+module.exports = JV;

+ 58 - 0
protect/models/rpt_component/helper/Jpc_Helper_Area.js

@@ -0,0 +1,58 @@
+var JV = require('../Jpc_ValueDefine');
+
+var JpcAreaHelper = {
+    outputArea: function(areaNode, band, unitFactor, rowAmount, rowIdx, colAmount, colIdx, multipleDispCol, multipleColIdx,syncHeight, syncWidth) {
+        var rst = {}, maxMultiColumns = 3;
+        if (multipleDispCol > 0 && multipleDispCol <= maxMultiColumns) {
+            //1. calculate left/right
+            var areaWidth = 1.0 * (band[JV.PROP_RIGHT] - band[JV.PROP_LEFT]) / multipleDispCol;
+            areaWidth = areaWidth / colAmount;
+            var innerLeft = 0.0, innerRight = areaWidth;
+            switch (areaNode[JV.PROP_H_CALCULATION]) {
+                case JV.CAL_TYPE[JV.CAL_TYPE_PERCENTAGE] :
+                    innerLeft = (1.0 * areaNode[JV.PROP_LEFT] * areaWidth / JV.HUNDRED_PERCENT);
+                    innerRight = (1.0 * areaNode[JV.PROP_RIGHT] * areaWidth / JV.HUNDRED_PERCENT) ;
+                    break;
+                case JV.CAL_TYPE[JV.CAL_TYPE_ABSTRACT] :
+                    innerLeft = 1.0 * areaNode[JV.PROP_LEFT] * unitFactor;
+                    innerRight = 1.0 * areaNode[JV.PROP_RIGHT] * unitFactor ;
+                    break;
+            }
+            //2. calculate top/bottom
+            var  areaHeight = 1.0 * (band[JV.PROP_BOTTOM] - band[JV.PROP_TOP]);
+            areaHeight = areaHeight / rowAmount;
+            var innerTop = 0.0, innerBottom = areaHeight;
+            switch (areaNode[JV.PROP_V_CALCULATION]) {
+                case JV.CAL_TYPE[JV.CAL_TYPE_PERCENTAGE] :
+                    innerTop = (1.0 * areaNode[JV.PROP_TOP] * areaHeight / JV.HUNDRED_PERCENT);
+                    innerBottom = (1.0 * areaNode[JV.PROP_BOTTOM] * areaHeight / JV.HUNDRED_PERCENT) ;
+                    break;
+                case JV.CAL_TYPE[JV.CAL_TYPE_ABSTRACT] :
+                    innerTop = 1.0 * areaNode[JV.PROP_TOP] * unitFactor;
+                    innerBottom = 1.0 * areaNode[JV.PROP_BOTTOM] * unitFactor ;
+                    break;
+            }
+            //
+            var rstLeft = 0.0, rstRight = 0.0, rstTop = 0.0, rstBottom = 0.0;
+            if (syncHeight) {
+                rstBottom = Math.round(1.0 * band[JV.PROP_TOP] + areaHeight * (rowIdx + 1) + innerTop);
+            } else {
+                rstBottom = Math.round(1.0 * band[JV.PROP_TOP] + areaHeight * rowIdx + innerBottom);
+            }
+            if (syncWidth) {
+                rstRight = Math.round(1.0 * band[JV.PROP_LEFT] + areaWidth * (colIdx + 1) + innerLeft + multipleColIdx * areaWidth);
+            } else {
+                rstRight = Math.round(1.0 * band[JV.PROP_LEFT] + areaWidth * colIdx + innerRight + multipleColIdx * areaWidth);
+            }
+            rstLeft = Math.round(1.0 * band[JV.PROP_LEFT] + areaWidth * colIdx + innerLeft + multipleColIdx * areaWidth);
+            rstTop = Math.round(1.0 * band[JV.PROP_TOP] + areaHeight * rowIdx + innerTop);
+            rst[JV.PROP_LEFT] = rstLeft;
+            rst[JV.PROP_RIGHT] = rstRight;
+            rst[JV.PROP_TOP] = rstTop;
+            rst[JV.PROP_BOTTOM] = rstBottom;
+        }
+        return rst;
+    }
+};
+
+module.exports = JpcAreaHelper;

+ 74 - 0
protect/models/rpt_component/helper/Jpc_Helper_Band.js

@@ -0,0 +1,74 @@
+var JV = require('../Jpc_ValueDefine');
+var JpcCommonHelper = require('./Jpc_Helper_Common');
+
+var JpcBandHelper = {
+    getBandTypeValByString: function(bandType) {
+        var rst = JV.PAGE_STATUS.indexOf(bandType);
+        if (rst < 0) rst = JV.STATUS_NORMAL;
+        return rst;
+    },
+    setBandArea: function(bands, rptTpl, pageStatus) {
+        var me = this;
+        if (rptTpl[JV.NODE_BAND_COLLECTION]) {
+            var unitFactor = JpcCommonHelper.getUnitFactor(rptTpl);
+            var orgArea = JpcCommonHelper.getReportArea(rptTpl, unitFactor);
+            for (var i = 0; i < rptTpl[JV.NODE_BAND_COLLECTION].length; i++) {
+                me.setBandPos(bands, rptTpl[JV.NODE_BAND_COLLECTION][i], orgArea, unitFactor, pageStatus);
+            }
+        }
+    },
+    setBandPos: function(bands, bandNode, orgArea, unitFactor, pageStatus) {
+        var me = this, band = bands[bandNode[JV.BAND_PROP_NAME]];
+        //1. initialize
+        band[JV.PROP_LEFT] = orgArea[JV.IDX_LEFT];
+        band[JV.PROP_TOP] = orgArea[JV.IDX_TOP];
+        band[JV.PROP_RIGHT] = orgArea[JV.IDX_RIGHT];
+        band[JV.PROP_BOTTOM] = orgArea[JV.IDX_BOTTOM];
+        //2. set this band
+        if (pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]] == true) {
+            switch (band[JV.BAND_PROP_ALIGNMENT]) {
+                case JV.LAYOUT_TOP:
+                    if (band[JV.PROP_CALCULATION] == JV.CAL_TYPE_ABSTRACT) {
+                        band.Bottom = band.Top + unitFactor * band[JV.BAND_PROP_HEIGHT];
+                    } else {
+                        band.Bottom = band.Top + (band.Bottom - band.Top) * band[JV.BAND_PROP_HEIGHT] / 100;
+                    }
+                    orgArea[JV.IDX_TOP] = band.Bottom;
+                    break;
+                case JV.LAYOUT_BOTTOM:
+                    if (band[JV.PROP_CALCULATION] == JV.CAL_TYPE_ABSTRACT) {
+                        band.Top = band.Bottom - unitFactor * band[JV.BAND_PROP_HEIGHT];
+                    } else {
+                        band.Top = band.Bottom - (band.Bottom - band.Top) * band[JV.BAND_PROP_HEIGHT] / 100;
+                    }
+                    orgArea[JV.IDX_BOTTOM] = band.Top;
+                    break;
+                case JV.LAYOUT_LEFT:
+                    if (band[JV.PROP_CALCULATION] == JV.CAL_TYPE_ABSTRACT) {
+                        band.Right = band.Left + unitFactor * band[JV.BAND_PROP_WIDTH];
+                    } else {
+                        band.Right = band.Left + (band.Right - band.Left) * band[JV.BAND_PROP_WIDTH] / 100;
+                    }
+                    orgArea[JV.IDX_LEFT] = band.Right;
+                    break;
+                case JV.LAYOUT_RIGHT:
+                    if (band[JV.PROP_CALCULATION] == JV.CAL_TYPE_ABSTRACT) {
+                        band.Left = band.Right - unitFactor * band[JV.BAND_PROP_WIDTH];
+                    } else {
+                        band.Left = band.Right - (band.Right - band.Left) * band[JV.BAND_PROP_WIDTH] / 100;
+                    }
+                    orgArea[JV.IDX_RIGHT] = band.Left;
+                    break;
+            }
+            //3. set sub-bands
+            if (bandNode[JV.BAND_PROP_SUB_BANDS]) {
+                var bandArea = [band.Left, band.Top, band.Right, band.Bottom];
+                for (var i = 0; i < bandNode[JV.BAND_PROP_SUB_BANDS].length; i++) {
+                    me.setBandPos(bands, bandNode[JV.BAND_PROP_SUB_BANDS][i], bandArea, unitFactor, pageStatus);
+                }
+            }
+        }
+    }
+};
+
+module.exports = JpcBandHelper;

+ 148 - 0
protect/models/rpt_component/helper/Jpc_Helper_Common.js

@@ -0,0 +1,148 @@
+var JV = require('../Jpc_ValueDefine');
+
+var JpcCommonHelper = {
+    commonConstant: {},
+    getResultByID: function (KeyID, collectionList) {
+        var rst = null;
+        if (KeyID) {
+            for (var i = 0; i < collectionList.length; i++) {
+                var collection = collectionList[i];
+                if (collection && collection instanceof Array) {
+                    for (var j = 0; j < collection.length; j++) {
+                        if (collection[j][JV.PROP_ID] === KeyID) {
+                            rst = collection[j];
+                            break;
+                        }
+                    }
+                    if (rst) break;
+                }
+            }
+        }
+        return rst;
+    },
+    getFont: function(fontName, dftFonts, rptTpl) {
+        var me = this, rst = null, list = [];
+        if (rptTpl) list.push(rptTpl[JV.NODE_FONT_COLLECTION]);
+        list.push(dftFonts);
+        rst = me.getResultByID(fontName, list);
+        return rst;
+    },
+    getStyle: function(styleName, dftStyles, rptTpl) {
+        var me = this, rst = null, list = [];
+        if (rptTpl) list.push(rptTpl[JV.NODE_STYLE_COLLECTION]);
+        list.push(dftStyles);
+        rst = me.getResultByID(styleName, list);
+        return rst;
+    },
+    getControl: function(controlName, dftControls, rptTpl) {
+        var me = this, rst = null, list = [];
+        if (rptTpl) list.push(rptTpl[JV.NODE_CONTROL_COLLECTION]);
+        list.push(dftControls);
+        rst = me.getResultByID(controlName, list);
+        return rst;
+    },
+    getLayoutAlignment: function(alignStr) {
+        var rst = JV.LAYOUT.indexOf(alignStr);
+        if (rst < 0) rst = JV.LAYOUT_FULFILL;
+        return rst;
+    },
+    getPosCalculationType: function (typeStr) {
+        var rst = JV.CAL_TYPE.indexOf(typeStr);
+        if (rst < 0) rst = JV.CAL_TYPE_ABSTRACT;
+        return rst;
+    },
+    getScreenDPI: function() {
+        var me = this, arrDPI = [];
+        if (!me.commonConstant.resolution) {
+            arrDPI = [96,96];
+            me.commonConstant.resolution = arrDPI;
+        } else {
+            arrDPI = me.commonConstant.resolution;
+        }
+        return arrDPI;
+    },
+    getScreenDPI_bk: function() {
+        var me = this, arrDPI = [];
+        if (!me.commonConstant.resolution) {
+            if (window) {
+                if (window.screen.deviceXDPI != undefined) {
+                    arrDPI.push(window.screen.deviceXDPI);
+                    arrDPI.push(window.screen.deviceYDPI);
+                } else {
+                    var tmpNode = document.createElement("DIV");
+                    tmpNode.style.cssText = "width:1in;height:1in;position:absolute;left:0px;top:0px;z-index:99;visibility:hidden";
+                    document.body.appendChild(tmpNode);
+                    arrDPI.push(parseInt(tmpNode.offsetWidth));
+                    arrDPI.push(parseInt(tmpNode.offsetHeight));
+                    tmpNode.parentNode.removeChild(tmpNode);
+                }
+            } else {
+                arrDPI = [96,96];
+            }
+            me.commonConstant.resolution = arrDPI;
+        } else {
+            arrDPI = me.commonConstant.resolution;
+        }
+        return arrDPI;
+    },
+    getUnitFactor: function(rptTpl) {
+        var me = this;
+        return me.translateUnit(rptTpl[JV.NODE_MAIN_INFO][JV.PROP_UNITS]);
+    },
+    translateUnit: function(unitStr) {
+        var me = this, rst = 1.0;
+        if (unitStr) {
+            var resolution = me.getScreenDPI();
+            if (JV.MEASUREMENT.PIXEL.indexOf(unitStr) >= 0) {
+                rst = 1.0;
+            } else if (JV.MEASUREMENT.CM.indexOf(unitStr) >= 0) {
+                rst = 1.0 * resolution[0] / 2.54;
+            } else if (JV.MEASUREMENT.INCH.indexOf(unitStr) >= 0) {
+                rst = 1.0 * resolution[0];
+            }
+        }
+        return rst;
+    },
+    getPageSize: function (rptTpl) {
+        var me = this, size = null;
+        var sizeStr = rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE];
+        var sizeIdx = JV.PAGES_SIZE_STR.indexOf(sizeStr);
+        if (sizeIdx >= 0) {
+            size = JV.PAGES_SIZE[sizeIdx].slice(0);
+        } else if (sizeStr === JV.PAGE_SELF_DEFINE) {
+            //
+        } else {
+            size = JV.SIZE_A4.slice(0);
+        }
+        var page_orientation = rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_ORIENTATION];
+        if (page_orientation === JV.ORIENTATION_LANDSCAPE || page_orientation === JV.ORIENTATION_LANDSCAPE_CHN) {
+            //swap x,y
+            var tmp = size[0];
+            size[0] = size[1];
+            size[1] = tmp;
+        }
+        return size;
+    },
+    getReportArea: function(rptTpl, unitFactor) {
+        var me = this, resolution = me.getScreenDPI(), rst = [], size = me.getPageSize(rptTpl);
+        size[0] = resolution[0] * size[0];
+        size[1] = resolution[0] * size[1];
+        rst.push(unitFactor * rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MARGINS][JV.PROP_LEFT]);
+        rst.push(unitFactor * rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MARGINS][JV.PROP_TOP]);
+        rst.push(size[0] - unitFactor * rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MARGINS][JV.PROP_RIGHT]);
+        rst.push(size[1] - unitFactor * rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MARGINS][JV.PROP_BOTTOM]);
+        return rst;
+    },
+    getSegIdxByPageIdx: function(page, page_seg_map) {
+        var rst = -1;
+        for (var pIdx = 0; pIdx < page_seg_map.length; pIdx++) {
+            if (page_seg_map[pIdx][0] == page) {
+                rst = page_seg_map[pIdx][1];
+                break;
+            }
+        }
+        return rst;
+    }
+};
+
+module.exports = JpcCommonHelper;

+ 60 - 0
protect/models/rpt_component/helper/Jpc_Helper_CommonOutput.js

@@ -0,0 +1,60 @@
+var JV = require('../Jpc_ValueDefine');
+var JpcFieldHelper = require('./Jpc_Helper_Field');
+
+var JpcCommonOutputHelper = {
+    createCommonOutputWithoutDecorate: function (node, value, controls) {
+        var rst = {};
+        //1. font/style/control
+        rst[JV.PROP_FONT] = node[[JV.PROP_FONT]];
+        rst[JV.PROP_CONTROL] = node[[JV.PROP_CONTROL]];
+        rst[JV.PROP_STYLE] = node[[JV.PROP_STYLE]];
+        //2. value
+        rst[JV.PROP_VALUE] = value;
+        if (node[JV.PROP_FORMAT]) {
+            if (!(isNaN(parseFloat(rst[JV.PROP_VALUE])))) {
+                var dotIdx = node[JV.PROP_FORMAT].indexOf(".");
+                if (dotIdx >= 0) {
+                    rst[JV.PROP_VALUE] = parseFloat(rst[JV.PROP_VALUE]).toFixed(node[JV.PROP_FORMAT].length - dotIdx - 1);
+                } else {
+                    rst[JV.PROP_VALUE] = parseFloat(rst[JV.PROP_VALUE]).toFixed(0);
+                }
+            }
+        }
+        if (node[JV.PROP_PREFIX] && rst[JV.PROP_VALUE] != null) {
+            rst[JV.PROP_VALUE] = node[JV.PROP_PREFIX] + rst[JV.PROP_VALUE];
+        }
+        if (node[JV.PROP_SUFFIX] && rst[JV.PROP_VALUE] != null) {
+            rst[JV.PROP_VALUE] = rst[JV.PROP_VALUE] + node[JV.PROP_SUFFIX];
+        }
+        return rst;
+    },
+    createCommonOutput: function (node, value, controls) {
+        var rst = {};
+        //1. font/style/control
+        rst[JV.PROP_FONT] = node[[JV.PROP_FONT]];
+        rst[JV.PROP_CONTROL] = node[[JV.PROP_CONTROL]];
+        rst[JV.PROP_STYLE] = node[[JV.PROP_STYLE]];
+        //2. value
+        rst[JV.PROP_VALUE] = value;
+        JpcFieldHelper.decorateValue(rst, controls);
+        if (node[JV.PROP_FORMAT]) {
+            if (!(isNaN(parseFloat(rst[JV.PROP_VALUE])))) {
+                var dotIdx = node[JV.PROP_FORMAT].indexOf(".");
+                if (dotIdx >= 0) {
+                    rst[JV.PROP_VALUE] = parseFloat(rst[JV.PROP_VALUE]).toFixed(node[JV.PROP_FORMAT].length - dotIdx - 1);
+                } else {
+                    rst[JV.PROP_VALUE] = parseFloat(rst[JV.PROP_VALUE]).toFixed(0);
+                }
+            }
+        }
+        if (node[JV.PROP_PREFIX] && rst[JV.PROP_VALUE] != null && rst[JV.PROP_VALUE] != "") {
+            rst[JV.PROP_VALUE] = node[JV.PROP_PREFIX] + rst[JV.PROP_VALUE];
+        }
+        if (node[JV.PROP_SUFFIX] && rst[JV.PROP_VALUE] != null && rst[JV.PROP_VALUE] != "") {
+            rst[JV.PROP_VALUE] = rst[JV.PROP_VALUE] + node[JV.PROP_SUFFIX];
+        }
+        return rst;
+    }
+}
+
+module.exports = JpcCommonOutputHelper;

+ 189 - 0
protect/models/rpt_component/helper/Jpc_Helper_CrossTab.js

@@ -0,0 +1,189 @@
+var JV = require('../Jpc_ValueDefine');
+var JpcCommonHelper = require('./Jpc_Helper_Common');
+
+var JpcCrossTabHelper = {
+    getColIDX: function(cl, val) {
+        var rst = -1;
+        for (var i = 0; i < cl.length; i++) {
+            var ca = cl[i];
+            for (var j = 0; j < ca.length; j++) {
+                if (ca[j] == val) {
+                    rst = i;
+                    break;
+                }
+            }
+            if (rst != -1) {
+                break;
+            }
+        }
+        return rst;
+    },
+    pushToSeg: function(segArr, dataSeq, segIdx, sIdx, eIdx) {
+        var arrIdx = [];
+        for (var k = sIdx; k < eIdx; k++) {
+            arrIdx.push(dataSeq[segIdx][k]);
+        }
+        segArr.push(arrIdx);
+    },
+    sortFieldValue: function(sIDX, eIDX, sortOrder, dataField, dataValSeq) {
+        var tmpSeq = [];
+        if ((sortOrder) && (sortOrder != JV.TAB_FIELD_PROP_SORT_VAL_NOSORT)) {
+            if (sIDX >= 0 && eIDX >= sIDX && dataValSeq.length > eIDX) {
+                var reversed = 1;
+                if (sortOrder === JV.TAB_FIELD_PROP_SORT_VAL_DESC) {
+                    reversed = -1;
+                }
+                for (var i = sIDX; i <= eIDX; i++) {
+                    tmpSeq.push(dataValSeq[i]);
+                }
+                tmpSeq.sort(function(idx1, idx2) {
+                    var rst = 0;
+                    if (isNaN(parseFloat(dataField[idx1])) || isNaN(parseFloat(dataField[idx1]))) {
+                        if (dataField[idx1] > dataField[idx2]) {
+                            rst = reversed;
+                        } else if (dataField[idx1] < dataField[idx2]) {
+                            rst = -reversed;
+                        }
+                    } else {
+                        if ((1.0 * dataField[idx1]) > (1.0 * dataField[idx2])) {
+                            rst = reversed;
+                        } else if ((1.0 * dataField[idx1]) < (1.0 * dataField[idx2])) {
+                            rst = -reversed;
+                        }
+                    }
+                    return rst;
+                });
+            }
+        }
+        if (tmpSeq.length > 0) {
+            for (var i = sIDX; i <= eIDX; i++) {
+                dataValSeq[i] = tmpSeq[i - sIDX];
+            }
+        }
+        return tmpSeq;
+    },
+    checkIfEqual: function(dataFields, seq1, seq2) {
+        var rst = true;
+        for (var i = 0; i < dataFields.length; i++) {
+            if ((dataFields[i][seq1] !== dataFields[i][seq2])) {
+                rst = false;
+                break;
+            }
+        }
+        return rst;
+    },
+    sortTabFields: function(tabFields, fieldSeqs, data_details, dataSeq) {
+        var me = this;
+        var sIDX = 0, eIDX = -1, isFirstSort = true;
+        for (var i = 0; i < tabFields.length; i++) {
+            var tabField = tabFields[i];
+            if (tabField[JV.TAB_FIELD_PROP_SORT] != JV.TAB_FIELD_PROP_SORT_VAL_NOSORT) {
+                if (isFirstSort) {
+                    isFirstSort = false;
+                    //first field, should sort all data items
+                    for (var j = 0; j < dataSeq.length; j++) {
+                        sIDX = 0;
+                        eIDX = dataSeq[j].length - 1;
+                        //sort the field value here
+                        me.sortFieldValue(sIDX, eIDX, tabField[JV.TAB_FIELD_PROP_SORT],data_details[fieldSeqs[i]], dataSeq[j]);
+                    }
+                } else {
+                    //then sort the rest fields one by one
+                    for (var j = 0; j < dataSeq.length; j++) {
+                        var chkFields = [];
+                        for (var k = 0; k < i; k++) {
+                            chkFields.push(data_details[fieldSeqs[k]]);
+                        }
+                        sIDX = 0, eIDX = -1;
+                        for (var m = 1; m < dataSeq[j].length; m++) {
+                            if (!(me.checkIfEqual(chkFields, dataSeq[j][m - 1], dataSeq[j][m]))) {
+                                eIDX = m - 1;
+                            } else if (m == dataSeq[j].length - 1) {
+                                eIDX = m;
+                            };
+                            if (eIDX >= sIDX) {
+                                if (eIDX != sIDX) {
+                                    me.sortFieldValue(sIDX, eIDX, tabField[JV.TAB_FIELD_PROP_SORT],data_details[fieldSeqs[i]], dataSeq[j]);
+                                }
+                                sIDX = m;
+                                eIDX = m - 1; //for protection purpose
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    },
+    getMaxTabCntPerPage: function(bands, rptTpl, tabNodeName, tabMeasurePropName, measureForCal) {
+        var rst = 1;
+        if (rptTpl[JV.NODE_CROSS_INFO][tabNodeName]) {
+            var tab = rptTpl[JV.NODE_CROSS_INFO][tabNodeName];
+            var maxFieldMeasure = 1.0;
+            if (JV.CAL_TYPE_ABSTRACT == JpcCommonHelper.getPosCalculationType(tab[JV.PROP_CALCULATION])) {
+                var unitFactor = JpcCommonHelper.getUnitFactor(rptTpl);
+                maxFieldMeasure = 1.0 * rptTpl[JV.NODE_CROSS_INFO][tabNodeName][tabMeasurePropName] * unitFactor;
+            } else {
+                maxFieldMeasure = measureForCal * rptTpl[JV.NODE_CROSS_INFO][tabNodeName][tabMeasurePropName] / JV.HUNDRED_PERCENT;
+            }
+            rst = Math.floor(measureForCal / maxFieldMeasure);
+        }
+        return rst;
+    },
+    getMaxRowsPerPage: function(bands, rptTpl) {
+        var me = this, rst = 1;
+        var band = bands[rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_ROW][JV.PROP_BAND_NAME]];
+        if (band) {
+            rst =  me.getMaxTabCntPerPage(bands, rptTpl, JV.NODE_CROSS_ROW, JV.PROP_CMN_HEIGHT, band.Bottom - band.Top);
+        }
+        return rst;
+    },
+    getMaxColsPerPage: function(bands, rptTpl) {
+        var me = this, rst = 1;
+        var band = bands[rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_COL][JV.PROP_BAND_NAME]];
+        if (band) {
+            rst =  me.getMaxTabCntPerPage(bands, rptTpl, JV.NODE_CROSS_COL, JV.PROP_CMN_WIDTH, band.Right - band.Left);
+        }
+        return rst;
+    },
+    chkTabEnd: function(tabType, rptTpl, bands, sortedSequence, segIdx, preRec, nextRec) {
+        var me = this, rst = true;
+        var remainAmt = preRec + nextRec - sortedSequence[segIdx].length;
+        rst = me.hasEnoughSpace(tabType, rptTpl, bands, remainAmt);
+        return rst;
+    },
+    hasEnoughSpace: function (tabType, rptTpl, bands, remainAmt) {
+        if (remainAmt < 0) return false;
+        var rst = true, measurement = 1.0, douDiffForCompare = 0.00001;
+        var unitFactor = JpcCommonHelper.getUnitFactor(rptTpl);
+        var band = null;
+        if (rptTpl[JV.NODE_CROSS_INFO][tabType]) {
+            band = bands[rptTpl[JV.NODE_CROSS_INFO][tabType][JV.PROP_BAND_NAME]];
+        }
+        if (band != null && band != undefined) {
+            if (tabType === JV.NODE_CROSS_ROW_SUM || tabType === JV.NODE_CROSS_ROW_EXT) {
+                measurement = 1.0 * rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_ROW][JV.PROP_CMN_HEIGHT] * unitFactor;
+                var spareHeight = measurement * remainAmt;
+                var douH = 1.0 * (band.Bottom - band.Top);
+                rst = (spareHeight >= douH) || (spareHeight - douH <= douDiffForCompare);
+            } else if (tabType === JV.NODE_CROSS_COL_SUM) {
+                measurement = 1.0 * rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_COL][JV.PROP_CMN_WIDTH] * unitFactor;
+                var spareWidth = measurement * remainAmt;
+                var douW = 1.0 * (band.Right - band.Left);
+                rst = (spareWidth >= douW) || (spareWidth - douW <= douDiffForCompare);
+            }
+        }
+        return rst;
+    },
+    initialPageStatus: function (pageStatus) {
+        pageStatus[JV.STATUS_NORMAL] = true;
+        pageStatus[JV.STATUS_REPORT_START] = false;
+        pageStatus[JV.STATUS_REPORT_END] = false;
+        pageStatus[JV.STATUS_SEGMENT_START] = false;
+        pageStatus[JV.STATUS_SEGMENT_END] = false;
+        pageStatus[JV.STATUS_GROUP] = false;
+        pageStatus[JV.STATUS_CROSS_ROW_END] = false;
+        pageStatus[JV.STATUS_CROSS_COL_END] = false;
+    }
+};
+
+module.exports = JpcCrossTabHelper;

+ 58 - 0
protect/models/rpt_component/helper/Jpc_Helper_Discrete.js

@@ -0,0 +1,58 @@
+var JV = require('../Jpc_ValueDefine');
+var JE = require('../Jpc_RTE');
+var JpcTextHelper = require('./Jpc_Helper_Text');
+var JpcCommonOutputHelper = require('./Jpc_Helper_CommonOutput');
+var JpcAreaHelper = require('./Jpc_Helper_Area');
+
+var JpcDiscreteHelper = {
+    outputDiscreteInfo: function (discreteArray, bands, dataObj, unitFactor, pageStatus, segIdx, multiCols, multiColIdx, $CURRENT_RPT) {
+        var rst = [];
+        if (discreteArray && dataObj) {
+            for (var i = 0; i < discreteArray.length; i++) {
+                var band = bands[discreteArray[i][JV.PROP_BAND_NAME]];
+                if (band && pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]] == true) {
+                    if (discreteArray[i][JV.PROP_TEXT]) {
+                        rst.push(JpcTextHelper.outputText(discreteArray[i][JV.PROP_TEXT], band, unitFactor, 1, 0, 1, 0, multiCols, multiColIdx));
+                    }
+                    if (discreteArray[i][JV.PROP_TEXTS]) {
+                        for (var j = 0; j < discreteArray[i][JV.PROP_TEXTS].length; j++) {
+                            rst.push(JpcTextHelper.outputText(discreteArray[i][JV.PROP_TEXTS][j], band, unitFactor, 1, 0, 1, 0, multiCols, multiColIdx));
+                        }
+                    }
+                    if (discreteArray[i][JV.PROP_DISCRETE_FIELDS]) {
+                        for (var j = 0; j < discreteArray[i][JV.PROP_DISCRETE_FIELDS].length; j++) {
+                            var df = discreteArray[i][JV.PROP_DISCRETE_FIELDS][j];
+                            var value = "";
+                            if (df[JV.PROP_FIELD_ID]) {
+                                var field = JE.F(df[JV.PROP_FIELD_ID], $CURRENT_RPT);
+                                if (field.DataSeq != JV.BLANK_FIELD_INDEX) {
+                                    var data = dataObj[field.DataNodeName][field.DataSeq];
+                                    if (data && data.length > 0) {
+                                        if (data.length > segIdx) {
+                                            value = data[segIdx];
+                                        } else {
+                                            value = data[0];
+                                        }
+                                    }
+                                } else {
+                                    if (field[JV.PROP_AD_HOC_DATA] && field[JV.PROP_AD_HOC_DATA].length > 0) value = field[JV.PROP_AD_HOC_DATA][0]
+                                    else value = "";
+                                }
+                            } else if (df[JV.PROP_PARAM_ID]) {
+                                var param = JE.P(df[JV.PROP_PARAM_ID], $CURRENT_RPT);
+                                value = param[JV.PROP_DFT_VALUE];
+                            }
+                            var item = JpcCommonOutputHelper.createCommonOutputWithoutDecorate(df, value, null);
+                            //position
+                            item[JV.PROP_AREA] = JpcAreaHelper.outputArea(df[JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, multiCols, multiColIdx, false, false);
+                            rst.push(item);
+                        }
+                    }
+                }
+            }
+        }
+        return rst;
+    }
+}
+
+module.exports = JpcDiscreteHelper;

+ 44 - 0
protect/models/rpt_component/helper/Jpc_Helper_Field.js

@@ -0,0 +1,44 @@
+var JV = require('../Jpc_ValueDefine');
+
+var JpcFieldHelper = {
+    getValue: function(dataField, valueIdx) {
+        var rst = "";
+        if (dataField && (dataField.length > valueIdx) && (valueIdx >= 0)) {
+            rst = dataField[valueIdx];
+        }
+        return rst;
+    },
+    decorateValue: function (cell, controls) {
+        if (controls) {
+            var val = cell[JV.PROP_VALUE];
+            var showZero = controls[cell[JV.PROP_CONTROL]][JV.PROP_SHOW_ZERO];
+            if (showZero && showZero == 'F' ) {
+                if (0.0 == 1.0 * (0 + val)) {
+                    cell[JV.PROP_VALUE] = "";
+                }
+            }
+        }
+    },
+    findAndPutDataFieldIdx: function (rptTpl, tab_fields, rstFields, rstFieldsIdx) {
+        if (tab_fields) {
+            var detail_fields = rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS];
+            for (var i = 0; i < tab_fields.length; i++) {
+                var isFounded = false;
+                for (var j = 0; j < detail_fields.length; j++) {
+                    if (tab_fields[i]["FieldID"] == detail_fields[j]["ID"]) {
+                        isFounded = true;
+                        if (rstFields) rstFields.push(tab_fields[i]);
+                        if (rstFieldsIdx) rstFieldsIdx.push(j);
+                        break;
+                    }
+                }
+                if (!isFounded) {
+                    if (rstFields) rstFields.push(tab_fields[i]);
+                    if (rstFieldsIdx) rstFieldsIdx.push(JV.BLANK_FIELD_INDEX);
+                }
+            }
+        }
+    }
+};
+
+module.exports = JpcFieldHelper;

+ 43 - 0
protect/models/rpt_component/helper/Jpc_Helper_FlowTab.js

@@ -0,0 +1,43 @@
+var JV = require('../Jpc_ValueDefine');
+var JpcCommonHelper = require('./Jpc_Helper_Common');
+
+var JpcFlowTabHelper = {
+    getMaxRowsPerPage: function(bands, rptTpl) {
+        var me = this, rst = 1;
+        var tab = rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_CONTENT];
+        var band = bands[tab[JV.PROP_BAND_NAME]];
+        if (band) {
+            var maxFieldMeasure = 1.0;
+            if (JV.CAL_TYPE_ABSTRACT == JpcCommonHelper.getPosCalculationType(tab[JV.PROP_CALCULATION])) {
+                var unitFactor = JpcCommonHelper.getUnitFactor(rptTpl);
+                maxFieldMeasure = 1.0 * rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_CONTENT][JV.PROP_CMN_HEIGHT] * unitFactor;
+            } else {
+                maxFieldMeasure = (band.Bottom - band.Top) * rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_CONTENT][JV.PROP_CMN_HEIGHT] / JV.HUNDRED_PERCENT;
+            }
+            rst = Math.floor((band.Bottom - band.Top) / maxFieldMeasure);
+        }
+        return rst;
+    },
+    chkSegEnd: function (bands, rptTpl, sortedSequence, segIdx, preRec, nextRec) {
+        var me = this, rst = true;
+        var remainAmt = preRec + nextRec - sortedSequence[segIdx].length;
+        rst = me.hasEnoughSpace(rptTpl, bands, remainAmt);
+        return rst;
+    },
+    hasEnoughSpace: function (rptTpl, bands, remainAmt) {
+        if (remainAmt < 0) return false;
+        var rst = true, measurement = 1.0, douDiffForCompare = 0.00001;
+        var unitFactor = JpcCommonHelper.getUnitFactor(rptTpl);
+        var tab = rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_CONTENT];
+        var band = bands[tab[JV.PROP_BAND_NAME]];
+        if (band != null && band != undefined) {
+            measurement = 1.0 * tab[JV.PROP_CMN_HEIGHT] * unitFactor;
+            var spareHeight = measurement * remainAmt;
+            var douH = 1.0 * (band.Bottom - band.Top);
+            rst = (spareHeight >= douH) || (spareHeight - douH <= douDiffForCompare);
+        }
+        return rst;
+    }
+};
+
+module.exports = JpcFlowTabHelper;

+ 14 - 0
protect/models/rpt_component/helper/Jpc_Helper_Text.js

@@ -0,0 +1,14 @@
+var JV = require('../Jpc_ValueDefine');
+var JpcCommonOutputHelper = require('./Jpc_Helper_CommonOutput');
+var JpcAreaHelper = require('./Jpc_Helper_Area');
+
+var JpcTextHelper = {
+    outputText: function (textNode, band, unitFactor, rows, rowIdx, cols, colIdx, multiCols, multiColIdx) {
+        var rst = JpcCommonOutputHelper.createCommonOutput(textNode, textNode[JV.PROP_LABEL], null);
+        //position
+        rst[JV.PROP_AREA] = JpcAreaHelper.outputArea(textNode[JV.PROP_AREA], band, unitFactor, rows, rowIdx, cols, colIdx, multiCols, multiColIdx, false, false);
+        return rst;
+    }
+};
+
+module.exports = JpcTextHelper;

+ 42 - 0
protect/models/rpt_control.js

@@ -0,0 +1,42 @@
+/**
+ * Created by Tony on 2016/12/23.
+ */
+var smartcostdb = require('./smartcostdb');
+var Schema = smartcostdb.mongoose.Schema;
+var CtrlSchema = new Schema({
+    "ID" : String,
+    "Shrink" : String,
+    "ShowZero" : String,
+    "Horizon" : String,
+    "Vertical" : String,
+    "Wrap" : String
+});
+
+var Control = smartcostdb.mongoose.model("com_ctrls", CtrlSchema);
+
+var CtrlDAO = function(){};
+
+//根据id
+CtrlDAO.prototype.get = function(id, callback){
+    Control.find({ID: id}, function(err, templates){
+        if(templates.length){
+            callback(false, templates[0]);
+        }
+        else{
+            callback('查找不到报表模板!');
+        }
+    })
+}
+
+CtrlDAO.prototype.getAll = function(id, callback){
+    Control.find({}, function(err, templates){
+        if(templates.length){
+            callback(false, templates);
+        }
+        else{
+            callback('查找不到报表模板!');
+        }
+    })
+}
+
+module.exports = new CtrlDAO();

+ 45 - 0
protect/models/rpt_font.js

@@ -0,0 +1,45 @@
+/**
+ * Created by Tony on 2016/12/23.
+ */
+var smartcostdb = require('./smartcostdb');
+var Schema = smartcostdb.mongoose.Schema;
+var FontSchema = new Schema({
+    "ID" : String,
+    "Name" : String,
+    "FontHeight" : String,
+    "FontColor" : String,
+    "FontBold" : String,
+    "FontItalic" : String,
+    "FontUnderline" : String,
+    "FontStrikeOut" : String,
+    "FontAngle" : String
+});
+
+var Font = smartcostdb.mongoose.model("com_fonts", FontSchema);
+
+var FontDAO = function(){};
+
+//根据id
+FontDAO.prototype.get = function(id, callback){
+    Font.find({ID: id}, function(err, templates){
+        if(templates.length){
+            callback(false, templates[0]);
+        }
+        else{
+            callback('查找不到报表模板!');
+        }
+    })
+}
+
+FontDAO.prototype.getAll = function(id, callback){
+    Font.find({}, function(err, templates){
+        if(templates.length){
+            callback(false, templates);
+        }
+        else{
+            callback('查找不到报表模板!');
+        }
+    })
+}
+
+module.exports = new FontDAO();

+ 38 - 0
protect/models/rpt_style.js

@@ -0,0 +1,38 @@
+/**
+ * Created by Tony on 2016/12/23.
+ */
+var smartcostdb = require('./smartcostdb');
+var Schema = smartcostdb.mongoose.Schema;
+var StyleSchema = new Schema({
+    "ID" : String,
+    "border_style" : Array
+});
+
+var Style = smartcostdb.mongoose.model("com_styles", StyleSchema);
+
+var StyleDAO = function(){};
+
+//根据id
+StyleDAO.prototype.get = function(id, callback){
+    Style.find({ID: id}, function(err, templates){
+        if(templates.length){
+            callback(false, templates[0]);
+        }
+        else{
+            callback('查找不到报表模板!');
+        }
+    })
+}
+
+StyleDAO.prototype.getAll = function(id, callback){
+    Style.find({}, function(err, templates){
+        if(templates.length){
+            callback(false, templates);
+        }
+        else{
+            callback('查找不到报表模板!');
+        }
+    })
+}
+
+module.exports = new StyleDAO();

+ 31 - 0
protect/models/rpt_temp_data.js

@@ -0,0 +1,31 @@
+/**
+ * Created by Tony on 2016/12/28.
+ */
+var smartcostdb = require('./smartcostdb');
+var Schema = smartcostdb.mongoose.Schema;
+var RptTemplateDataSchema = new Schema({
+    "Data_Key": String,
+    "discrete_data": Array,
+    "master_data": Array,
+    "detail_data": Array
+});
+
+var TemplateData = smartcostdb.mongoose.model("temp_tpl_datas", RptTemplateDataSchema);
+
+var RplTplDataDAO = function(){};
+
+//根据id获取临时数据
+RplTplDataDAO.prototype.get = function(tpl_id, callback){
+    //TemplateData.find({"Data_Key": tpl_id}, function(err, templates){
+    //TemplateData.find({}, function(err, templates){
+    TemplateData.find({"Data_Key": tpl_id}, function(err, templates){
+        if(templates.length){
+            callback(false, templates[0]);
+        }
+        else{
+            callback('查找不到模板临时数据!');
+        }
+    })
+}
+
+module.exports = new RplTplDataDAO();

+ 35 - 0
protect/models/rpt_template.js

@@ -0,0 +1,35 @@
+/**
+ * Created by Tony on 2016/12/23.
+ */
+var smartcostdb = require('./smartcostdb');
+var Schema = smartcostdb.mongoose.Schema;
+var RptTemplateSchema = new Schema({
+    "GROUP_KEY": String,
+    "ID_KEY": String,
+    "主信息": Schema.Types.Mixed,
+    "指标_数据_映射": Schema.Types.Mixed,
+    "布局框_集合": Array,
+    "流水式表_信息": Schema.Types.Mixed,
+    "交叉表_信息": Schema.Types.Mixed,
+    "无映射离散指标_集合": Schema.Types.Mixed,
+    "离散参数_集合": Schema.Types.Mixed,
+    "计算式_集合": Array
+});
+
+var Template = smartcostdb.mongoose.model("rpt_templates", RptTemplateSchema);
+
+var RplTplDAO = function(){};
+
+//根据id获取试卷
+RplTplDAO.prototype.get = function(grpId, id, callback){
+    Template.find({GROUP_KEY: grpId, ID_KEY: id}, function(err, templates){
+        if(templates.length){
+            callback(false, templates[0]);
+        }
+        else{
+            callback('查找不到报表模板!');
+        }
+    })
+}
+
+module.exports = new RplTplDAO();

+ 6 - 0
protect/models/smartcostdb.js

@@ -0,0 +1,6 @@
+/**
+ * Created by Tony on 2016/12/23.
+ */
+var mg = require('mongoose');
+mg.connect('mongodb://localhost/Reports');
+exports.mongoose = mg;

+ 47 - 0
server.js

@@ -0,0 +1,47 @@
+var express = require('express');
+var app = express();
+
+var _rootDir = __dirname;
+var protectDir = _rootDir + '/protect/';
+
+app.use(express.static(_rootDir));
+
+var bodyParser = require('body-parser');
+app.use(bodyParser.urlencoded({extended: false}));
+app.use(bodyParser.json());
+
+var reportController = require(protectDir + 'controllers/reportController');
+var cacheController = require(protectDir + 'controllers/cacheController');
+
+//注册路由
+app.get('/', function(req, res){
+	res.sendFile(_rootDir+'/src/RptHome.html');
+});
+
+app.get('/schome', function(req, res){
+	res.sendFile(_rootDir+'/src/SmartCostHome.html');
+});
+
+app.post('/report/', function(req, res, next){
+	console.log(req.body['tpl_id']);
+	res.setHeader("Access-Control-Allow-Origin", "*");
+	res.json({"success":"1", "tpl_id": req.body['tpl_id'], "pageSize": req.body['pageSize']});
+});
+
+var apiRouter = express.Router();
+
+apiRouter.post('/getReport', reportController.getReportAllPages);
+apiRouter.post('/setDftCache', cacheController.setReportDefaultCache);
+
+app.use('/api', apiRouter);
+
+
+app.use(function(req, res, next) {
+	res.status(404).sendFile(_rootDir+'/src/404.html');
+});
+app.use(function(err, req, res, next) {
+	console.error(err.stack);
+	res.status(500).send('500 Error');
+});
+
+app.listen(3010);

+ 12 - 0
src/404.html

@@ -0,0 +1,12 @@
+<!doctype html>
+<html ng-app="Report">
+<head>
+    <meta charset="utf-8">
+    <title>404 Error</title>
+</head>
+
+<body>
+    404 Error!
+</body>
+
+</html>

+ 156 - 0
src/RptHome.html

@@ -0,0 +1,156 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+    <title>Report Demo!</title>
+</head>
+<body>
+    <!--
+    <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
+    -->
+
+    <script src="/src/lib/jquery-1.9.1.min.js"></script>
+    <script type="text/javascript" src="/src/jpc_report/rpt_component/Jpc_Output_ValueDefine.js"></script>
+    <script type="text/javascript" src="/src/jpc_report/rpt_component/Jpc_Output.js"></script>
+    <table>
+        <tr>
+            <td width="5"></td>
+            <td>
+                <select name="select1" id="select_k1" onchange="ajaxCall()">
+                    <option value="SC;07_1">07-1表</option>
+                    <option value="SC;08_2">08-2表</option>
+                    <option value="MEASURE;M_ZB03_QDZF_09">计量-清单支付09表</option>
+                </select>
+                <select name="select2" id="select_k2" onchange="ajaxCall()">
+                    <option value="A4">A4</option>
+                    <option value="A3">A3</option>
+                </select>
+            </td>
+            <td>
+                <input type="button" value="显示报表" onclick="ajaxCall()"/>
+                <input type="button" value="< 前一页" onclick="showPage(-1)"/>
+                <input type="button" value="后一页 >" onclick="showPage(1)"/>
+            </td>
+        </tr>
+    </table>
+    <canvas id="myCanvas" width="2000" height="1280">
+    </canvas>
+</body>
+<style>
+    body {
+        margin: 0px;
+        padding: 0px;
+    }
+    #myCanvas {
+        border: 0px solid #9C9898;
+    }
+</style>
+<script>
+    var currentPage = 1;
+    var pageRst = null;
+    var currentRptTpl = null;
+    var maxPages = 20;
+    var defProperties = null;
+    var rpt_grp = null;
+    var rpt_id = null;
+    var rpt_size = null;
+
+    window.onload = function (){
+        $.ajax({
+            type:"POST",
+            url: 'http://localhost:3010/api/setDftCache',
+            dataType: 'json',
+            cache: false,
+            timeout: 10000,
+            success: function(data){
+                defProperties = data;
+            },
+            error: function(jqXHR, textStatus, errorThrown){
+                //alert('error ' + textStatus + " " + errorThrown);
+                //or create local default cache...
+            }
+        });
+
+    }
+    function getScreenDPI() {
+        var me = this, arrDPI = [];
+        if (window.screen.deviceXDPI != undefined) {
+            arrDPI.push(window.screen.deviceXDPI);
+            arrDPI.push(window.screen.deviceYDPI);
+        } else {
+            var tmpNode = document.createElement("DIV");
+            tmpNode.style.cssText = "width:1in;height:1in;position:absolute;left:0px;top:0px;z-index:99;visibility:hidden";
+            document.body.appendChild(tmpNode);
+            arrDPI.push(parseInt(tmpNode.offsetWidth));
+            arrDPI.push(parseInt(tmpNode.offsetHeight));
+            tmpNode.parentNode.removeChild(tmpNode);
+        }
+        return arrDPI;
+    }
+
+    function setupReport() {
+        var rst = false;
+        var rpt = document.getElementById("select_k1");
+        var size = document.getElementById("select_k2");
+        if (rpt.selectedIndex >= 0 && size.selectedIndex >= 0) {
+            var strs = rpt.options[rpt.selectedIndex].value.split(';');
+            rpt_grp = strs[0];
+            rpt_id = strs[1];
+            rpt_size = size.options[size.selectedIndex].value;
+            rst = true;
+        }
+        return rst;
+    }
+
+    function showPage(pageStep, cv) {
+        if (currentPage + pageStep >= 1 && currentPage + pageStep <= maxPages) {
+            currentPage = currentPage + pageStep;
+            var canvas = null;
+            if (cv) {
+                canvas = cv;
+            } else canvas = document.getElementById("myCanvas");
+            JpcCanvasOutput.cleanCanvas(canvas);
+            JpcCanvasOutput.drawPageBorder(currentRptTpl, canvas, getScreenDPI());
+            JpcCanvasOutput.drawToCanvas(pageRst, canvas, currentPage);
+        }
+    }
+
+    function ajaxCall() {
+        if (setupReport()) {
+            var canvas = document.getElementById("myCanvas");
+            canvas.style.cursor = "wait";
+            $.ajax({
+                type:"POST",
+                url: 'http://localhost:3010/api/getReport',
+                //url: 'http://www.smart_cost_tony.cn:3010/api/getReport',
+                data: {"grp_id": rpt_grp, "tpl_id": rpt_id, "pageSize": rpt_size},
+                dataType: 'json',
+                cache: false,
+                timeout: 15000,
+                success: function(result){
+                    canvas.style.cursor = "default";
+                    currentPage = 1;
+                    pageRst = result.data;
+                    if (pageRst) {
+                        maxPages = pageRst.items.length;
+                        currentRptTpl = pageRst;
+                        if (rpt_size === "A4") {
+                            canvas.width = 1200;
+                            canvas.height = 900;
+                        } else if (rpt_size === "A3") {
+                            canvas.width = 1880;
+                            canvas.height = 1200;
+                        }
+                        showPage(0, canvas);
+                    }
+                },
+                error: function(jqXHR, textStatus, errorThrown){
+                    canvas.style.cursor = "default";
+                    alert('error ' + textStatus + " " + errorThrown);
+                }
+            });
+        }
+    }
+</script>
+
+</html>

+ 19 - 0
src/SmartCostHome.html

@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head lang="en">
+    <meta charset="UTF-8">
+    <title></title>
+</head>
+
+<script type="text/javascript" src="/src/ext/ext-all.js"></script>
+<script type="text/javascript" src="/src/ext/packages/ext-locale/build/ext-locale-zh_CN.js"></script>
+<link href="/src/ext/packages/ext-theme-crisp/build/resources/ext-theme-crisp-all.css" rel="stylesheet" />
+
+<body>
+    <script type="text/javascript">
+        Ext.onReady(function () {
+            Ext.MessageBox.alert("提示", "Hello World");
+        });
+    </script>
+</body>
+</html>

文件差异内容过多而无法显示
+ 150550 - 0
src/ext/ext-all-debug.js


文件差异内容过多而无法显示
+ 22 - 0
src/ext/ext-all.js


文件差异内容过多而无法显示
+ 26442 - 0
src/ext/ext.js


+ 1 - 0
src/ext/packages/ext-aria/build/config.rb

@@ -0,0 +1 @@
+Compass.add_project_configuration('../sass/config.rb')

+ 764 - 0
src/ext/packages/ext-aria/build/ext-aria-all-debug.scss

@@ -0,0 +1,764 @@
+$image-search-path: '/home/teamcity/buildAgent/work/3cebfbfc7c03d949/sencha/ext/packages/ext-aria/build/resources' !default;
+$theme-name:  'ext-aria' !default;
+$include-ext-abstractmanager: false;
+$include-ext-action: false;
+$include-ext-ajax: false;
+$include-ext-animationqueue: false;
+$include-ext-component: false;
+$include-ext-componentloader: false;
+$include-ext-componentmanager: false;
+$include-ext-componentquery: false;
+$include-ext-editor: false;
+$include-ext-elementloader: false;
+$include-ext-eventmanager: false;
+$include-ext-evented: false;
+$include-ext-focusmanager: false;
+$include-ext-globalevents: false;
+$include-ext-img: false;
+$include-ext-loadmask: false;
+$include-ext-mixin: false;
+$include-ext-progressbar: false;
+$include-ext-progressbarwidget: false;
+$include-ext-taskqueue: false;
+$include-ext-template: false;
+$include-ext-widget: false;
+$include-ext-xtemplate: false;
+$include-ext-zindexmanager: false;
+$include-ext-app-application: false;
+$include-ext-app-basecontroller: false;
+$include-ext-app-controller: false;
+$include-ext-app-eventbus: false;
+$include-ext-app-eventdomain: false;
+$include-ext-app-profile: false;
+$include-ext-app-util: false;
+$include-ext-app-viewcontroller: false;
+$include-ext-app-viewmodel: false;
+$include-ext-app-bind-abstractstub: false;
+$include-ext-app-bind-basebinding: false;
+$include-ext-app-bind-binding: false;
+$include-ext-app-bind-formula: false;
+$include-ext-app-bind-linkstub: false;
+$include-ext-app-bind-multi: false;
+$include-ext-app-bind-rootstub: false;
+$include-ext-app-bind-stub: false;
+$include-ext-app-bind-template: false;
+$include-ext-app-bind-templatebinding: false;
+$include-ext-app-bindinspector-componentdetail: false;
+$include-ext-app-bindinspector-componentlist: false;
+$include-ext-app-bindinspector-container: false;
+$include-ext-app-bindinspector-environment: false;
+$include-ext-app-bindinspector-inspector: false;
+$include-ext-app-bindinspector-util: false;
+$include-ext-app-bindinspector-viewmodeldetail: false;
+$include-ext-app-bindinspector-noconflict-basemodel: false;
+$include-ext-app-domain-component: false;
+$include-ext-app-domain-controller: false;
+$include-ext-app-domain-direct: false;
+$include-ext-app-domain-global: false;
+$include-ext-app-domain-store: false;
+$include-ext-app-domain-view: false;
+$include-ext-app-route-queue: false;
+$include-ext-app-route-route: false;
+$include-ext-app-route-router: false;
+$include-ext-aria-component: true;
+$include-ext-aria-focusmanager: true;
+$include-ext-aria-img: true;
+$include-ext-aria-button-button: true;
+$include-ext-aria-button-cycle: true;
+$include-ext-aria-button-split: true;
+$include-ext-aria-container-viewport: true;
+$include-ext-aria-form-checkboxgroup: true;
+$include-ext-aria-form-fieldcontainer: true;
+$include-ext-aria-form-fieldset: true;
+$include-ext-aria-form-radiogroup: true;
+$include-ext-aria-form-field-base: true;
+$include-ext-aria-form-field-checkbox: true;
+$include-ext-aria-form-field-combobox: true;
+$include-ext-aria-form-field-date: true;
+$include-ext-aria-form-field-display: true;
+$include-ext-aria-form-field-number: true;
+$include-ext-aria-form-field-picker: true;
+$include-ext-aria-form-field-text: true;
+$include-ext-aria-form-field-textarea: true;
+$include-ext-aria-form-field-time: true;
+$include-ext-aria-grid-navigationmodel: true;
+$include-ext-aria-grid-column-column: true;
+$include-ext-aria-grid-header-container: true;
+$include-ext-aria-menu-checkitem: true;
+$include-ext-aria-menu-item: true;
+$include-ext-aria-panel-panel: true;
+$include-ext-aria-panel-tool: true;
+$include-ext-aria-picker-color: true;
+$include-ext-aria-slider-multi: true;
+$include-ext-aria-slider-thumb: true;
+$include-ext-aria-slider-tip: true;
+$include-ext-aria-tab-bar: true;
+$include-ext-aria-tab-panel: true;
+$include-ext-aria-tab-tab: true;
+$include-ext-aria-tip-quicktip: true;
+$include-ext-aria-ux-form-multiselect: true;
+$include-ext-aria-view-boundlist: true;
+$include-ext-aria-view-boundlistkeynav: true;
+$include-ext-aria-view-table: true;
+$include-ext-aria-view-view: true;
+$include-ext-aria-window-messagebox: true;
+$include-ext-aria-window-toast: true;
+$include-ext-aria-window-window: true;
+$include-ext-button-button: false;
+$include-ext-button-cycle: false;
+$include-ext-button-manager: false;
+$include-ext-button-segmented: false;
+$include-ext-button-split: false;
+$include-ext-container-buttongroup: false;
+$include-ext-container-container: false;
+$include-ext-container-dockingcontainer: false;
+$include-ext-container-monitor: false;
+$include-ext-container-viewport: false;
+$include-ext-dashboard-column: false;
+$include-ext-dashboard-dashboard: false;
+$include-ext-dashboard-dropzone: false;
+$include-ext-dashboard-panel: false;
+$include-ext-dashboard-part: false;
+$include-ext-data-abstractstore: false;
+$include-ext-data-arraystore: false;
+$include-ext-data-batch: false;
+$include-ext-data-bufferedstore: false;
+$include-ext-data-chainedstore: false;
+$include-ext-data-connection: false;
+$include-ext-data-directstore: false;
+$include-ext-data-error: false;
+$include-ext-data-errorcollection: false;
+$include-ext-data-jsonp: false;
+$include-ext-data-jsonpstore: false;
+$include-ext-data-jsonstore: false;
+$include-ext-data-localstore: false;
+$include-ext-data-model: false;
+$include-ext-data-modelmanager: false;
+$include-ext-data-nodeinterface: false;
+$include-ext-data-nodestore: false;
+$include-ext-data-pagemap: false;
+$include-ext-data-proxystore: false;
+$include-ext-data-request: false;
+$include-ext-data-resultset: false;
+$include-ext-data-session: false;
+$include-ext-data-sorttypes: false;
+$include-ext-data-store: false;
+$include-ext-data-storemanager: false;
+$include-ext-data-treemodel: false;
+$include-ext-data-treestore: false;
+$include-ext-data-types: false;
+$include-ext-data-validation: false;
+$include-ext-data-xmlstore: false;
+$include-ext-data-field-boolean: false;
+$include-ext-data-field-date: false;
+$include-ext-data-field-field: false;
+$include-ext-data-field-integer: false;
+$include-ext-data-field-number: false;
+$include-ext-data-field-string: false;
+$include-ext-data-flash-binaryxhr: false;
+$include-ext-data-identifier-generator: false;
+$include-ext-data-identifier-negative: false;
+$include-ext-data-identifier-sequential: false;
+$include-ext-data-identifier-uuid: false;
+$include-ext-data-matrix-matrix: false;
+$include-ext-data-matrix-side: false;
+$include-ext-data-matrix-slice: false;
+$include-ext-data-operation-create: false;
+$include-ext-data-operation-destroy: false;
+$include-ext-data-operation-operation: false;
+$include-ext-data-operation-read: false;
+$include-ext-data-operation-update: false;
+$include-ext-data-proxy-ajax: false;
+$include-ext-data-proxy-client: false;
+$include-ext-data-proxy-direct: false;
+$include-ext-data-proxy-jsonp: false;
+$include-ext-data-proxy-localstorage: false;
+$include-ext-data-proxy-memory: false;
+$include-ext-data-proxy-proxy: false;
+$include-ext-data-proxy-rest: false;
+$include-ext-data-proxy-server: false;
+$include-ext-data-proxy-sessionstorage: false;
+$include-ext-data-proxy-webstorage: false;
+$include-ext-data-reader-array: false;
+$include-ext-data-reader-json: false;
+$include-ext-data-reader-reader: false;
+$include-ext-data-reader-xml: false;
+$include-ext-data-schema-association: false;
+$include-ext-data-schema-manytomany: false;
+$include-ext-data-schema-manytoone: false;
+$include-ext-data-schema-namer: false;
+$include-ext-data-schema-onetoone: false;
+$include-ext-data-schema-role: false;
+$include-ext-data-schema-schema: false;
+$include-ext-data-session-batchvisitor: false;
+$include-ext-data-session-changesvisitor: false;
+$include-ext-data-session-childchangesvisitor: false;
+$include-ext-data-validator-bound: false;
+$include-ext-data-validator-email: false;
+$include-ext-data-validator-exclusion: false;
+$include-ext-data-validator-format: false;
+$include-ext-data-validator-inclusion: false;
+$include-ext-data-validator-length: false;
+$include-ext-data-validator-list: false;
+$include-ext-data-validator-presence: false;
+$include-ext-data-validator-range: false;
+$include-ext-data-validator-validator: false;
+$include-ext-data-writer-json: false;
+$include-ext-data-writer-writer: false;
+$include-ext-data-writer-xml: false;
+$include-ext-dd-dd: false;
+$include-ext-dd-ddproxy: false;
+$include-ext-dd-ddtarget: false;
+$include-ext-dd-dragdrop: false;
+$include-ext-dd-dragdropmanager: false;
+$include-ext-dd-dragsource: false;
+$include-ext-dd-dragtracker: false;
+$include-ext-dd-dragzone: false;
+$include-ext-dd-droptarget: false;
+$include-ext-dd-dropzone: false;
+$include-ext-dd-registry: false;
+$include-ext-dd-scrollmanager: false;
+$include-ext-dd-statusproxy: false;
+$include-ext-direct-event: false;
+$include-ext-direct-exceptionevent: false;
+$include-ext-direct-jsonprovider: false;
+$include-ext-direct-manager: false;
+$include-ext-direct-pollingprovider: false;
+$include-ext-direct-provider: false;
+$include-ext-direct-remotingevent: false;
+$include-ext-direct-remotingmethod: false;
+$include-ext-direct-remotingprovider: false;
+$include-ext-direct-transaction: false;
+$include-ext-dom-buttonelement: false;
+$include-ext-dom-compositeelement: false;
+$include-ext-dom-compositeelementlite: false;
+$include-ext-dom-element: false;
+$include-ext-dom-elementevent: false;
+$include-ext-dom-fly: false;
+$include-ext-dom-garbagecollector: false;
+$include-ext-dom-helper: false;
+$include-ext-dom-layer: false;
+$include-ext-dom-query: false;
+$include-ext-dom-shadow: false;
+$include-ext-dom-shim: false;
+$include-ext-dom-underlay: false;
+$include-ext-dom-underlaypool: false;
+$include-ext-event-event: false;
+$include-ext-event-gesture-doubletap: false;
+$include-ext-event-gesture-drag: false;
+$include-ext-event-gesture-edgeswipe: false;
+$include-ext-event-gesture-longpress: false;
+$include-ext-event-gesture-multitouch: false;
+$include-ext-event-gesture-pinch: false;
+$include-ext-event-gesture-recognizer: false;
+$include-ext-event-gesture-rotate: false;
+$include-ext-event-gesture-singletouch: false;
+$include-ext-event-gesture-swipe: false;
+$include-ext-event-gesture-tap: false;
+$include-ext-event-publisher-dom: false;
+$include-ext-event-publisher-elementpaint: false;
+$include-ext-event-publisher-elementsize: false;
+$include-ext-event-publisher-focus: false;
+$include-ext-event-publisher-gesture: false;
+$include-ext-event-publisher-mouseenterleave: false;
+$include-ext-event-publisher-publisher: false;
+$include-ext-flash-component: false;
+$include-ext-form-basic: false;
+$include-ext-form-checkboxgroup: false;
+$include-ext-form-checkboxmanager: false;
+$include-ext-form-fieldancestor: false;
+$include-ext-form-fieldcontainer: false;
+$include-ext-form-fieldset: false;
+$include-ext-form-label: false;
+$include-ext-form-labelable: false;
+$include-ext-form-panel: false;
+$include-ext-form-radiogroup: false;
+$include-ext-form-radiomanager: false;
+$include-ext-form-action-action: false;
+$include-ext-form-action-directaction: false;
+$include-ext-form-action-directload: false;
+$include-ext-form-action-directsubmit: false;
+$include-ext-form-action-load: false;
+$include-ext-form-action-standardsubmit: false;
+$include-ext-form-action-submit: false;
+$include-ext-form-field-base: false;
+$include-ext-form-field-checkbox: false;
+$include-ext-form-field-combobox: false;
+$include-ext-form-field-date: false;
+$include-ext-form-field-display: false;
+$include-ext-form-field-field: false;
+$include-ext-form-field-file: false;
+$include-ext-form-field-filebutton: false;
+$include-ext-form-field-hidden: false;
+$include-ext-form-field-htmleditor: false;
+$include-ext-form-field-number: false;
+$include-ext-form-field-picker: false;
+$include-ext-form-field-radio: false;
+$include-ext-form-field-spinner: false;
+$include-ext-form-field-tag: false;
+$include-ext-form-field-text: false;
+$include-ext-form-field-textarea: false;
+$include-ext-form-field-time: false;
+$include-ext-form-field-trigger: false;
+$include-ext-form-field-vtypes: false;
+$include-ext-form-trigger-component: false;
+$include-ext-form-trigger-spinner: false;
+$include-ext-form-trigger-trigger: false;
+$include-ext-fx-anim: false;
+$include-ext-fx-animation: false;
+$include-ext-fx-animator: false;
+$include-ext-fx-cubicbezier: false;
+$include-ext-fx-drawpath: false;
+$include-ext-fx-easing: false;
+$include-ext-fx-manager: false;
+$include-ext-fx-propertyhandler: false;
+$include-ext-fx-queue: false;
+$include-ext-fx-runner: false;
+$include-ext-fx-state: false;
+$include-ext-fx-animation-abstract: false;
+$include-ext-fx-animation-cube: false;
+$include-ext-fx-animation-fade: false;
+$include-ext-fx-animation-fadeout: false;
+$include-ext-fx-animation-flip: false;
+$include-ext-fx-animation-pop: false;
+$include-ext-fx-animation-popout: false;
+$include-ext-fx-animation-slide: false;
+$include-ext-fx-animation-slideout: false;
+$include-ext-fx-animation-wipe: false;
+$include-ext-fx-animation-wipeout: false;
+$include-ext-fx-easing-abstract: false;
+$include-ext-fx-easing-bounce: false;
+$include-ext-fx-easing-boundmomentum: false;
+$include-ext-fx-easing-easein: false;
+$include-ext-fx-easing-easeout: false;
+$include-ext-fx-easing-easing: false;
+$include-ext-fx-easing-linear: false;
+$include-ext-fx-easing-momentum: false;
+$include-ext-fx-layout-card: false;
+$include-ext-fx-layout-card-abstract: false;
+$include-ext-fx-layout-card-cover: false;
+$include-ext-fx-layout-card-cube: false;
+$include-ext-fx-layout-card-fade: false;
+$include-ext-fx-layout-card-flip: false;
+$include-ext-fx-layout-card-pop: false;
+$include-ext-fx-layout-card-reveal: false;
+$include-ext-fx-layout-card-scroll: false;
+$include-ext-fx-layout-card-scrollcover: false;
+$include-ext-fx-layout-card-scrollreveal: false;
+$include-ext-fx-layout-card-slide: false;
+$include-ext-fx-layout-card-style: false;
+$include-ext-fx-runner-css: false;
+$include-ext-fx-runner-cssanimation: false;
+$include-ext-fx-runner-csstransition: false;
+$include-ext-fx-target-component: false;
+$include-ext-fx-target-compositeelement: false;
+$include-ext-fx-target-compositeelementcss: false;
+$include-ext-fx-target-compositesprite: false;
+$include-ext-fx-target-element: false;
+$include-ext-fx-target-elementcss: false;
+$include-ext-fx-target-sprite: false;
+$include-ext-fx-target-target: false;
+$include-ext-grid-cellcontext: false;
+$include-ext-grid-celleditor: false;
+$include-ext-grid-columncomponentlayout: false;
+$include-ext-grid-columnlayout: false;
+$include-ext-grid-columnmanager: false;
+$include-ext-grid-navigationmodel: false;
+$include-ext-grid-panel: false;
+$include-ext-grid-roweditor: false;
+$include-ext-grid-roweditorbuttons: false;
+$include-ext-grid-viewdropzone: false;
+$include-ext-grid-column-action: false;
+$include-ext-grid-column-boolean: false;
+$include-ext-grid-column-check: false;
+$include-ext-grid-column-column: false;
+$include-ext-grid-column-date: false;
+$include-ext-grid-column-number: false;
+$include-ext-grid-column-rownumberer: false;
+$include-ext-grid-column-template: false;
+$include-ext-grid-column-widget: false;
+$include-ext-grid-feature-abstractsummary: false;
+$include-ext-grid-feature-feature: false;
+$include-ext-grid-feature-groupstore: false;
+$include-ext-grid-feature-grouping: false;
+$include-ext-grid-feature-groupingsummary: false;
+$include-ext-grid-feature-rowbody: false;
+$include-ext-grid-feature-summary: false;
+$include-ext-grid-filters-filters: false;
+$include-ext-grid-filters-filter-base: false;
+$include-ext-grid-filters-filter-boolean: false;
+$include-ext-grid-filters-filter-date: false;
+$include-ext-grid-filters-filter-list: false;
+$include-ext-grid-filters-filter-number: false;
+$include-ext-grid-filters-filter-singlefilter: false;
+$include-ext-grid-filters-filter-string: false;
+$include-ext-grid-filters-filter-trifilter: false;
+$include-ext-grid-header-container: false;
+$include-ext-grid-header-dragzone: false;
+$include-ext-grid-header-dropzone: false;
+$include-ext-grid-locking-headercontainer: false;
+$include-ext-grid-locking-lockable: false;
+$include-ext-grid-locking-rowsynchronizer: false;
+$include-ext-grid-locking-view: false;
+$include-ext-grid-plugin-bufferedrenderer: false;
+$include-ext-grid-plugin-cellediting: false;
+$include-ext-grid-plugin-clipboard: false;
+$include-ext-grid-plugin-dragdrop: false;
+$include-ext-grid-plugin-editing: false;
+$include-ext-grid-plugin-headerreorderer: false;
+$include-ext-grid-plugin-headerresizer: false;
+$include-ext-grid-plugin-rowediting: false;
+$include-ext-grid-plugin-rowexpander: false;
+$include-ext-grid-property-grid: false;
+$include-ext-grid-property-headercontainer: false;
+$include-ext-grid-property-property: false;
+$include-ext-grid-property-reader: false;
+$include-ext-grid-property-store: false;
+$include-ext-grid-selection-cells: false;
+$include-ext-grid-selection-columns: false;
+$include-ext-grid-selection-rows: false;
+$include-ext-grid-selection-selection: false;
+$include-ext-grid-selection-spreadsheetmodel: false;
+$include-ext-layout-context: false;
+$include-ext-layout-contextitem: false;
+$include-ext-layout-layout: false;
+$include-ext-layout-sizemodel: false;
+$include-ext-layout-component-auto: false;
+$include-ext-layout-component-body: false;
+$include-ext-layout-component-boundlist: false;
+$include-ext-layout-component-component: false;
+$include-ext-layout-component-dock: false;
+$include-ext-layout-component-fieldset: false;
+$include-ext-layout-component-progressbar: false;
+$include-ext-layout-component-field-fieldcontainer: false;
+$include-ext-layout-component-field-htmleditor: false;
+$include-ext-layout-container-absolute: false;
+$include-ext-layout-container-accordion: false;
+$include-ext-layout-container-anchor: false;
+$include-ext-layout-container-auto: false;
+$include-ext-layout-container-border: false;
+$include-ext-layout-container-box: false;
+$include-ext-layout-container-card: false;
+$include-ext-layout-container-center: false;
+$include-ext-layout-container-checkboxgroup: false;
+$include-ext-layout-container-column: false;
+$include-ext-layout-container-columnsplitter: false;
+$include-ext-layout-container-columnsplittertracker: false;
+$include-ext-layout-container-container: false;
+$include-ext-layout-container-dashboard: false;
+$include-ext-layout-container-editor: false;
+$include-ext-layout-container-fit: false;
+$include-ext-layout-container-form: false;
+$include-ext-layout-container-hbox: false;
+$include-ext-layout-container-segmentedbutton: false;
+$include-ext-layout-container-table: false;
+$include-ext-layout-container-vbox: false;
+$include-ext-layout-container-border-region: false;
+$include-ext-layout-container-boxoverflow-menu: false;
+$include-ext-layout-container-boxoverflow-none: false;
+$include-ext-layout-container-boxoverflow-scroller: false;
+$include-ext-menu-checkitem: false;
+$include-ext-menu-colorpicker: false;
+$include-ext-menu-datepicker: false;
+$include-ext-menu-item: false;
+$include-ext-menu-manager: false;
+$include-ext-menu-menu: false;
+$include-ext-menu-separator: false;
+$include-ext-mixin-bindable: false;
+$include-ext-mixin-factoryable: false;
+$include-ext-mixin-hookable: false;
+$include-ext-mixin-identifiable: false;
+$include-ext-mixin-inheritable: false;
+$include-ext-mixin-mashup: false;
+$include-ext-mixin-observable: false;
+$include-ext-mixin-queryable: false;
+$include-ext-mixin-responsive: false;
+$include-ext-mixin-selectable: false;
+$include-ext-mixin-templatable: false;
+$include-ext-mixin-traversable: false;
+$include-ext-overrides-globalevents: false;
+$include-ext-overrides-widget: false;
+$include-ext-overrides-app-application: false;
+$include-ext-overrides-app-domain-component: false;
+$include-ext-overrides-dom-element: false;
+$include-ext-overrides-dom-helper: false;
+$include-ext-overrides-event-event: false;
+$include-ext-overrides-event-publisher-dom: false;
+$include-ext-overrides-event-publisher-gesture: false;
+$include-ext-overrides-plugin-abstract: false;
+$include-ext-overrides-util-positionable: false;
+$include-ext-panel-bar: false;
+$include-ext-panel-dd: false;
+$include-ext-panel-header: false;
+$include-ext-panel-panel: false;
+$include-ext-panel-pinnable: false;
+$include-ext-panel-proxy: false;
+$include-ext-panel-table: false;
+$include-ext-panel-title: false;
+$include-ext-panel-tool: false;
+$include-ext-perf-accumulator: false;
+$include-ext-perf-monitor: false;
+$include-ext-picker-color: false;
+$include-ext-picker-date: false;
+$include-ext-picker-month: false;
+$include-ext-picker-time: false;
+$include-ext-plugin-abstract: false;
+$include-ext-plugin-abstractclipboard: false;
+$include-ext-plugin-manager: false;
+$include-ext-plugin-responsive: false;
+$include-ext-plugin-viewport: false;
+$include-ext-resizer-bordersplitter: false;
+$include-ext-resizer-bordersplittertracker: false;
+$include-ext-resizer-handle: false;
+$include-ext-resizer-resizetracker: false;
+$include-ext-resizer-resizer: false;
+$include-ext-resizer-splitter: false;
+$include-ext-resizer-splittertracker: false;
+$include-ext-rtl-component: false;
+$include-ext-rtl-button-button: false;
+$include-ext-rtl-button-segmented: false;
+$include-ext-rtl-dd-dd: false;
+$include-ext-rtl-dom-element: false;
+$include-ext-rtl-event-event: false;
+$include-ext-rtl-form-labelable: false;
+$include-ext-rtl-form-field-file: false;
+$include-ext-rtl-form-field-filebutton: false;
+$include-ext-rtl-grid-celleditor: false;
+$include-ext-rtl-grid-columnlayout: false;
+$include-ext-rtl-grid-navigationmodel: false;
+$include-ext-rtl-grid-column-column: false;
+$include-ext-rtl-grid-feature-summary: false;
+$include-ext-rtl-grid-plugin-headerresizer: false;
+$include-ext-rtl-grid-plugin-rowediting: false;
+$include-ext-rtl-layout-contextitem: false;
+$include-ext-rtl-layout-component-dock: false;
+$include-ext-rtl-layout-container-absolute: false;
+$include-ext-rtl-layout-container-border: false;
+$include-ext-rtl-layout-container-box: false;
+$include-ext-rtl-layout-container-column: false;
+$include-ext-rtl-layout-container-hbox: false;
+$include-ext-rtl-layout-container-vbox: false;
+$include-ext-rtl-layout-container-boxoverflow-menu: false;
+$include-ext-rtl-layout-container-boxoverflow-scroller: false;
+$include-ext-rtl-panel-bar: false;
+$include-ext-rtl-panel-panel: false;
+$include-ext-rtl-panel-title: false;
+$include-ext-rtl-resizer-bordersplittertracker: false;
+$include-ext-rtl-resizer-resizetracker: false;
+$include-ext-rtl-resizer-splittertracker: false;
+$include-ext-rtl-scroll-domscroller: false;
+$include-ext-rtl-scroll-indicator: false;
+$include-ext-rtl-scroll-scroller: false;
+$include-ext-rtl-scroll-touchscroller: false;
+$include-ext-rtl-slider-multi: false;
+$include-ext-rtl-tab-bar: false;
+$include-ext-rtl-tip-quicktipmanager: false;
+$include-ext-rtl-tree-column: false;
+$include-ext-rtl-util-focusablecontainer: false;
+$include-ext-rtl-util-renderable: false;
+$include-ext-rtl-view-navigationmodel: false;
+$include-ext-rtl-view-table: false;
+$include-ext-scroll-domscroller: false;
+$include-ext-scroll-indicator: false;
+$include-ext-scroll-scroller: false;
+$include-ext-scroll-touchscroller: false;
+$include-ext-selection-cellmodel: false;
+$include-ext-selection-checkboxmodel: false;
+$include-ext-selection-dataviewmodel: false;
+$include-ext-selection-model: false;
+$include-ext-selection-rowmodel: false;
+$include-ext-selection-treemodel: false;
+$include-ext-slider-multi: false;
+$include-ext-slider-single: false;
+$include-ext-slider-thumb: false;
+$include-ext-slider-tip: false;
+$include-ext-slider-widget: false;
+$include-ext-sparkline-bar: false;
+$include-ext-sparkline-barbase: false;
+$include-ext-sparkline-base: false;
+$include-ext-sparkline-box: false;
+$include-ext-sparkline-bullet: false;
+$include-ext-sparkline-canvasbase: false;
+$include-ext-sparkline-canvascanvas: false;
+$include-ext-sparkline-discrete: false;
+$include-ext-sparkline-line: false;
+$include-ext-sparkline-pie: false;
+$include-ext-sparkline-rangemap: false;
+$include-ext-sparkline-shape: false;
+$include-ext-sparkline-tristate: false;
+$include-ext-sparkline-vmlcanvas: false;
+$include-ext-state-cookieprovider: false;
+$include-ext-state-localstorageprovider: false;
+$include-ext-state-manager: false;
+$include-ext-state-provider: false;
+$include-ext-state-stateful: false;
+$include-ext-tab-bar: false;
+$include-ext-tab-panel: false;
+$include-ext-tab-tab: false;
+$include-ext-tip-quicktip: false;
+$include-ext-tip-quicktipmanager: false;
+$include-ext-tip-tip: false;
+$include-ext-tip-tooltip: false;
+$include-ext-toolbar-breadcrumb: false;
+$include-ext-toolbar-fill: false;
+$include-ext-toolbar-item: false;
+$include-ext-toolbar-paging: false;
+$include-ext-toolbar-separator: false;
+$include-ext-toolbar-spacer: false;
+$include-ext-toolbar-textitem: false;
+$include-ext-toolbar-toolbar: false;
+$include-ext-tree-column: false;
+$include-ext-tree-navigationmodel: false;
+$include-ext-tree-panel: false;
+$include-ext-tree-view: false;
+$include-ext-tree-viewdragzone: false;
+$include-ext-tree-viewdropzone: false;
+$include-ext-tree-plugin-treeviewdragdrop: false;
+$include-ext-util-abstractmixedcollection: false;
+$include-ext-util-animate: false;
+$include-ext-util-base64: false;
+$include-ext-util-css: false;
+$include-ext-util-csv: false;
+$include-ext-util-clickrepeater: false;
+$include-ext-util-collection: false;
+$include-ext-util-collectionkey: false;
+$include-ext-util-componentdragger: false;
+$include-ext-util-cookies: false;
+$include-ext-util-delimitedvalue: false;
+$include-ext-util-elementcontainer: false;
+$include-ext-util-event: false;
+$include-ext-util-filter: false;
+$include-ext-util-filtercollection: false;
+$include-ext-util-floating: false;
+$include-ext-util-focusable: false;
+$include-ext-util-focusablecontainer: false;
+$include-ext-util-format: false;
+$include-ext-util-group: false;
+$include-ext-util-groupcollection: false;
+$include-ext-util-grouper: false;
+$include-ext-util-hashmap: false;
+$include-ext-util-history: false;
+$include-ext-util-inflector: false;
+$include-ext-util-keymap: false;
+$include-ext-util-keynav: false;
+$include-ext-util-localstorage: false;
+$include-ext-util-lrucache: false;
+$include-ext-util-memento: false;
+$include-ext-util-mixedcollection: false;
+$include-ext-util-objecttemplate: false;
+$include-ext-util-observable: false;
+$include-ext-util-offset: false;
+$include-ext-util-paintmonitor: false;
+$include-ext-util-point: false;
+$include-ext-util-positionable: false;
+$include-ext-util-protoelement: false;
+$include-ext-util-queue: false;
+$include-ext-util-region: false;
+$include-ext-util-renderable: false;
+$include-ext-util-schedulable: false;
+$include-ext-util-scheduler: false;
+$include-ext-util-sizemonitor: false;
+$include-ext-util-sortable: false;
+$include-ext-util-sorter: false;
+$include-ext-util-sortercollection: false;
+$include-ext-util-storeholder: false;
+$include-ext-util-tsv: false;
+$include-ext-util-taskmanager: false;
+$include-ext-util-taskrunner: false;
+$include-ext-util-textmetrics: false;
+$include-ext-util-translatable: false;
+$include-ext-util-xtemplatecompiler: false;
+$include-ext-util-xtemplateparser: false;
+$include-ext-util-paintmonitor-abstract: false;
+$include-ext-util-paintmonitor-cssanimation: false;
+$include-ext-util-paintmonitor-overflowchange: false;
+$include-ext-util-sizemonitor-abstract: false;
+$include-ext-util-sizemonitor-default: false;
+$include-ext-util-sizemonitor-overflowchange: false;
+$include-ext-util-sizemonitor-scroll: false;
+$include-ext-util-translatable-abstract: false;
+$include-ext-util-translatable-cssposition: false;
+$include-ext-util-translatable-csstransform: false;
+$include-ext-util-translatable-dom: false;
+$include-ext-util-translatable-scrollparent: false;
+$include-ext-util-translatable-scrollposition: false;
+$include-ext-ux-boxreorderer: true;
+$include-ext-ux-celldragdrop: true;
+$include-ext-ux-datatip: true;
+$include-ext-ux-dataview-animated: true;
+$include-ext-ux-dataview-dragselector: true;
+$include-ext-ux-dataview-draggable: true;
+$include-ext-ux-dataview-labeleditor: true;
+$include-ext-ux-explorer: true;
+$include-ext-ux-fieldreplicator: true;
+$include-ext-ux-gmappanel: true;
+$include-ext-ux-grouptabpanel: true;
+$include-ext-ux-grouptabrenderer: true;
+$include-ext-ux-iframe: true;
+$include-ext-ux-livesearchgridpanel: true;
+$include-ext-ux-previewplugin: true;
+$include-ext-ux-progressbarpager: true;
+$include-ext-ux-rowexpander: true;
+$include-ext-ux-slidingpager: true;
+$include-ext-ux-spotlight: true;
+$include-ext-ux-tabclosemenu: true;
+$include-ext-ux-tabreorderer: true;
+$include-ext-ux-tabscrollermenu: true;
+$include-ext-ux-toolbardroppable: true;
+$include-ext-ux-treepicker: true;
+$include-ext-ux-ajax-datasimlet: true;
+$include-ext-ux-ajax-jsonsimlet: true;
+$include-ext-ux-ajax-simmanager: true;
+$include-ext-ux-ajax-simxhr: true;
+$include-ext-ux-ajax-simlet: true;
+$include-ext-ux-ajax-xmlsimlet: true;
+$include-ext-ux-dashboard-googlersspart: true;
+$include-ext-ux-dashboard-googlerssview: true;
+$include-ext-ux-data-pagingmemoryproxy: true;
+$include-ext-ux-dd-cellfielddropzone: true;
+$include-ext-ux-dd-panelfielddragzone: true;
+$include-ext-ux-desktop-app: true;
+$include-ext-ux-desktop-desktop: true;
+$include-ext-ux-desktop-module: true;
+$include-ext-ux-desktop-shortcutmodel: true;
+$include-ext-ux-desktop-startmenu: true;
+$include-ext-ux-desktop-taskbar: true;
+$include-ext-ux-desktop-trayclock: true;
+$include-ext-ux-desktop-video: true;
+$include-ext-ux-desktop-wallpaper: true;
+$include-ext-ux-event-driver: true;
+$include-ext-ux-event-maker: true;
+$include-ext-ux-event-player: true;
+$include-ext-ux-event-recorder: true;
+$include-ext-ux-event-recordermanager: true;
+$include-ext-ux-form-itemselector: true;
+$include-ext-ux-form-multiselect: true;
+$include-ext-ux-form-searchfield: true;
+$include-ext-ux-google-api: true;
+$include-ext-ux-google-feeds: true;
+$include-ext-ux-grid-subtable: true;
+$include-ext-ux-grid-transformgrid: true;
+$include-ext-ux-statusbar-statusbar: true;
+$include-ext-ux-statusbar-validationstatus: true;
+$include-ext-view-abstractview: false;
+$include-ext-view-boundlist: false;
+$include-ext-view-boundlistkeynav: false;
+$include-ext-view-dragzone: false;
+$include-ext-view-dropzone: false;
+$include-ext-view-multiselector: false;
+$include-ext-view-multiselectorsearch: false;
+$include-ext-view-navigationmodel: false;
+$include-ext-view-nodecache: false;
+$include-ext-view-table: false;
+$include-ext-view-tablelayout: false;
+$include-ext-view-view: false;
+$include-ext-window-messagebox: false;
+$include-ext-window-toast: false;
+$include-ext-window-window: false;
+/* including package ext-aria */
+@import '../sass/etc/all';
+/* including package ext-aria */
+@import '../sass/var/Component';
+@import '../sass/var/panel/Tool';
+@import '../sass/var/grid/header/Container';
+@import '../sass/var/form/FieldSet';

+ 764 - 0
src/ext/packages/ext-aria/build/ext-aria-all-rtl-debug.scss

@@ -0,0 +1,764 @@
+$image-search-path: '/home/teamcity/buildAgent/work/3cebfbfc7c03d949/sencha/ext/packages/ext-aria/build/resources' !default;
+$theme-name:  'ext-aria' !default;
+$include-ext-abstractmanager: false;
+$include-ext-action: false;
+$include-ext-ajax: false;
+$include-ext-animationqueue: false;
+$include-ext-component: false;
+$include-ext-componentloader: false;
+$include-ext-componentmanager: false;
+$include-ext-componentquery: false;
+$include-ext-editor: false;
+$include-ext-elementloader: false;
+$include-ext-eventmanager: false;
+$include-ext-evented: false;
+$include-ext-focusmanager: false;
+$include-ext-globalevents: false;
+$include-ext-img: false;
+$include-ext-loadmask: false;
+$include-ext-mixin: false;
+$include-ext-progressbar: false;
+$include-ext-progressbarwidget: false;
+$include-ext-taskqueue: false;
+$include-ext-template: false;
+$include-ext-widget: false;
+$include-ext-xtemplate: false;
+$include-ext-zindexmanager: false;
+$include-ext-app-application: false;
+$include-ext-app-basecontroller: false;
+$include-ext-app-controller: false;
+$include-ext-app-eventbus: false;
+$include-ext-app-eventdomain: false;
+$include-ext-app-profile: false;
+$include-ext-app-util: false;
+$include-ext-app-viewcontroller: false;
+$include-ext-app-viewmodel: false;
+$include-ext-app-bind-abstractstub: false;
+$include-ext-app-bind-basebinding: false;
+$include-ext-app-bind-binding: false;
+$include-ext-app-bind-formula: false;
+$include-ext-app-bind-linkstub: false;
+$include-ext-app-bind-multi: false;
+$include-ext-app-bind-rootstub: false;
+$include-ext-app-bind-stub: false;
+$include-ext-app-bind-template: false;
+$include-ext-app-bind-templatebinding: false;
+$include-ext-app-bindinspector-componentdetail: false;
+$include-ext-app-bindinspector-componentlist: false;
+$include-ext-app-bindinspector-container: false;
+$include-ext-app-bindinspector-environment: false;
+$include-ext-app-bindinspector-inspector: false;
+$include-ext-app-bindinspector-util: false;
+$include-ext-app-bindinspector-viewmodeldetail: false;
+$include-ext-app-bindinspector-noconflict-basemodel: false;
+$include-ext-app-domain-component: false;
+$include-ext-app-domain-controller: false;
+$include-ext-app-domain-direct: false;
+$include-ext-app-domain-global: false;
+$include-ext-app-domain-store: false;
+$include-ext-app-domain-view: false;
+$include-ext-app-route-queue: false;
+$include-ext-app-route-route: false;
+$include-ext-app-route-router: false;
+$include-ext-aria-component: true;
+$include-ext-aria-focusmanager: true;
+$include-ext-aria-img: true;
+$include-ext-aria-button-button: true;
+$include-ext-aria-button-cycle: true;
+$include-ext-aria-button-split: true;
+$include-ext-aria-container-viewport: true;
+$include-ext-aria-form-checkboxgroup: true;
+$include-ext-aria-form-fieldcontainer: true;
+$include-ext-aria-form-fieldset: true;
+$include-ext-aria-form-radiogroup: true;
+$include-ext-aria-form-field-base: true;
+$include-ext-aria-form-field-checkbox: true;
+$include-ext-aria-form-field-combobox: true;
+$include-ext-aria-form-field-date: true;
+$include-ext-aria-form-field-display: true;
+$include-ext-aria-form-field-number: true;
+$include-ext-aria-form-field-picker: true;
+$include-ext-aria-form-field-text: true;
+$include-ext-aria-form-field-textarea: true;
+$include-ext-aria-form-field-time: true;
+$include-ext-aria-grid-navigationmodel: true;
+$include-ext-aria-grid-column-column: true;
+$include-ext-aria-grid-header-container: true;
+$include-ext-aria-menu-checkitem: true;
+$include-ext-aria-menu-item: true;
+$include-ext-aria-panel-panel: true;
+$include-ext-aria-panel-tool: true;
+$include-ext-aria-picker-color: true;
+$include-ext-aria-slider-multi: true;
+$include-ext-aria-slider-thumb: true;
+$include-ext-aria-slider-tip: true;
+$include-ext-aria-tab-bar: true;
+$include-ext-aria-tab-panel: true;
+$include-ext-aria-tab-tab: true;
+$include-ext-aria-tip-quicktip: true;
+$include-ext-aria-ux-form-multiselect: true;
+$include-ext-aria-view-boundlist: true;
+$include-ext-aria-view-boundlistkeynav: true;
+$include-ext-aria-view-table: true;
+$include-ext-aria-view-view: true;
+$include-ext-aria-window-messagebox: true;
+$include-ext-aria-window-toast: true;
+$include-ext-aria-window-window: true;
+$include-ext-button-button: false;
+$include-ext-button-cycle: false;
+$include-ext-button-manager: false;
+$include-ext-button-segmented: false;
+$include-ext-button-split: false;
+$include-ext-container-buttongroup: false;
+$include-ext-container-container: false;
+$include-ext-container-dockingcontainer: false;
+$include-ext-container-monitor: false;
+$include-ext-container-viewport: false;
+$include-ext-dashboard-column: false;
+$include-ext-dashboard-dashboard: false;
+$include-ext-dashboard-dropzone: false;
+$include-ext-dashboard-panel: false;
+$include-ext-dashboard-part: false;
+$include-ext-data-abstractstore: false;
+$include-ext-data-arraystore: false;
+$include-ext-data-batch: false;
+$include-ext-data-bufferedstore: false;
+$include-ext-data-chainedstore: false;
+$include-ext-data-connection: false;
+$include-ext-data-directstore: false;
+$include-ext-data-error: false;
+$include-ext-data-errorcollection: false;
+$include-ext-data-jsonp: false;
+$include-ext-data-jsonpstore: false;
+$include-ext-data-jsonstore: false;
+$include-ext-data-localstore: false;
+$include-ext-data-model: false;
+$include-ext-data-modelmanager: false;
+$include-ext-data-nodeinterface: false;
+$include-ext-data-nodestore: false;
+$include-ext-data-pagemap: false;
+$include-ext-data-proxystore: false;
+$include-ext-data-request: false;
+$include-ext-data-resultset: false;
+$include-ext-data-session: false;
+$include-ext-data-sorttypes: false;
+$include-ext-data-store: false;
+$include-ext-data-storemanager: false;
+$include-ext-data-treemodel: false;
+$include-ext-data-treestore: false;
+$include-ext-data-types: false;
+$include-ext-data-validation: false;
+$include-ext-data-xmlstore: false;
+$include-ext-data-field-boolean: false;
+$include-ext-data-field-date: false;
+$include-ext-data-field-field: false;
+$include-ext-data-field-integer: false;
+$include-ext-data-field-number: false;
+$include-ext-data-field-string: false;
+$include-ext-data-flash-binaryxhr: false;
+$include-ext-data-identifier-generator: false;
+$include-ext-data-identifier-negative: false;
+$include-ext-data-identifier-sequential: false;
+$include-ext-data-identifier-uuid: false;
+$include-ext-data-matrix-matrix: false;
+$include-ext-data-matrix-side: false;
+$include-ext-data-matrix-slice: false;
+$include-ext-data-operation-create: false;
+$include-ext-data-operation-destroy: false;
+$include-ext-data-operation-operation: false;
+$include-ext-data-operation-read: false;
+$include-ext-data-operation-update: false;
+$include-ext-data-proxy-ajax: false;
+$include-ext-data-proxy-client: false;
+$include-ext-data-proxy-direct: false;
+$include-ext-data-proxy-jsonp: false;
+$include-ext-data-proxy-localstorage: false;
+$include-ext-data-proxy-memory: false;
+$include-ext-data-proxy-proxy: false;
+$include-ext-data-proxy-rest: false;
+$include-ext-data-proxy-server: false;
+$include-ext-data-proxy-sessionstorage: false;
+$include-ext-data-proxy-webstorage: false;
+$include-ext-data-reader-array: false;
+$include-ext-data-reader-json: false;
+$include-ext-data-reader-reader: false;
+$include-ext-data-reader-xml: false;
+$include-ext-data-schema-association: false;
+$include-ext-data-schema-manytomany: false;
+$include-ext-data-schema-manytoone: false;
+$include-ext-data-schema-namer: false;
+$include-ext-data-schema-onetoone: false;
+$include-ext-data-schema-role: false;
+$include-ext-data-schema-schema: false;
+$include-ext-data-session-batchvisitor: false;
+$include-ext-data-session-changesvisitor: false;
+$include-ext-data-session-childchangesvisitor: false;
+$include-ext-data-validator-bound: false;
+$include-ext-data-validator-email: false;
+$include-ext-data-validator-exclusion: false;
+$include-ext-data-validator-format: false;
+$include-ext-data-validator-inclusion: false;
+$include-ext-data-validator-length: false;
+$include-ext-data-validator-list: false;
+$include-ext-data-validator-presence: false;
+$include-ext-data-validator-range: false;
+$include-ext-data-validator-validator: false;
+$include-ext-data-writer-json: false;
+$include-ext-data-writer-writer: false;
+$include-ext-data-writer-xml: false;
+$include-ext-dd-dd: false;
+$include-ext-dd-ddproxy: false;
+$include-ext-dd-ddtarget: false;
+$include-ext-dd-dragdrop: false;
+$include-ext-dd-dragdropmanager: false;
+$include-ext-dd-dragsource: false;
+$include-ext-dd-dragtracker: false;
+$include-ext-dd-dragzone: false;
+$include-ext-dd-droptarget: false;
+$include-ext-dd-dropzone: false;
+$include-ext-dd-registry: false;
+$include-ext-dd-scrollmanager: false;
+$include-ext-dd-statusproxy: false;
+$include-ext-direct-event: false;
+$include-ext-direct-exceptionevent: false;
+$include-ext-direct-jsonprovider: false;
+$include-ext-direct-manager: false;
+$include-ext-direct-pollingprovider: false;
+$include-ext-direct-provider: false;
+$include-ext-direct-remotingevent: false;
+$include-ext-direct-remotingmethod: false;
+$include-ext-direct-remotingprovider: false;
+$include-ext-direct-transaction: false;
+$include-ext-dom-buttonelement: false;
+$include-ext-dom-compositeelement: false;
+$include-ext-dom-compositeelementlite: false;
+$include-ext-dom-element: false;
+$include-ext-dom-elementevent: false;
+$include-ext-dom-fly: false;
+$include-ext-dom-garbagecollector: false;
+$include-ext-dom-helper: false;
+$include-ext-dom-layer: false;
+$include-ext-dom-query: false;
+$include-ext-dom-shadow: false;
+$include-ext-dom-shim: false;
+$include-ext-dom-underlay: false;
+$include-ext-dom-underlaypool: false;
+$include-ext-event-event: false;
+$include-ext-event-gesture-doubletap: false;
+$include-ext-event-gesture-drag: false;
+$include-ext-event-gesture-edgeswipe: false;
+$include-ext-event-gesture-longpress: false;
+$include-ext-event-gesture-multitouch: false;
+$include-ext-event-gesture-pinch: false;
+$include-ext-event-gesture-recognizer: false;
+$include-ext-event-gesture-rotate: false;
+$include-ext-event-gesture-singletouch: false;
+$include-ext-event-gesture-swipe: false;
+$include-ext-event-gesture-tap: false;
+$include-ext-event-publisher-dom: false;
+$include-ext-event-publisher-elementpaint: false;
+$include-ext-event-publisher-elementsize: false;
+$include-ext-event-publisher-focus: false;
+$include-ext-event-publisher-gesture: false;
+$include-ext-event-publisher-mouseenterleave: false;
+$include-ext-event-publisher-publisher: false;
+$include-ext-flash-component: false;
+$include-ext-form-basic: false;
+$include-ext-form-checkboxgroup: false;
+$include-ext-form-checkboxmanager: false;
+$include-ext-form-fieldancestor: false;
+$include-ext-form-fieldcontainer: false;
+$include-ext-form-fieldset: false;
+$include-ext-form-label: false;
+$include-ext-form-labelable: false;
+$include-ext-form-panel: false;
+$include-ext-form-radiogroup: false;
+$include-ext-form-radiomanager: false;
+$include-ext-form-action-action: false;
+$include-ext-form-action-directaction: false;
+$include-ext-form-action-directload: false;
+$include-ext-form-action-directsubmit: false;
+$include-ext-form-action-load: false;
+$include-ext-form-action-standardsubmit: false;
+$include-ext-form-action-submit: false;
+$include-ext-form-field-base: false;
+$include-ext-form-field-checkbox: false;
+$include-ext-form-field-combobox: false;
+$include-ext-form-field-date: false;
+$include-ext-form-field-display: false;
+$include-ext-form-field-field: false;
+$include-ext-form-field-file: false;
+$include-ext-form-field-filebutton: false;
+$include-ext-form-field-hidden: false;
+$include-ext-form-field-htmleditor: false;
+$include-ext-form-field-number: false;
+$include-ext-form-field-picker: false;
+$include-ext-form-field-radio: false;
+$include-ext-form-field-spinner: false;
+$include-ext-form-field-tag: false;
+$include-ext-form-field-text: false;
+$include-ext-form-field-textarea: false;
+$include-ext-form-field-time: false;
+$include-ext-form-field-trigger: false;
+$include-ext-form-field-vtypes: false;
+$include-ext-form-trigger-component: false;
+$include-ext-form-trigger-spinner: false;
+$include-ext-form-trigger-trigger: false;
+$include-ext-fx-anim: false;
+$include-ext-fx-animation: false;
+$include-ext-fx-animator: false;
+$include-ext-fx-cubicbezier: false;
+$include-ext-fx-drawpath: false;
+$include-ext-fx-easing: false;
+$include-ext-fx-manager: false;
+$include-ext-fx-propertyhandler: false;
+$include-ext-fx-queue: false;
+$include-ext-fx-runner: false;
+$include-ext-fx-state: false;
+$include-ext-fx-animation-abstract: false;
+$include-ext-fx-animation-cube: false;
+$include-ext-fx-animation-fade: false;
+$include-ext-fx-animation-fadeout: false;
+$include-ext-fx-animation-flip: false;
+$include-ext-fx-animation-pop: false;
+$include-ext-fx-animation-popout: false;
+$include-ext-fx-animation-slide: false;
+$include-ext-fx-animation-slideout: false;
+$include-ext-fx-animation-wipe: false;
+$include-ext-fx-animation-wipeout: false;
+$include-ext-fx-easing-abstract: false;
+$include-ext-fx-easing-bounce: false;
+$include-ext-fx-easing-boundmomentum: false;
+$include-ext-fx-easing-easein: false;
+$include-ext-fx-easing-easeout: false;
+$include-ext-fx-easing-easing: false;
+$include-ext-fx-easing-linear: false;
+$include-ext-fx-easing-momentum: false;
+$include-ext-fx-layout-card: false;
+$include-ext-fx-layout-card-abstract: false;
+$include-ext-fx-layout-card-cover: false;
+$include-ext-fx-layout-card-cube: false;
+$include-ext-fx-layout-card-fade: false;
+$include-ext-fx-layout-card-flip: false;
+$include-ext-fx-layout-card-pop: false;
+$include-ext-fx-layout-card-reveal: false;
+$include-ext-fx-layout-card-scroll: false;
+$include-ext-fx-layout-card-scrollcover: false;
+$include-ext-fx-layout-card-scrollreveal: false;
+$include-ext-fx-layout-card-slide: false;
+$include-ext-fx-layout-card-style: false;
+$include-ext-fx-runner-css: false;
+$include-ext-fx-runner-cssanimation: false;
+$include-ext-fx-runner-csstransition: false;
+$include-ext-fx-target-component: false;
+$include-ext-fx-target-compositeelement: false;
+$include-ext-fx-target-compositeelementcss: false;
+$include-ext-fx-target-compositesprite: false;
+$include-ext-fx-target-element: false;
+$include-ext-fx-target-elementcss: false;
+$include-ext-fx-target-sprite: false;
+$include-ext-fx-target-target: false;
+$include-ext-grid-cellcontext: false;
+$include-ext-grid-celleditor: false;
+$include-ext-grid-columncomponentlayout: false;
+$include-ext-grid-columnlayout: false;
+$include-ext-grid-columnmanager: false;
+$include-ext-grid-navigationmodel: false;
+$include-ext-grid-panel: false;
+$include-ext-grid-roweditor: false;
+$include-ext-grid-roweditorbuttons: false;
+$include-ext-grid-viewdropzone: false;
+$include-ext-grid-column-action: false;
+$include-ext-grid-column-boolean: false;
+$include-ext-grid-column-check: false;
+$include-ext-grid-column-column: false;
+$include-ext-grid-column-date: false;
+$include-ext-grid-column-number: false;
+$include-ext-grid-column-rownumberer: false;
+$include-ext-grid-column-template: false;
+$include-ext-grid-column-widget: false;
+$include-ext-grid-feature-abstractsummary: false;
+$include-ext-grid-feature-feature: false;
+$include-ext-grid-feature-groupstore: false;
+$include-ext-grid-feature-grouping: false;
+$include-ext-grid-feature-groupingsummary: false;
+$include-ext-grid-feature-rowbody: false;
+$include-ext-grid-feature-summary: false;
+$include-ext-grid-filters-filters: false;
+$include-ext-grid-filters-filter-base: false;
+$include-ext-grid-filters-filter-boolean: false;
+$include-ext-grid-filters-filter-date: false;
+$include-ext-grid-filters-filter-list: false;
+$include-ext-grid-filters-filter-number: false;
+$include-ext-grid-filters-filter-singlefilter: false;
+$include-ext-grid-filters-filter-string: false;
+$include-ext-grid-filters-filter-trifilter: false;
+$include-ext-grid-header-container: false;
+$include-ext-grid-header-dragzone: false;
+$include-ext-grid-header-dropzone: false;
+$include-ext-grid-locking-headercontainer: false;
+$include-ext-grid-locking-lockable: false;
+$include-ext-grid-locking-rowsynchronizer: false;
+$include-ext-grid-locking-view: false;
+$include-ext-grid-plugin-bufferedrenderer: false;
+$include-ext-grid-plugin-cellediting: false;
+$include-ext-grid-plugin-clipboard: false;
+$include-ext-grid-plugin-dragdrop: false;
+$include-ext-grid-plugin-editing: false;
+$include-ext-grid-plugin-headerreorderer: false;
+$include-ext-grid-plugin-headerresizer: false;
+$include-ext-grid-plugin-rowediting: false;
+$include-ext-grid-plugin-rowexpander: false;
+$include-ext-grid-property-grid: false;
+$include-ext-grid-property-headercontainer: false;
+$include-ext-grid-property-property: false;
+$include-ext-grid-property-reader: false;
+$include-ext-grid-property-store: false;
+$include-ext-grid-selection-cells: false;
+$include-ext-grid-selection-columns: false;
+$include-ext-grid-selection-rows: false;
+$include-ext-grid-selection-selection: false;
+$include-ext-grid-selection-spreadsheetmodel: false;
+$include-ext-layout-context: false;
+$include-ext-layout-contextitem: false;
+$include-ext-layout-layout: false;
+$include-ext-layout-sizemodel: false;
+$include-ext-layout-component-auto: false;
+$include-ext-layout-component-body: false;
+$include-ext-layout-component-boundlist: false;
+$include-ext-layout-component-component: false;
+$include-ext-layout-component-dock: false;
+$include-ext-layout-component-fieldset: false;
+$include-ext-layout-component-progressbar: false;
+$include-ext-layout-component-field-fieldcontainer: false;
+$include-ext-layout-component-field-htmleditor: false;
+$include-ext-layout-container-absolute: false;
+$include-ext-layout-container-accordion: false;
+$include-ext-layout-container-anchor: false;
+$include-ext-layout-container-auto: false;
+$include-ext-layout-container-border: false;
+$include-ext-layout-container-box: false;
+$include-ext-layout-container-card: false;
+$include-ext-layout-container-center: false;
+$include-ext-layout-container-checkboxgroup: false;
+$include-ext-layout-container-column: false;
+$include-ext-layout-container-columnsplitter: false;
+$include-ext-layout-container-columnsplittertracker: false;
+$include-ext-layout-container-container: false;
+$include-ext-layout-container-dashboard: false;
+$include-ext-layout-container-editor: false;
+$include-ext-layout-container-fit: false;
+$include-ext-layout-container-form: false;
+$include-ext-layout-container-hbox: false;
+$include-ext-layout-container-segmentedbutton: false;
+$include-ext-layout-container-table: false;
+$include-ext-layout-container-vbox: false;
+$include-ext-layout-container-border-region: false;
+$include-ext-layout-container-boxoverflow-menu: false;
+$include-ext-layout-container-boxoverflow-none: false;
+$include-ext-layout-container-boxoverflow-scroller: false;
+$include-ext-menu-checkitem: false;
+$include-ext-menu-colorpicker: false;
+$include-ext-menu-datepicker: false;
+$include-ext-menu-item: false;
+$include-ext-menu-manager: false;
+$include-ext-menu-menu: false;
+$include-ext-menu-separator: false;
+$include-ext-mixin-bindable: false;
+$include-ext-mixin-factoryable: false;
+$include-ext-mixin-hookable: false;
+$include-ext-mixin-identifiable: false;
+$include-ext-mixin-inheritable: false;
+$include-ext-mixin-mashup: false;
+$include-ext-mixin-observable: false;
+$include-ext-mixin-queryable: false;
+$include-ext-mixin-responsive: false;
+$include-ext-mixin-selectable: false;
+$include-ext-mixin-templatable: false;
+$include-ext-mixin-traversable: false;
+$include-ext-overrides-globalevents: false;
+$include-ext-overrides-widget: false;
+$include-ext-overrides-app-application: false;
+$include-ext-overrides-app-domain-component: false;
+$include-ext-overrides-dom-element: false;
+$include-ext-overrides-dom-helper: false;
+$include-ext-overrides-event-event: false;
+$include-ext-overrides-event-publisher-dom: false;
+$include-ext-overrides-event-publisher-gesture: false;
+$include-ext-overrides-plugin-abstract: false;
+$include-ext-overrides-util-positionable: false;
+$include-ext-panel-bar: false;
+$include-ext-panel-dd: false;
+$include-ext-panel-header: false;
+$include-ext-panel-panel: false;
+$include-ext-panel-pinnable: false;
+$include-ext-panel-proxy: false;
+$include-ext-panel-table: false;
+$include-ext-panel-title: false;
+$include-ext-panel-tool: false;
+$include-ext-perf-accumulator: false;
+$include-ext-perf-monitor: false;
+$include-ext-picker-color: false;
+$include-ext-picker-date: false;
+$include-ext-picker-month: false;
+$include-ext-picker-time: false;
+$include-ext-plugin-abstract: false;
+$include-ext-plugin-abstractclipboard: false;
+$include-ext-plugin-manager: false;
+$include-ext-plugin-responsive: false;
+$include-ext-plugin-viewport: false;
+$include-ext-resizer-bordersplitter: false;
+$include-ext-resizer-bordersplittertracker: false;
+$include-ext-resizer-handle: false;
+$include-ext-resizer-resizetracker: false;
+$include-ext-resizer-resizer: false;
+$include-ext-resizer-splitter: false;
+$include-ext-resizer-splittertracker: false;
+$include-ext-rtl-component: false;
+$include-ext-rtl-button-button: false;
+$include-ext-rtl-button-segmented: false;
+$include-ext-rtl-dd-dd: false;
+$include-ext-rtl-dom-element: false;
+$include-ext-rtl-event-event: false;
+$include-ext-rtl-form-labelable: false;
+$include-ext-rtl-form-field-file: false;
+$include-ext-rtl-form-field-filebutton: false;
+$include-ext-rtl-grid-celleditor: false;
+$include-ext-rtl-grid-columnlayout: false;
+$include-ext-rtl-grid-navigationmodel: false;
+$include-ext-rtl-grid-column-column: false;
+$include-ext-rtl-grid-feature-summary: false;
+$include-ext-rtl-grid-plugin-headerresizer: false;
+$include-ext-rtl-grid-plugin-rowediting: false;
+$include-ext-rtl-layout-contextitem: false;
+$include-ext-rtl-layout-component-dock: false;
+$include-ext-rtl-layout-container-absolute: false;
+$include-ext-rtl-layout-container-border: false;
+$include-ext-rtl-layout-container-box: false;
+$include-ext-rtl-layout-container-column: false;
+$include-ext-rtl-layout-container-hbox: false;
+$include-ext-rtl-layout-container-vbox: false;
+$include-ext-rtl-layout-container-boxoverflow-menu: false;
+$include-ext-rtl-layout-container-boxoverflow-scroller: false;
+$include-ext-rtl-panel-bar: false;
+$include-ext-rtl-panel-panel: false;
+$include-ext-rtl-panel-title: false;
+$include-ext-rtl-resizer-bordersplittertracker: false;
+$include-ext-rtl-resizer-resizetracker: false;
+$include-ext-rtl-resizer-splittertracker: false;
+$include-ext-rtl-scroll-domscroller: false;
+$include-ext-rtl-scroll-indicator: false;
+$include-ext-rtl-scroll-scroller: false;
+$include-ext-rtl-scroll-touchscroller: false;
+$include-ext-rtl-slider-multi: false;
+$include-ext-rtl-tab-bar: false;
+$include-ext-rtl-tip-quicktipmanager: false;
+$include-ext-rtl-tree-column: false;
+$include-ext-rtl-util-focusablecontainer: false;
+$include-ext-rtl-util-renderable: false;
+$include-ext-rtl-view-navigationmodel: false;
+$include-ext-rtl-view-table: false;
+$include-ext-scroll-domscroller: false;
+$include-ext-scroll-indicator: false;
+$include-ext-scroll-scroller: false;
+$include-ext-scroll-touchscroller: false;
+$include-ext-selection-cellmodel: false;
+$include-ext-selection-checkboxmodel: false;
+$include-ext-selection-dataviewmodel: false;
+$include-ext-selection-model: false;
+$include-ext-selection-rowmodel: false;
+$include-ext-selection-treemodel: false;
+$include-ext-slider-multi: false;
+$include-ext-slider-single: false;
+$include-ext-slider-thumb: false;
+$include-ext-slider-tip: false;
+$include-ext-slider-widget: false;
+$include-ext-sparkline-bar: false;
+$include-ext-sparkline-barbase: false;
+$include-ext-sparkline-base: false;
+$include-ext-sparkline-box: false;
+$include-ext-sparkline-bullet: false;
+$include-ext-sparkline-canvasbase: false;
+$include-ext-sparkline-canvascanvas: false;
+$include-ext-sparkline-discrete: false;
+$include-ext-sparkline-line: false;
+$include-ext-sparkline-pie: false;
+$include-ext-sparkline-rangemap: false;
+$include-ext-sparkline-shape: false;
+$include-ext-sparkline-tristate: false;
+$include-ext-sparkline-vmlcanvas: false;
+$include-ext-state-cookieprovider: false;
+$include-ext-state-localstorageprovider: false;
+$include-ext-state-manager: false;
+$include-ext-state-provider: false;
+$include-ext-state-stateful: false;
+$include-ext-tab-bar: false;
+$include-ext-tab-panel: false;
+$include-ext-tab-tab: false;
+$include-ext-tip-quicktip: false;
+$include-ext-tip-quicktipmanager: false;
+$include-ext-tip-tip: false;
+$include-ext-tip-tooltip: false;
+$include-ext-toolbar-breadcrumb: false;
+$include-ext-toolbar-fill: false;
+$include-ext-toolbar-item: false;
+$include-ext-toolbar-paging: false;
+$include-ext-toolbar-separator: false;
+$include-ext-toolbar-spacer: false;
+$include-ext-toolbar-textitem: false;
+$include-ext-toolbar-toolbar: false;
+$include-ext-tree-column: false;
+$include-ext-tree-navigationmodel: false;
+$include-ext-tree-panel: false;
+$include-ext-tree-view: false;
+$include-ext-tree-viewdragzone: false;
+$include-ext-tree-viewdropzone: false;
+$include-ext-tree-plugin-treeviewdragdrop: false;
+$include-ext-util-abstractmixedcollection: false;
+$include-ext-util-animate: false;
+$include-ext-util-base64: false;
+$include-ext-util-css: false;
+$include-ext-util-csv: false;
+$include-ext-util-clickrepeater: false;
+$include-ext-util-collection: false;
+$include-ext-util-collectionkey: false;
+$include-ext-util-componentdragger: false;
+$include-ext-util-cookies: false;
+$include-ext-util-delimitedvalue: false;
+$include-ext-util-elementcontainer: false;
+$include-ext-util-event: false;
+$include-ext-util-filter: false;
+$include-ext-util-filtercollection: false;
+$include-ext-util-floating: false;
+$include-ext-util-focusable: false;
+$include-ext-util-focusablecontainer: false;
+$include-ext-util-format: false;
+$include-ext-util-group: false;
+$include-ext-util-groupcollection: false;
+$include-ext-util-grouper: false;
+$include-ext-util-hashmap: false;
+$include-ext-util-history: false;
+$include-ext-util-inflector: false;
+$include-ext-util-keymap: false;
+$include-ext-util-keynav: false;
+$include-ext-util-localstorage: false;
+$include-ext-util-lrucache: false;
+$include-ext-util-memento: false;
+$include-ext-util-mixedcollection: false;
+$include-ext-util-objecttemplate: false;
+$include-ext-util-observable: false;
+$include-ext-util-offset: false;
+$include-ext-util-paintmonitor: false;
+$include-ext-util-point: false;
+$include-ext-util-positionable: false;
+$include-ext-util-protoelement: false;
+$include-ext-util-queue: false;
+$include-ext-util-region: false;
+$include-ext-util-renderable: false;
+$include-ext-util-schedulable: false;
+$include-ext-util-scheduler: false;
+$include-ext-util-sizemonitor: false;
+$include-ext-util-sortable: false;
+$include-ext-util-sorter: false;
+$include-ext-util-sortercollection: false;
+$include-ext-util-storeholder: false;
+$include-ext-util-tsv: false;
+$include-ext-util-taskmanager: false;
+$include-ext-util-taskrunner: false;
+$include-ext-util-textmetrics: false;
+$include-ext-util-translatable: false;
+$include-ext-util-xtemplatecompiler: false;
+$include-ext-util-xtemplateparser: false;
+$include-ext-util-paintmonitor-abstract: false;
+$include-ext-util-paintmonitor-cssanimation: false;
+$include-ext-util-paintmonitor-overflowchange: false;
+$include-ext-util-sizemonitor-abstract: false;
+$include-ext-util-sizemonitor-default: false;
+$include-ext-util-sizemonitor-overflowchange: false;
+$include-ext-util-sizemonitor-scroll: false;
+$include-ext-util-translatable-abstract: false;
+$include-ext-util-translatable-cssposition: false;
+$include-ext-util-translatable-csstransform: false;
+$include-ext-util-translatable-dom: false;
+$include-ext-util-translatable-scrollparent: false;
+$include-ext-util-translatable-scrollposition: false;
+$include-ext-ux-boxreorderer: true;
+$include-ext-ux-celldragdrop: true;
+$include-ext-ux-datatip: true;
+$include-ext-ux-dataview-animated: true;
+$include-ext-ux-dataview-dragselector: true;
+$include-ext-ux-dataview-draggable: true;
+$include-ext-ux-dataview-labeleditor: true;
+$include-ext-ux-explorer: true;
+$include-ext-ux-fieldreplicator: true;
+$include-ext-ux-gmappanel: true;
+$include-ext-ux-grouptabpanel: true;
+$include-ext-ux-grouptabrenderer: true;
+$include-ext-ux-iframe: true;
+$include-ext-ux-livesearchgridpanel: true;
+$include-ext-ux-previewplugin: true;
+$include-ext-ux-progressbarpager: true;
+$include-ext-ux-rowexpander: true;
+$include-ext-ux-slidingpager: true;
+$include-ext-ux-spotlight: true;
+$include-ext-ux-tabclosemenu: true;
+$include-ext-ux-tabreorderer: true;
+$include-ext-ux-tabscrollermenu: true;
+$include-ext-ux-toolbardroppable: true;
+$include-ext-ux-treepicker: true;
+$include-ext-ux-ajax-datasimlet: true;
+$include-ext-ux-ajax-jsonsimlet: true;
+$include-ext-ux-ajax-simmanager: true;
+$include-ext-ux-ajax-simxhr: true;
+$include-ext-ux-ajax-simlet: true;
+$include-ext-ux-ajax-xmlsimlet: true;
+$include-ext-ux-dashboard-googlersspart: true;
+$include-ext-ux-dashboard-googlerssview: true;
+$include-ext-ux-data-pagingmemoryproxy: true;
+$include-ext-ux-dd-cellfielddropzone: true;
+$include-ext-ux-dd-panelfielddragzone: true;
+$include-ext-ux-desktop-app: true;
+$include-ext-ux-desktop-desktop: true;
+$include-ext-ux-desktop-module: true;
+$include-ext-ux-desktop-shortcutmodel: true;
+$include-ext-ux-desktop-startmenu: true;
+$include-ext-ux-desktop-taskbar: true;
+$include-ext-ux-desktop-trayclock: true;
+$include-ext-ux-desktop-video: true;
+$include-ext-ux-desktop-wallpaper: true;
+$include-ext-ux-event-driver: true;
+$include-ext-ux-event-maker: true;
+$include-ext-ux-event-player: true;
+$include-ext-ux-event-recorder: true;
+$include-ext-ux-event-recordermanager: true;
+$include-ext-ux-form-itemselector: true;
+$include-ext-ux-form-multiselect: true;
+$include-ext-ux-form-searchfield: true;
+$include-ext-ux-google-api: true;
+$include-ext-ux-google-feeds: true;
+$include-ext-ux-grid-subtable: true;
+$include-ext-ux-grid-transformgrid: true;
+$include-ext-ux-statusbar-statusbar: true;
+$include-ext-ux-statusbar-validationstatus: true;
+$include-ext-view-abstractview: false;
+$include-ext-view-boundlist: false;
+$include-ext-view-boundlistkeynav: false;
+$include-ext-view-dragzone: false;
+$include-ext-view-dropzone: false;
+$include-ext-view-multiselector: false;
+$include-ext-view-multiselectorsearch: false;
+$include-ext-view-navigationmodel: false;
+$include-ext-view-nodecache: false;
+$include-ext-view-table: false;
+$include-ext-view-tablelayout: false;
+$include-ext-view-view: false;
+$include-ext-window-messagebox: false;
+$include-ext-window-toast: false;
+$include-ext-window-window: false;
+/* including package ext-aria */
+@import '../sass/etc/all';
+/* including package ext-aria */
+@import '../sass/var/Component';
+@import '../sass/var/panel/Tool';
+@import '../sass/var/grid/header/Container';
+@import '../sass/var/form/FieldSet';

文件差异内容过多而无法显示
+ 11834 - 0
src/ext/packages/ext-aria/build/ext-aria-debug.js


文件差异内容过多而无法显示
+ 43 - 0
src/ext/packages/ext-aria/build/ext-aria.js


+ 3 - 0
src/ext/packages/ext-aria/build/resources/Readme.md

@@ -0,0 +1,3 @@
+# ext-aria/resources
+
+This folder contains static resources (typically an `"images"` folder as well).

+ 2 - 0
src/ext/packages/ext-aria/build/resources/ext-aria-all-debug.css

@@ -0,0 +1,2 @@
+/* including package ext-aria */
+/* including package ext-aria */

+ 2 - 0
src/ext/packages/ext-aria/build/resources/ext-aria-all-rtl-debug.css

@@ -0,0 +1,2 @@
+/* including package ext-aria */
+/* including package ext-aria */

+ 0 - 0
src/ext/packages/ext-aria/build/resources/ext-aria-all-rtl.css


+ 0 - 0
src/ext/packages/ext-aria/build/resources/ext-aria-all.css


二进制
src/ext/packages/ext-aria/build/resources/images/form/date-trigger-rtl.gif


二进制
src/ext/packages/ext-aria/build/resources/images/form/date-trigger.gif


二进制
src/ext/packages/ext-aria/build/resources/images/form/exclamation.gif


二进制
src/ext/packages/ext-aria/build/resources/images/form/trigger-rtl.gif


二进制
src/ext/packages/ext-aria/build/resources/images/form/trigger.gif


二进制
src/ext/packages/ext-aria/build/resources/images/shared/left-btn.gif


二进制
src/ext/packages/ext-aria/build/resources/images/shared/right-btn.gif


+ 1 - 0
src/ext/packages/ext-charts/build/config.rb

@@ -0,0 +1 @@
+require '../../ext-theme-base/sass/utils.rb'

+ 717 - 0
src/ext/packages/ext-charts/build/ext-charts-all-debug.scss

@@ -0,0 +1,717 @@
+$image-search-path: '/home/teamcity/buildAgent/work/3cebfbfc7c03d949/sencha/ext/packages/ext-charts/build/resources' !default;
+$theme-name:  'ext-charts' !default;
+$include-ext-abstractmanager: false;
+$include-ext-action: false;
+$include-ext-ajax: false;
+$include-ext-animationqueue: false;
+$include-ext-component: false;
+$include-ext-componentloader: false;
+$include-ext-componentmanager: false;
+$include-ext-componentquery: false;
+$include-ext-editor: false;
+$include-ext-elementloader: false;
+$include-ext-eventmanager: false;
+$include-ext-evented: false;
+$include-ext-focusmanager: false;
+$include-ext-globalevents: false;
+$include-ext-img: false;
+$include-ext-loadmask: false;
+$include-ext-mixin: false;
+$include-ext-progressbar: false;
+$include-ext-progressbarwidget: false;
+$include-ext-taskqueue: false;
+$include-ext-template: false;
+$include-ext-widget: false;
+$include-ext-xtemplate: false;
+$include-ext-zindexmanager: false;
+$include-ext-app-application: false;
+$include-ext-app-basecontroller: false;
+$include-ext-app-controller: false;
+$include-ext-app-eventbus: false;
+$include-ext-app-eventdomain: false;
+$include-ext-app-profile: false;
+$include-ext-app-util: false;
+$include-ext-app-viewcontroller: false;
+$include-ext-app-viewmodel: false;
+$include-ext-app-bind-abstractstub: false;
+$include-ext-app-bind-basebinding: false;
+$include-ext-app-bind-binding: false;
+$include-ext-app-bind-formula: false;
+$include-ext-app-bind-linkstub: false;
+$include-ext-app-bind-multi: false;
+$include-ext-app-bind-rootstub: false;
+$include-ext-app-bind-stub: false;
+$include-ext-app-bind-template: false;
+$include-ext-app-bind-templatebinding: false;
+$include-ext-app-bindinspector-componentdetail: false;
+$include-ext-app-bindinspector-componentlist: false;
+$include-ext-app-bindinspector-container: false;
+$include-ext-app-bindinspector-environment: false;
+$include-ext-app-bindinspector-inspector: false;
+$include-ext-app-bindinspector-util: false;
+$include-ext-app-bindinspector-viewmodeldetail: false;
+$include-ext-app-bindinspector-noconflict-basemodel: false;
+$include-ext-app-domain-component: false;
+$include-ext-app-domain-controller: false;
+$include-ext-app-domain-direct: false;
+$include-ext-app-domain-global: false;
+$include-ext-app-domain-store: false;
+$include-ext-app-domain-view: false;
+$include-ext-app-route-queue: false;
+$include-ext-app-route-route: false;
+$include-ext-app-route-router: false;
+$include-ext-button-button: false;
+$include-ext-button-cycle: false;
+$include-ext-button-manager: false;
+$include-ext-button-segmented: false;
+$include-ext-button-split: false;
+$include-ext-chart-callout: true;
+$include-ext-chart-chart: true;
+$include-ext-chart-highlight: true;
+$include-ext-chart-label: true;
+$include-ext-chart-legend: true;
+$include-ext-chart-legenditem: true;
+$include-ext-chart-mask: true;
+$include-ext-chart-masklayer: true;
+$include-ext-chart-navigation: true;
+$include-ext-chart-shape: true;
+$include-ext-chart-tip: true;
+$include-ext-chart-tipsurface: true;
+$include-ext-chart-axis-abstract: true;
+$include-ext-chart-axis-axis: true;
+$include-ext-chart-axis-category: true;
+$include-ext-chart-axis-gauge: true;
+$include-ext-chart-axis-numeric: true;
+$include-ext-chart-axis-radial: true;
+$include-ext-chart-axis-time: true;
+$include-ext-chart-series-area: true;
+$include-ext-chart-series-bar: true;
+$include-ext-chart-series-cartesian: true;
+$include-ext-chart-series-column: true;
+$include-ext-chart-series-gauge: true;
+$include-ext-chart-series-line: true;
+$include-ext-chart-series-pie: true;
+$include-ext-chart-series-radar: true;
+$include-ext-chart-series-scatter: true;
+$include-ext-chart-series-series: true;
+$include-ext-chart-theme-base: true;
+$include-ext-chart-theme-theme: true;
+$include-ext-container-buttongroup: false;
+$include-ext-container-container: false;
+$include-ext-container-dockingcontainer: false;
+$include-ext-container-monitor: false;
+$include-ext-container-viewport: false;
+$include-ext-dashboard-column: false;
+$include-ext-dashboard-dashboard: false;
+$include-ext-dashboard-dropzone: false;
+$include-ext-dashboard-panel: false;
+$include-ext-dashboard-part: false;
+$include-ext-data-abstractstore: false;
+$include-ext-data-arraystore: false;
+$include-ext-data-batch: false;
+$include-ext-data-bufferedstore: false;
+$include-ext-data-chainedstore: false;
+$include-ext-data-connection: false;
+$include-ext-data-directstore: false;
+$include-ext-data-error: false;
+$include-ext-data-errorcollection: false;
+$include-ext-data-jsonp: false;
+$include-ext-data-jsonpstore: false;
+$include-ext-data-jsonstore: false;
+$include-ext-data-localstore: false;
+$include-ext-data-model: false;
+$include-ext-data-modelmanager: false;
+$include-ext-data-nodeinterface: false;
+$include-ext-data-nodestore: false;
+$include-ext-data-pagemap: false;
+$include-ext-data-proxystore: false;
+$include-ext-data-request: false;
+$include-ext-data-resultset: false;
+$include-ext-data-session: false;
+$include-ext-data-sorttypes: false;
+$include-ext-data-store: false;
+$include-ext-data-storemanager: false;
+$include-ext-data-treemodel: false;
+$include-ext-data-treestore: false;
+$include-ext-data-types: false;
+$include-ext-data-validation: false;
+$include-ext-data-xmlstore: false;
+$include-ext-data-field-boolean: false;
+$include-ext-data-field-date: false;
+$include-ext-data-field-field: false;
+$include-ext-data-field-integer: false;
+$include-ext-data-field-number: false;
+$include-ext-data-field-string: false;
+$include-ext-data-flash-binaryxhr: false;
+$include-ext-data-identifier-generator: false;
+$include-ext-data-identifier-negative: false;
+$include-ext-data-identifier-sequential: false;
+$include-ext-data-identifier-uuid: false;
+$include-ext-data-matrix-matrix: false;
+$include-ext-data-matrix-side: false;
+$include-ext-data-matrix-slice: false;
+$include-ext-data-operation-create: false;
+$include-ext-data-operation-destroy: false;
+$include-ext-data-operation-operation: false;
+$include-ext-data-operation-read: false;
+$include-ext-data-operation-update: false;
+$include-ext-data-proxy-ajax: false;
+$include-ext-data-proxy-client: false;
+$include-ext-data-proxy-direct: false;
+$include-ext-data-proxy-jsonp: false;
+$include-ext-data-proxy-localstorage: false;
+$include-ext-data-proxy-memory: false;
+$include-ext-data-proxy-proxy: false;
+$include-ext-data-proxy-rest: false;
+$include-ext-data-proxy-server: false;
+$include-ext-data-proxy-sessionstorage: false;
+$include-ext-data-proxy-webstorage: false;
+$include-ext-data-reader-array: false;
+$include-ext-data-reader-json: false;
+$include-ext-data-reader-reader: false;
+$include-ext-data-reader-xml: false;
+$include-ext-data-schema-association: false;
+$include-ext-data-schema-manytomany: false;
+$include-ext-data-schema-manytoone: false;
+$include-ext-data-schema-namer: false;
+$include-ext-data-schema-onetoone: false;
+$include-ext-data-schema-role: false;
+$include-ext-data-schema-schema: false;
+$include-ext-data-session-batchvisitor: false;
+$include-ext-data-session-changesvisitor: false;
+$include-ext-data-session-childchangesvisitor: false;
+$include-ext-data-validator-bound: false;
+$include-ext-data-validator-email: false;
+$include-ext-data-validator-exclusion: false;
+$include-ext-data-validator-format: false;
+$include-ext-data-validator-inclusion: false;
+$include-ext-data-validator-length: false;
+$include-ext-data-validator-list: false;
+$include-ext-data-validator-presence: false;
+$include-ext-data-validator-range: false;
+$include-ext-data-validator-validator: false;
+$include-ext-data-writer-json: false;
+$include-ext-data-writer-writer: false;
+$include-ext-data-writer-xml: false;
+$include-ext-dd-dd: false;
+$include-ext-dd-ddproxy: false;
+$include-ext-dd-ddtarget: false;
+$include-ext-dd-dragdrop: false;
+$include-ext-dd-dragdropmanager: false;
+$include-ext-dd-dragsource: false;
+$include-ext-dd-dragtracker: false;
+$include-ext-dd-dragzone: false;
+$include-ext-dd-droptarget: false;
+$include-ext-dd-dropzone: false;
+$include-ext-dd-registry: false;
+$include-ext-dd-scrollmanager: false;
+$include-ext-dd-statusproxy: false;
+$include-ext-direct-event: false;
+$include-ext-direct-exceptionevent: false;
+$include-ext-direct-jsonprovider: false;
+$include-ext-direct-manager: false;
+$include-ext-direct-pollingprovider: false;
+$include-ext-direct-provider: false;
+$include-ext-direct-remotingevent: false;
+$include-ext-direct-remotingmethod: false;
+$include-ext-direct-remotingprovider: false;
+$include-ext-direct-transaction: false;
+$include-ext-dom-buttonelement: false;
+$include-ext-dom-compositeelement: false;
+$include-ext-dom-compositeelementlite: false;
+$include-ext-dom-element: false;
+$include-ext-dom-elementevent: false;
+$include-ext-dom-fly: false;
+$include-ext-dom-garbagecollector: false;
+$include-ext-dom-helper: false;
+$include-ext-dom-layer: false;
+$include-ext-dom-query: false;
+$include-ext-dom-shadow: false;
+$include-ext-dom-shim: false;
+$include-ext-dom-underlay: false;
+$include-ext-dom-underlaypool: false;
+$include-ext-draw-color: true;
+$include-ext-draw-component: true;
+$include-ext-draw-compositesprite: true;
+$include-ext-draw-draw: true;
+$include-ext-draw-matrix: true;
+$include-ext-draw-sprite: true;
+$include-ext-draw-spritedd: true;
+$include-ext-draw-surface: true;
+$include-ext-draw-text: true;
+$include-ext-draw-engine-imageexporter: true;
+$include-ext-draw-engine-svg: true;
+$include-ext-draw-engine-svgexporter: true;
+$include-ext-draw-engine-vml: true;
+$include-ext-draw-layout-component: true;
+$include-ext-event-event: false;
+$include-ext-event-gesture-doubletap: false;
+$include-ext-event-gesture-drag: false;
+$include-ext-event-gesture-edgeswipe: false;
+$include-ext-event-gesture-longpress: false;
+$include-ext-event-gesture-multitouch: false;
+$include-ext-event-gesture-pinch: false;
+$include-ext-event-gesture-recognizer: false;
+$include-ext-event-gesture-rotate: false;
+$include-ext-event-gesture-singletouch: false;
+$include-ext-event-gesture-swipe: false;
+$include-ext-event-gesture-tap: false;
+$include-ext-event-publisher-dom: false;
+$include-ext-event-publisher-elementpaint: false;
+$include-ext-event-publisher-elementsize: false;
+$include-ext-event-publisher-focus: false;
+$include-ext-event-publisher-gesture: false;
+$include-ext-event-publisher-mouseenterleave: false;
+$include-ext-event-publisher-publisher: false;
+$include-ext-flash-component: false;
+$include-ext-form-basic: false;
+$include-ext-form-checkboxgroup: false;
+$include-ext-form-checkboxmanager: false;
+$include-ext-form-fieldancestor: false;
+$include-ext-form-fieldcontainer: false;
+$include-ext-form-fieldset: false;
+$include-ext-form-label: false;
+$include-ext-form-labelable: false;
+$include-ext-form-panel: false;
+$include-ext-form-radiogroup: false;
+$include-ext-form-radiomanager: false;
+$include-ext-form-action-action: false;
+$include-ext-form-action-directaction: false;
+$include-ext-form-action-directload: false;
+$include-ext-form-action-directsubmit: false;
+$include-ext-form-action-load: false;
+$include-ext-form-action-standardsubmit: false;
+$include-ext-form-action-submit: false;
+$include-ext-form-field-base: false;
+$include-ext-form-field-checkbox: false;
+$include-ext-form-field-combobox: false;
+$include-ext-form-field-date: false;
+$include-ext-form-field-display: false;
+$include-ext-form-field-field: false;
+$include-ext-form-field-file: false;
+$include-ext-form-field-filebutton: false;
+$include-ext-form-field-hidden: false;
+$include-ext-form-field-htmleditor: false;
+$include-ext-form-field-number: false;
+$include-ext-form-field-picker: false;
+$include-ext-form-field-radio: false;
+$include-ext-form-field-spinner: false;
+$include-ext-form-field-tag: false;
+$include-ext-form-field-text: false;
+$include-ext-form-field-textarea: false;
+$include-ext-form-field-time: false;
+$include-ext-form-field-trigger: false;
+$include-ext-form-field-vtypes: false;
+$include-ext-form-trigger-component: false;
+$include-ext-form-trigger-spinner: false;
+$include-ext-form-trigger-trigger: false;
+$include-ext-fx-anim: false;
+$include-ext-fx-animation: false;
+$include-ext-fx-animator: false;
+$include-ext-fx-cubicbezier: false;
+$include-ext-fx-drawpath: false;
+$include-ext-fx-easing: false;
+$include-ext-fx-manager: false;
+$include-ext-fx-propertyhandler: false;
+$include-ext-fx-queue: false;
+$include-ext-fx-runner: false;
+$include-ext-fx-state: false;
+$include-ext-fx-animation-abstract: false;
+$include-ext-fx-animation-cube: false;
+$include-ext-fx-animation-fade: false;
+$include-ext-fx-animation-fadeout: false;
+$include-ext-fx-animation-flip: false;
+$include-ext-fx-animation-pop: false;
+$include-ext-fx-animation-popout: false;
+$include-ext-fx-animation-slide: false;
+$include-ext-fx-animation-slideout: false;
+$include-ext-fx-animation-wipe: false;
+$include-ext-fx-animation-wipeout: false;
+$include-ext-fx-easing-abstract: false;
+$include-ext-fx-easing-bounce: false;
+$include-ext-fx-easing-boundmomentum: false;
+$include-ext-fx-easing-easein: false;
+$include-ext-fx-easing-easeout: false;
+$include-ext-fx-easing-easing: false;
+$include-ext-fx-easing-linear: false;
+$include-ext-fx-easing-momentum: false;
+$include-ext-fx-layout-card: false;
+$include-ext-fx-layout-card-abstract: false;
+$include-ext-fx-layout-card-cover: false;
+$include-ext-fx-layout-card-cube: false;
+$include-ext-fx-layout-card-fade: false;
+$include-ext-fx-layout-card-flip: false;
+$include-ext-fx-layout-card-pop: false;
+$include-ext-fx-layout-card-reveal: false;
+$include-ext-fx-layout-card-scroll: false;
+$include-ext-fx-layout-card-scrollcover: false;
+$include-ext-fx-layout-card-scrollreveal: false;
+$include-ext-fx-layout-card-slide: false;
+$include-ext-fx-layout-card-style: false;
+$include-ext-fx-runner-css: false;
+$include-ext-fx-runner-cssanimation: false;
+$include-ext-fx-runner-csstransition: false;
+$include-ext-fx-target-component: false;
+$include-ext-fx-target-compositeelement: false;
+$include-ext-fx-target-compositeelementcss: false;
+$include-ext-fx-target-compositesprite: false;
+$include-ext-fx-target-element: false;
+$include-ext-fx-target-elementcss: false;
+$include-ext-fx-target-sprite: false;
+$include-ext-fx-target-target: false;
+$include-ext-grid-cellcontext: false;
+$include-ext-grid-celleditor: false;
+$include-ext-grid-columncomponentlayout: false;
+$include-ext-grid-columnlayout: false;
+$include-ext-grid-columnmanager: false;
+$include-ext-grid-navigationmodel: false;
+$include-ext-grid-panel: false;
+$include-ext-grid-roweditor: false;
+$include-ext-grid-roweditorbuttons: false;
+$include-ext-grid-viewdropzone: false;
+$include-ext-grid-column-action: false;
+$include-ext-grid-column-boolean: false;
+$include-ext-grid-column-check: false;
+$include-ext-grid-column-column: false;
+$include-ext-grid-column-date: false;
+$include-ext-grid-column-number: false;
+$include-ext-grid-column-rownumberer: false;
+$include-ext-grid-column-template: false;
+$include-ext-grid-column-widget: false;
+$include-ext-grid-feature-abstractsummary: false;
+$include-ext-grid-feature-feature: false;
+$include-ext-grid-feature-groupstore: false;
+$include-ext-grid-feature-grouping: false;
+$include-ext-grid-feature-groupingsummary: false;
+$include-ext-grid-feature-rowbody: false;
+$include-ext-grid-feature-summary: false;
+$include-ext-grid-filters-filters: false;
+$include-ext-grid-filters-filter-base: false;
+$include-ext-grid-filters-filter-boolean: false;
+$include-ext-grid-filters-filter-date: false;
+$include-ext-grid-filters-filter-list: false;
+$include-ext-grid-filters-filter-number: false;
+$include-ext-grid-filters-filter-singlefilter: false;
+$include-ext-grid-filters-filter-string: false;
+$include-ext-grid-filters-filter-trifilter: false;
+$include-ext-grid-header-container: false;
+$include-ext-grid-header-dragzone: false;
+$include-ext-grid-header-dropzone: false;
+$include-ext-grid-locking-headercontainer: false;
+$include-ext-grid-locking-lockable: false;
+$include-ext-grid-locking-rowsynchronizer: false;
+$include-ext-grid-locking-view: false;
+$include-ext-grid-plugin-bufferedrenderer: false;
+$include-ext-grid-plugin-cellediting: false;
+$include-ext-grid-plugin-clipboard: false;
+$include-ext-grid-plugin-dragdrop: false;
+$include-ext-grid-plugin-editing: false;
+$include-ext-grid-plugin-headerreorderer: false;
+$include-ext-grid-plugin-headerresizer: false;
+$include-ext-grid-plugin-rowediting: false;
+$include-ext-grid-plugin-rowexpander: false;
+$include-ext-grid-property-grid: false;
+$include-ext-grid-property-headercontainer: false;
+$include-ext-grid-property-property: false;
+$include-ext-grid-property-reader: false;
+$include-ext-grid-property-store: false;
+$include-ext-grid-selection-cells: false;
+$include-ext-grid-selection-columns: false;
+$include-ext-grid-selection-rows: false;
+$include-ext-grid-selection-selection: false;
+$include-ext-grid-selection-spreadsheetmodel: false;
+$include-ext-layout-context: false;
+$include-ext-layout-contextitem: false;
+$include-ext-layout-layout: false;
+$include-ext-layout-sizemodel: false;
+$include-ext-layout-component-auto: false;
+$include-ext-layout-component-body: false;
+$include-ext-layout-component-boundlist: false;
+$include-ext-layout-component-component: false;
+$include-ext-layout-component-dock: false;
+$include-ext-layout-component-fieldset: false;
+$include-ext-layout-component-progressbar: false;
+$include-ext-layout-component-field-fieldcontainer: false;
+$include-ext-layout-component-field-htmleditor: false;
+$include-ext-layout-container-absolute: false;
+$include-ext-layout-container-accordion: false;
+$include-ext-layout-container-anchor: false;
+$include-ext-layout-container-auto: false;
+$include-ext-layout-container-border: false;
+$include-ext-layout-container-box: false;
+$include-ext-layout-container-card: false;
+$include-ext-layout-container-center: false;
+$include-ext-layout-container-checkboxgroup: false;
+$include-ext-layout-container-column: false;
+$include-ext-layout-container-columnsplitter: false;
+$include-ext-layout-container-columnsplittertracker: false;
+$include-ext-layout-container-container: false;
+$include-ext-layout-container-dashboard: false;
+$include-ext-layout-container-editor: false;
+$include-ext-layout-container-fit: false;
+$include-ext-layout-container-form: false;
+$include-ext-layout-container-hbox: false;
+$include-ext-layout-container-segmentedbutton: false;
+$include-ext-layout-container-table: false;
+$include-ext-layout-container-vbox: false;
+$include-ext-layout-container-border-region: false;
+$include-ext-layout-container-boxoverflow-menu: false;
+$include-ext-layout-container-boxoverflow-none: false;
+$include-ext-layout-container-boxoverflow-scroller: false;
+$include-ext-menu-checkitem: false;
+$include-ext-menu-colorpicker: false;
+$include-ext-menu-datepicker: false;
+$include-ext-menu-item: false;
+$include-ext-menu-manager: false;
+$include-ext-menu-menu: false;
+$include-ext-menu-separator: false;
+$include-ext-mixin-bindable: false;
+$include-ext-mixin-factoryable: false;
+$include-ext-mixin-hookable: false;
+$include-ext-mixin-identifiable: false;
+$include-ext-mixin-inheritable: false;
+$include-ext-mixin-mashup: false;
+$include-ext-mixin-observable: false;
+$include-ext-mixin-queryable: false;
+$include-ext-mixin-responsive: false;
+$include-ext-mixin-selectable: false;
+$include-ext-mixin-templatable: false;
+$include-ext-mixin-traversable: false;
+$include-ext-overrides-globalevents: false;
+$include-ext-overrides-widget: false;
+$include-ext-overrides-app-application: false;
+$include-ext-overrides-app-domain-component: false;
+$include-ext-overrides-dom-element: false;
+$include-ext-overrides-dom-helper: false;
+$include-ext-overrides-event-event: false;
+$include-ext-overrides-event-publisher-dom: false;
+$include-ext-overrides-event-publisher-gesture: false;
+$include-ext-overrides-plugin-abstract: false;
+$include-ext-overrides-util-positionable: false;
+$include-ext-panel-bar: false;
+$include-ext-panel-dd: false;
+$include-ext-panel-header: false;
+$include-ext-panel-panel: false;
+$include-ext-panel-pinnable: false;
+$include-ext-panel-proxy: false;
+$include-ext-panel-table: false;
+$include-ext-panel-title: false;
+$include-ext-panel-tool: false;
+$include-ext-perf-accumulator: false;
+$include-ext-perf-monitor: false;
+$include-ext-picker-color: false;
+$include-ext-picker-date: false;
+$include-ext-picker-month: false;
+$include-ext-picker-time: false;
+$include-ext-plugin-abstract: false;
+$include-ext-plugin-abstractclipboard: false;
+$include-ext-plugin-manager: false;
+$include-ext-plugin-responsive: false;
+$include-ext-plugin-viewport: false;
+$include-ext-resizer-bordersplitter: false;
+$include-ext-resizer-bordersplittertracker: false;
+$include-ext-resizer-handle: false;
+$include-ext-resizer-resizetracker: false;
+$include-ext-resizer-resizer: false;
+$include-ext-resizer-splitter: false;
+$include-ext-resizer-splittertracker: false;
+$include-ext-rtl-component: false;
+$include-ext-rtl-button-button: false;
+$include-ext-rtl-button-segmented: false;
+$include-ext-rtl-chart-chart: true;
+$include-ext-rtl-chart-legend: true;
+$include-ext-rtl-chart-legenditem: true;
+$include-ext-rtl-chart-axis-axis: true;
+$include-ext-rtl-chart-axis-gauge: true;
+$include-ext-rtl-chart-series-cartesian: true;
+$include-ext-rtl-chart-series-gauge: true;
+$include-ext-rtl-dd-dd: false;
+$include-ext-rtl-dom-element: false;
+$include-ext-rtl-draw-component: true;
+$include-ext-rtl-draw-sprite: true;
+$include-ext-rtl-event-event: false;
+$include-ext-rtl-form-labelable: false;
+$include-ext-rtl-form-field-file: false;
+$include-ext-rtl-form-field-filebutton: false;
+$include-ext-rtl-grid-celleditor: false;
+$include-ext-rtl-grid-columnlayout: false;
+$include-ext-rtl-grid-navigationmodel: false;
+$include-ext-rtl-grid-column-column: false;
+$include-ext-rtl-grid-feature-summary: false;
+$include-ext-rtl-grid-plugin-headerresizer: false;
+$include-ext-rtl-grid-plugin-rowediting: false;
+$include-ext-rtl-layout-contextitem: false;
+$include-ext-rtl-layout-component-dock: false;
+$include-ext-rtl-layout-container-absolute: false;
+$include-ext-rtl-layout-container-border: false;
+$include-ext-rtl-layout-container-box: false;
+$include-ext-rtl-layout-container-column: false;
+$include-ext-rtl-layout-container-hbox: false;
+$include-ext-rtl-layout-container-vbox: false;
+$include-ext-rtl-layout-container-boxoverflow-menu: false;
+$include-ext-rtl-layout-container-boxoverflow-scroller: false;
+$include-ext-rtl-panel-bar: false;
+$include-ext-rtl-panel-panel: false;
+$include-ext-rtl-panel-title: false;
+$include-ext-rtl-resizer-bordersplittertracker: false;
+$include-ext-rtl-resizer-resizetracker: false;
+$include-ext-rtl-resizer-splittertracker: false;
+$include-ext-rtl-scroll-domscroller: false;
+$include-ext-rtl-scroll-indicator: false;
+$include-ext-rtl-scroll-scroller: false;
+$include-ext-rtl-scroll-touchscroller: false;
+$include-ext-rtl-slider-multi: false;
+$include-ext-rtl-tab-bar: false;
+$include-ext-rtl-tip-quicktipmanager: false;
+$include-ext-rtl-tree-column: false;
+$include-ext-rtl-util-focusablecontainer: false;
+$include-ext-rtl-util-renderable: false;
+$include-ext-rtl-view-navigationmodel: false;
+$include-ext-rtl-view-table: false;
+$include-ext-scroll-domscroller: false;
+$include-ext-scroll-indicator: false;
+$include-ext-scroll-scroller: false;
+$include-ext-scroll-touchscroller: false;
+$include-ext-selection-cellmodel: false;
+$include-ext-selection-checkboxmodel: false;
+$include-ext-selection-dataviewmodel: false;
+$include-ext-selection-model: false;
+$include-ext-selection-rowmodel: false;
+$include-ext-selection-treemodel: false;
+$include-ext-slider-multi: false;
+$include-ext-slider-single: false;
+$include-ext-slider-thumb: false;
+$include-ext-slider-tip: false;
+$include-ext-slider-widget: false;
+$include-ext-sparkline-bar: false;
+$include-ext-sparkline-barbase: false;
+$include-ext-sparkline-base: false;
+$include-ext-sparkline-box: false;
+$include-ext-sparkline-bullet: false;
+$include-ext-sparkline-canvasbase: false;
+$include-ext-sparkline-canvascanvas: false;
+$include-ext-sparkline-discrete: false;
+$include-ext-sparkline-line: false;
+$include-ext-sparkline-pie: false;
+$include-ext-sparkline-rangemap: false;
+$include-ext-sparkline-shape: false;
+$include-ext-sparkline-tristate: false;
+$include-ext-sparkline-vmlcanvas: false;
+$include-ext-state-cookieprovider: false;
+$include-ext-state-localstorageprovider: false;
+$include-ext-state-manager: false;
+$include-ext-state-provider: false;
+$include-ext-state-stateful: false;
+$include-ext-tab-bar: false;
+$include-ext-tab-panel: false;
+$include-ext-tab-tab: false;
+$include-ext-tip-quicktip: false;
+$include-ext-tip-quicktipmanager: false;
+$include-ext-tip-tip: false;
+$include-ext-tip-tooltip: false;
+$include-ext-toolbar-breadcrumb: false;
+$include-ext-toolbar-fill: false;
+$include-ext-toolbar-item: false;
+$include-ext-toolbar-paging: false;
+$include-ext-toolbar-separator: false;
+$include-ext-toolbar-spacer: false;
+$include-ext-toolbar-textitem: false;
+$include-ext-toolbar-toolbar: false;
+$include-ext-tree-column: false;
+$include-ext-tree-navigationmodel: false;
+$include-ext-tree-panel: false;
+$include-ext-tree-view: false;
+$include-ext-tree-viewdragzone: false;
+$include-ext-tree-viewdropzone: false;
+$include-ext-tree-plugin-treeviewdragdrop: false;
+$include-ext-util-abstractmixedcollection: false;
+$include-ext-util-animate: false;
+$include-ext-util-base64: false;
+$include-ext-util-css: false;
+$include-ext-util-csv: false;
+$include-ext-util-clickrepeater: false;
+$include-ext-util-collection: false;
+$include-ext-util-collectionkey: false;
+$include-ext-util-componentdragger: false;
+$include-ext-util-cookies: false;
+$include-ext-util-delimitedvalue: false;
+$include-ext-util-elementcontainer: false;
+$include-ext-util-event: false;
+$include-ext-util-filter: false;
+$include-ext-util-filtercollection: false;
+$include-ext-util-floating: false;
+$include-ext-util-focusable: false;
+$include-ext-util-focusablecontainer: false;
+$include-ext-util-format: false;
+$include-ext-util-group: false;
+$include-ext-util-groupcollection: false;
+$include-ext-util-grouper: false;
+$include-ext-util-hashmap: false;
+$include-ext-util-history: false;
+$include-ext-util-inflector: false;
+$include-ext-util-keymap: false;
+$include-ext-util-keynav: false;
+$include-ext-util-localstorage: false;
+$include-ext-util-lrucache: false;
+$include-ext-util-memento: false;
+$include-ext-util-mixedcollection: false;
+$include-ext-util-objecttemplate: false;
+$include-ext-util-observable: false;
+$include-ext-util-offset: false;
+$include-ext-util-paintmonitor: false;
+$include-ext-util-point: false;
+$include-ext-util-positionable: false;
+$include-ext-util-protoelement: false;
+$include-ext-util-queue: false;
+$include-ext-util-region: false;
+$include-ext-util-renderable: false;
+$include-ext-util-schedulable: false;
+$include-ext-util-scheduler: false;
+$include-ext-util-sizemonitor: false;
+$include-ext-util-sortable: false;
+$include-ext-util-sorter: false;
+$include-ext-util-sortercollection: false;
+$include-ext-util-storeholder: false;
+$include-ext-util-tsv: false;
+$include-ext-util-taskmanager: false;
+$include-ext-util-taskrunner: false;
+$include-ext-util-textmetrics: false;
+$include-ext-util-translatable: false;
+$include-ext-util-xtemplatecompiler: false;
+$include-ext-util-xtemplateparser: false;
+$include-ext-util-paintmonitor-abstract: false;
+$include-ext-util-paintmonitor-cssanimation: false;
+$include-ext-util-paintmonitor-overflowchange: false;
+$include-ext-util-sizemonitor-abstract: false;
+$include-ext-util-sizemonitor-default: false;
+$include-ext-util-sizemonitor-overflowchange: false;
+$include-ext-util-sizemonitor-scroll: false;
+$include-ext-util-translatable-abstract: false;
+$include-ext-util-translatable-cssposition: false;
+$include-ext-util-translatable-csstransform: false;
+$include-ext-util-translatable-dom: false;
+$include-ext-util-translatable-scrollparent: false;
+$include-ext-util-translatable-scrollposition: false;
+$include-ext-view-abstractview: false;
+$include-ext-view-boundlist: false;
+$include-ext-view-boundlistkeynav: false;
+$include-ext-view-dragzone: false;
+$include-ext-view-dropzone: false;
+$include-ext-view-multiselector: false;
+$include-ext-view-multiselectorsearch: false;
+$include-ext-view-navigationmodel: false;
+$include-ext-view-nodecache: false;
+$include-ext-view-table: false;
+$include-ext-view-tablelayout: false;
+$include-ext-view-view: false;
+$include-ext-window-messagebox: false;
+$include-ext-window-toast: false;
+$include-ext-window-window: false;
+/* including package ext-theme-base */
+@import '../../ext-theme-base/sass/etc/all';
+/* including package ext-theme-base */
+@import '../../ext-theme-base/sass/var/Component';
+/* including package ext-charts */
+$ext-charts-resource-path: 'images' !default;
+$relative-image-path-for-uis: $ext-charts-resource-path;
+@import '../sass/src/draw/Component';

+ 717 - 0
src/ext/packages/ext-charts/build/ext-charts-all-rtl-debug.scss

@@ -0,0 +1,717 @@
+$image-search-path: '/home/teamcity/buildAgent/work/3cebfbfc7c03d949/sencha/ext/packages/ext-charts/build/resources' !default;
+$theme-name:  'ext-charts' !default;
+$include-ext-abstractmanager: false;
+$include-ext-action: false;
+$include-ext-ajax: false;
+$include-ext-animationqueue: false;
+$include-ext-component: false;
+$include-ext-componentloader: false;
+$include-ext-componentmanager: false;
+$include-ext-componentquery: false;
+$include-ext-editor: false;
+$include-ext-elementloader: false;
+$include-ext-eventmanager: false;
+$include-ext-evented: false;
+$include-ext-focusmanager: false;
+$include-ext-globalevents: false;
+$include-ext-img: false;
+$include-ext-loadmask: false;
+$include-ext-mixin: false;
+$include-ext-progressbar: false;
+$include-ext-progressbarwidget: false;
+$include-ext-taskqueue: false;
+$include-ext-template: false;
+$include-ext-widget: false;
+$include-ext-xtemplate: false;
+$include-ext-zindexmanager: false;
+$include-ext-app-application: false;
+$include-ext-app-basecontroller: false;
+$include-ext-app-controller: false;
+$include-ext-app-eventbus: false;
+$include-ext-app-eventdomain: false;
+$include-ext-app-profile: false;
+$include-ext-app-util: false;
+$include-ext-app-viewcontroller: false;
+$include-ext-app-viewmodel: false;
+$include-ext-app-bind-abstractstub: false;
+$include-ext-app-bind-basebinding: false;
+$include-ext-app-bind-binding: false;
+$include-ext-app-bind-formula: false;
+$include-ext-app-bind-linkstub: false;
+$include-ext-app-bind-multi: false;
+$include-ext-app-bind-rootstub: false;
+$include-ext-app-bind-stub: false;
+$include-ext-app-bind-template: false;
+$include-ext-app-bind-templatebinding: false;
+$include-ext-app-bindinspector-componentdetail: false;
+$include-ext-app-bindinspector-componentlist: false;
+$include-ext-app-bindinspector-container: false;
+$include-ext-app-bindinspector-environment: false;
+$include-ext-app-bindinspector-inspector: false;
+$include-ext-app-bindinspector-util: false;
+$include-ext-app-bindinspector-viewmodeldetail: false;
+$include-ext-app-bindinspector-noconflict-basemodel: false;
+$include-ext-app-domain-component: false;
+$include-ext-app-domain-controller: false;
+$include-ext-app-domain-direct: false;
+$include-ext-app-domain-global: false;
+$include-ext-app-domain-store: false;
+$include-ext-app-domain-view: false;
+$include-ext-app-route-queue: false;
+$include-ext-app-route-route: false;
+$include-ext-app-route-router: false;
+$include-ext-button-button: false;
+$include-ext-button-cycle: false;
+$include-ext-button-manager: false;
+$include-ext-button-segmented: false;
+$include-ext-button-split: false;
+$include-ext-chart-callout: true;
+$include-ext-chart-chart: true;
+$include-ext-chart-highlight: true;
+$include-ext-chart-label: true;
+$include-ext-chart-legend: true;
+$include-ext-chart-legenditem: true;
+$include-ext-chart-mask: true;
+$include-ext-chart-masklayer: true;
+$include-ext-chart-navigation: true;
+$include-ext-chart-shape: true;
+$include-ext-chart-tip: true;
+$include-ext-chart-tipsurface: true;
+$include-ext-chart-axis-abstract: true;
+$include-ext-chart-axis-axis: true;
+$include-ext-chart-axis-category: true;
+$include-ext-chart-axis-gauge: true;
+$include-ext-chart-axis-numeric: true;
+$include-ext-chart-axis-radial: true;
+$include-ext-chart-axis-time: true;
+$include-ext-chart-series-area: true;
+$include-ext-chart-series-bar: true;
+$include-ext-chart-series-cartesian: true;
+$include-ext-chart-series-column: true;
+$include-ext-chart-series-gauge: true;
+$include-ext-chart-series-line: true;
+$include-ext-chart-series-pie: true;
+$include-ext-chart-series-radar: true;
+$include-ext-chart-series-scatter: true;
+$include-ext-chart-series-series: true;
+$include-ext-chart-theme-base: true;
+$include-ext-chart-theme-theme: true;
+$include-ext-container-buttongroup: false;
+$include-ext-container-container: false;
+$include-ext-container-dockingcontainer: false;
+$include-ext-container-monitor: false;
+$include-ext-container-viewport: false;
+$include-ext-dashboard-column: false;
+$include-ext-dashboard-dashboard: false;
+$include-ext-dashboard-dropzone: false;
+$include-ext-dashboard-panel: false;
+$include-ext-dashboard-part: false;
+$include-ext-data-abstractstore: false;
+$include-ext-data-arraystore: false;
+$include-ext-data-batch: false;
+$include-ext-data-bufferedstore: false;
+$include-ext-data-chainedstore: false;
+$include-ext-data-connection: false;
+$include-ext-data-directstore: false;
+$include-ext-data-error: false;
+$include-ext-data-errorcollection: false;
+$include-ext-data-jsonp: false;
+$include-ext-data-jsonpstore: false;
+$include-ext-data-jsonstore: false;
+$include-ext-data-localstore: false;
+$include-ext-data-model: false;
+$include-ext-data-modelmanager: false;
+$include-ext-data-nodeinterface: false;
+$include-ext-data-nodestore: false;
+$include-ext-data-pagemap: false;
+$include-ext-data-proxystore: false;
+$include-ext-data-request: false;
+$include-ext-data-resultset: false;
+$include-ext-data-session: false;
+$include-ext-data-sorttypes: false;
+$include-ext-data-store: false;
+$include-ext-data-storemanager: false;
+$include-ext-data-treemodel: false;
+$include-ext-data-treestore: false;
+$include-ext-data-types: false;
+$include-ext-data-validation: false;
+$include-ext-data-xmlstore: false;
+$include-ext-data-field-boolean: false;
+$include-ext-data-field-date: false;
+$include-ext-data-field-field: false;
+$include-ext-data-field-integer: false;
+$include-ext-data-field-number: false;
+$include-ext-data-field-string: false;
+$include-ext-data-flash-binaryxhr: false;
+$include-ext-data-identifier-generator: false;
+$include-ext-data-identifier-negative: false;
+$include-ext-data-identifier-sequential: false;
+$include-ext-data-identifier-uuid: false;
+$include-ext-data-matrix-matrix: false;
+$include-ext-data-matrix-side: false;
+$include-ext-data-matrix-slice: false;
+$include-ext-data-operation-create: false;
+$include-ext-data-operation-destroy: false;
+$include-ext-data-operation-operation: false;
+$include-ext-data-operation-read: false;
+$include-ext-data-operation-update: false;
+$include-ext-data-proxy-ajax: false;
+$include-ext-data-proxy-client: false;
+$include-ext-data-proxy-direct: false;
+$include-ext-data-proxy-jsonp: false;
+$include-ext-data-proxy-localstorage: false;
+$include-ext-data-proxy-memory: false;
+$include-ext-data-proxy-proxy: false;
+$include-ext-data-proxy-rest: false;
+$include-ext-data-proxy-server: false;
+$include-ext-data-proxy-sessionstorage: false;
+$include-ext-data-proxy-webstorage: false;
+$include-ext-data-reader-array: false;
+$include-ext-data-reader-json: false;
+$include-ext-data-reader-reader: false;
+$include-ext-data-reader-xml: false;
+$include-ext-data-schema-association: false;
+$include-ext-data-schema-manytomany: false;
+$include-ext-data-schema-manytoone: false;
+$include-ext-data-schema-namer: false;
+$include-ext-data-schema-onetoone: false;
+$include-ext-data-schema-role: false;
+$include-ext-data-schema-schema: false;
+$include-ext-data-session-batchvisitor: false;
+$include-ext-data-session-changesvisitor: false;
+$include-ext-data-session-childchangesvisitor: false;
+$include-ext-data-validator-bound: false;
+$include-ext-data-validator-email: false;
+$include-ext-data-validator-exclusion: false;
+$include-ext-data-validator-format: false;
+$include-ext-data-validator-inclusion: false;
+$include-ext-data-validator-length: false;
+$include-ext-data-validator-list: false;
+$include-ext-data-validator-presence: false;
+$include-ext-data-validator-range: false;
+$include-ext-data-validator-validator: false;
+$include-ext-data-writer-json: false;
+$include-ext-data-writer-writer: false;
+$include-ext-data-writer-xml: false;
+$include-ext-dd-dd: false;
+$include-ext-dd-ddproxy: false;
+$include-ext-dd-ddtarget: false;
+$include-ext-dd-dragdrop: false;
+$include-ext-dd-dragdropmanager: false;
+$include-ext-dd-dragsource: false;
+$include-ext-dd-dragtracker: false;
+$include-ext-dd-dragzone: false;
+$include-ext-dd-droptarget: false;
+$include-ext-dd-dropzone: false;
+$include-ext-dd-registry: false;
+$include-ext-dd-scrollmanager: false;
+$include-ext-dd-statusproxy: false;
+$include-ext-direct-event: false;
+$include-ext-direct-exceptionevent: false;
+$include-ext-direct-jsonprovider: false;
+$include-ext-direct-manager: false;
+$include-ext-direct-pollingprovider: false;
+$include-ext-direct-provider: false;
+$include-ext-direct-remotingevent: false;
+$include-ext-direct-remotingmethod: false;
+$include-ext-direct-remotingprovider: false;
+$include-ext-direct-transaction: false;
+$include-ext-dom-buttonelement: false;
+$include-ext-dom-compositeelement: false;
+$include-ext-dom-compositeelementlite: false;
+$include-ext-dom-element: false;
+$include-ext-dom-elementevent: false;
+$include-ext-dom-fly: false;
+$include-ext-dom-garbagecollector: false;
+$include-ext-dom-helper: false;
+$include-ext-dom-layer: false;
+$include-ext-dom-query: false;
+$include-ext-dom-shadow: false;
+$include-ext-dom-shim: false;
+$include-ext-dom-underlay: false;
+$include-ext-dom-underlaypool: false;
+$include-ext-draw-color: true;
+$include-ext-draw-component: true;
+$include-ext-draw-compositesprite: true;
+$include-ext-draw-draw: true;
+$include-ext-draw-matrix: true;
+$include-ext-draw-sprite: true;
+$include-ext-draw-spritedd: true;
+$include-ext-draw-surface: true;
+$include-ext-draw-text: true;
+$include-ext-draw-engine-imageexporter: true;
+$include-ext-draw-engine-svg: true;
+$include-ext-draw-engine-svgexporter: true;
+$include-ext-draw-engine-vml: true;
+$include-ext-draw-layout-component: true;
+$include-ext-event-event: false;
+$include-ext-event-gesture-doubletap: false;
+$include-ext-event-gesture-drag: false;
+$include-ext-event-gesture-edgeswipe: false;
+$include-ext-event-gesture-longpress: false;
+$include-ext-event-gesture-multitouch: false;
+$include-ext-event-gesture-pinch: false;
+$include-ext-event-gesture-recognizer: false;
+$include-ext-event-gesture-rotate: false;
+$include-ext-event-gesture-singletouch: false;
+$include-ext-event-gesture-swipe: false;
+$include-ext-event-gesture-tap: false;
+$include-ext-event-publisher-dom: false;
+$include-ext-event-publisher-elementpaint: false;
+$include-ext-event-publisher-elementsize: false;
+$include-ext-event-publisher-focus: false;
+$include-ext-event-publisher-gesture: false;
+$include-ext-event-publisher-mouseenterleave: false;
+$include-ext-event-publisher-publisher: false;
+$include-ext-flash-component: false;
+$include-ext-form-basic: false;
+$include-ext-form-checkboxgroup: false;
+$include-ext-form-checkboxmanager: false;
+$include-ext-form-fieldancestor: false;
+$include-ext-form-fieldcontainer: false;
+$include-ext-form-fieldset: false;
+$include-ext-form-label: false;
+$include-ext-form-labelable: false;
+$include-ext-form-panel: false;
+$include-ext-form-radiogroup: false;
+$include-ext-form-radiomanager: false;
+$include-ext-form-action-action: false;
+$include-ext-form-action-directaction: false;
+$include-ext-form-action-directload: false;
+$include-ext-form-action-directsubmit: false;
+$include-ext-form-action-load: false;
+$include-ext-form-action-standardsubmit: false;
+$include-ext-form-action-submit: false;
+$include-ext-form-field-base: false;
+$include-ext-form-field-checkbox: false;
+$include-ext-form-field-combobox: false;
+$include-ext-form-field-date: false;
+$include-ext-form-field-display: false;
+$include-ext-form-field-field: false;
+$include-ext-form-field-file: false;
+$include-ext-form-field-filebutton: false;
+$include-ext-form-field-hidden: false;
+$include-ext-form-field-htmleditor: false;
+$include-ext-form-field-number: false;
+$include-ext-form-field-picker: false;
+$include-ext-form-field-radio: false;
+$include-ext-form-field-spinner: false;
+$include-ext-form-field-tag: false;
+$include-ext-form-field-text: false;
+$include-ext-form-field-textarea: false;
+$include-ext-form-field-time: false;
+$include-ext-form-field-trigger: false;
+$include-ext-form-field-vtypes: false;
+$include-ext-form-trigger-component: false;
+$include-ext-form-trigger-spinner: false;
+$include-ext-form-trigger-trigger: false;
+$include-ext-fx-anim: false;
+$include-ext-fx-animation: false;
+$include-ext-fx-animator: false;
+$include-ext-fx-cubicbezier: false;
+$include-ext-fx-drawpath: false;
+$include-ext-fx-easing: false;
+$include-ext-fx-manager: false;
+$include-ext-fx-propertyhandler: false;
+$include-ext-fx-queue: false;
+$include-ext-fx-runner: false;
+$include-ext-fx-state: false;
+$include-ext-fx-animation-abstract: false;
+$include-ext-fx-animation-cube: false;
+$include-ext-fx-animation-fade: false;
+$include-ext-fx-animation-fadeout: false;
+$include-ext-fx-animation-flip: false;
+$include-ext-fx-animation-pop: false;
+$include-ext-fx-animation-popout: false;
+$include-ext-fx-animation-slide: false;
+$include-ext-fx-animation-slideout: false;
+$include-ext-fx-animation-wipe: false;
+$include-ext-fx-animation-wipeout: false;
+$include-ext-fx-easing-abstract: false;
+$include-ext-fx-easing-bounce: false;
+$include-ext-fx-easing-boundmomentum: false;
+$include-ext-fx-easing-easein: false;
+$include-ext-fx-easing-easeout: false;
+$include-ext-fx-easing-easing: false;
+$include-ext-fx-easing-linear: false;
+$include-ext-fx-easing-momentum: false;
+$include-ext-fx-layout-card: false;
+$include-ext-fx-layout-card-abstract: false;
+$include-ext-fx-layout-card-cover: false;
+$include-ext-fx-layout-card-cube: false;
+$include-ext-fx-layout-card-fade: false;
+$include-ext-fx-layout-card-flip: false;
+$include-ext-fx-layout-card-pop: false;
+$include-ext-fx-layout-card-reveal: false;
+$include-ext-fx-layout-card-scroll: false;
+$include-ext-fx-layout-card-scrollcover: false;
+$include-ext-fx-layout-card-scrollreveal: false;
+$include-ext-fx-layout-card-slide: false;
+$include-ext-fx-layout-card-style: false;
+$include-ext-fx-runner-css: false;
+$include-ext-fx-runner-cssanimation: false;
+$include-ext-fx-runner-csstransition: false;
+$include-ext-fx-target-component: false;
+$include-ext-fx-target-compositeelement: false;
+$include-ext-fx-target-compositeelementcss: false;
+$include-ext-fx-target-compositesprite: false;
+$include-ext-fx-target-element: false;
+$include-ext-fx-target-elementcss: false;
+$include-ext-fx-target-sprite: false;
+$include-ext-fx-target-target: false;
+$include-ext-grid-cellcontext: false;
+$include-ext-grid-celleditor: false;
+$include-ext-grid-columncomponentlayout: false;
+$include-ext-grid-columnlayout: false;
+$include-ext-grid-columnmanager: false;
+$include-ext-grid-navigationmodel: false;
+$include-ext-grid-panel: false;
+$include-ext-grid-roweditor: false;
+$include-ext-grid-roweditorbuttons: false;
+$include-ext-grid-viewdropzone: false;
+$include-ext-grid-column-action: false;
+$include-ext-grid-column-boolean: false;
+$include-ext-grid-column-check: false;
+$include-ext-grid-column-column: false;
+$include-ext-grid-column-date: false;
+$include-ext-grid-column-number: false;
+$include-ext-grid-column-rownumberer: false;
+$include-ext-grid-column-template: false;
+$include-ext-grid-column-widget: false;
+$include-ext-grid-feature-abstractsummary: false;
+$include-ext-grid-feature-feature: false;
+$include-ext-grid-feature-groupstore: false;
+$include-ext-grid-feature-grouping: false;
+$include-ext-grid-feature-groupingsummary: false;
+$include-ext-grid-feature-rowbody: false;
+$include-ext-grid-feature-summary: false;
+$include-ext-grid-filters-filters: false;
+$include-ext-grid-filters-filter-base: false;
+$include-ext-grid-filters-filter-boolean: false;
+$include-ext-grid-filters-filter-date: false;
+$include-ext-grid-filters-filter-list: false;
+$include-ext-grid-filters-filter-number: false;
+$include-ext-grid-filters-filter-singlefilter: false;
+$include-ext-grid-filters-filter-string: false;
+$include-ext-grid-filters-filter-trifilter: false;
+$include-ext-grid-header-container: false;
+$include-ext-grid-header-dragzone: false;
+$include-ext-grid-header-dropzone: false;
+$include-ext-grid-locking-headercontainer: false;
+$include-ext-grid-locking-lockable: false;
+$include-ext-grid-locking-rowsynchronizer: false;
+$include-ext-grid-locking-view: false;
+$include-ext-grid-plugin-bufferedrenderer: false;
+$include-ext-grid-plugin-cellediting: false;
+$include-ext-grid-plugin-clipboard: false;
+$include-ext-grid-plugin-dragdrop: false;
+$include-ext-grid-plugin-editing: false;
+$include-ext-grid-plugin-headerreorderer: false;
+$include-ext-grid-plugin-headerresizer: false;
+$include-ext-grid-plugin-rowediting: false;
+$include-ext-grid-plugin-rowexpander: false;
+$include-ext-grid-property-grid: false;
+$include-ext-grid-property-headercontainer: false;
+$include-ext-grid-property-property: false;
+$include-ext-grid-property-reader: false;
+$include-ext-grid-property-store: false;
+$include-ext-grid-selection-cells: false;
+$include-ext-grid-selection-columns: false;
+$include-ext-grid-selection-rows: false;
+$include-ext-grid-selection-selection: false;
+$include-ext-grid-selection-spreadsheetmodel: false;
+$include-ext-layout-context: false;
+$include-ext-layout-contextitem: false;
+$include-ext-layout-layout: false;
+$include-ext-layout-sizemodel: false;
+$include-ext-layout-component-auto: false;
+$include-ext-layout-component-body: false;
+$include-ext-layout-component-boundlist: false;
+$include-ext-layout-component-component: false;
+$include-ext-layout-component-dock: false;
+$include-ext-layout-component-fieldset: false;
+$include-ext-layout-component-progressbar: false;
+$include-ext-layout-component-field-fieldcontainer: false;
+$include-ext-layout-component-field-htmleditor: false;
+$include-ext-layout-container-absolute: false;
+$include-ext-layout-container-accordion: false;
+$include-ext-layout-container-anchor: false;
+$include-ext-layout-container-auto: false;
+$include-ext-layout-container-border: false;
+$include-ext-layout-container-box: false;
+$include-ext-layout-container-card: false;
+$include-ext-layout-container-center: false;
+$include-ext-layout-container-checkboxgroup: false;
+$include-ext-layout-container-column: false;
+$include-ext-layout-container-columnsplitter: false;
+$include-ext-layout-container-columnsplittertracker: false;
+$include-ext-layout-container-container: false;
+$include-ext-layout-container-dashboard: false;
+$include-ext-layout-container-editor: false;
+$include-ext-layout-container-fit: false;
+$include-ext-layout-container-form: false;
+$include-ext-layout-container-hbox: false;
+$include-ext-layout-container-segmentedbutton: false;
+$include-ext-layout-container-table: false;
+$include-ext-layout-container-vbox: false;
+$include-ext-layout-container-border-region: false;
+$include-ext-layout-container-boxoverflow-menu: false;
+$include-ext-layout-container-boxoverflow-none: false;
+$include-ext-layout-container-boxoverflow-scroller: false;
+$include-ext-menu-checkitem: false;
+$include-ext-menu-colorpicker: false;
+$include-ext-menu-datepicker: false;
+$include-ext-menu-item: false;
+$include-ext-menu-manager: false;
+$include-ext-menu-menu: false;
+$include-ext-menu-separator: false;
+$include-ext-mixin-bindable: false;
+$include-ext-mixin-factoryable: false;
+$include-ext-mixin-hookable: false;
+$include-ext-mixin-identifiable: false;
+$include-ext-mixin-inheritable: false;
+$include-ext-mixin-mashup: false;
+$include-ext-mixin-observable: false;
+$include-ext-mixin-queryable: false;
+$include-ext-mixin-responsive: false;
+$include-ext-mixin-selectable: false;
+$include-ext-mixin-templatable: false;
+$include-ext-mixin-traversable: false;
+$include-ext-overrides-globalevents: false;
+$include-ext-overrides-widget: false;
+$include-ext-overrides-app-application: false;
+$include-ext-overrides-app-domain-component: false;
+$include-ext-overrides-dom-element: false;
+$include-ext-overrides-dom-helper: false;
+$include-ext-overrides-event-event: false;
+$include-ext-overrides-event-publisher-dom: false;
+$include-ext-overrides-event-publisher-gesture: false;
+$include-ext-overrides-plugin-abstract: false;
+$include-ext-overrides-util-positionable: false;
+$include-ext-panel-bar: false;
+$include-ext-panel-dd: false;
+$include-ext-panel-header: false;
+$include-ext-panel-panel: false;
+$include-ext-panel-pinnable: false;
+$include-ext-panel-proxy: false;
+$include-ext-panel-table: false;
+$include-ext-panel-title: false;
+$include-ext-panel-tool: false;
+$include-ext-perf-accumulator: false;
+$include-ext-perf-monitor: false;
+$include-ext-picker-color: false;
+$include-ext-picker-date: false;
+$include-ext-picker-month: false;
+$include-ext-picker-time: false;
+$include-ext-plugin-abstract: false;
+$include-ext-plugin-abstractclipboard: false;
+$include-ext-plugin-manager: false;
+$include-ext-plugin-responsive: false;
+$include-ext-plugin-viewport: false;
+$include-ext-resizer-bordersplitter: false;
+$include-ext-resizer-bordersplittertracker: false;
+$include-ext-resizer-handle: false;
+$include-ext-resizer-resizetracker: false;
+$include-ext-resizer-resizer: false;
+$include-ext-resizer-splitter: false;
+$include-ext-resizer-splittertracker: false;
+$include-ext-rtl-component: false;
+$include-ext-rtl-button-button: false;
+$include-ext-rtl-button-segmented: false;
+$include-ext-rtl-chart-chart: true;
+$include-ext-rtl-chart-legend: true;
+$include-ext-rtl-chart-legenditem: true;
+$include-ext-rtl-chart-axis-axis: true;
+$include-ext-rtl-chart-axis-gauge: true;
+$include-ext-rtl-chart-series-cartesian: true;
+$include-ext-rtl-chart-series-gauge: true;
+$include-ext-rtl-dd-dd: false;
+$include-ext-rtl-dom-element: false;
+$include-ext-rtl-draw-component: true;
+$include-ext-rtl-draw-sprite: true;
+$include-ext-rtl-event-event: false;
+$include-ext-rtl-form-labelable: false;
+$include-ext-rtl-form-field-file: false;
+$include-ext-rtl-form-field-filebutton: false;
+$include-ext-rtl-grid-celleditor: false;
+$include-ext-rtl-grid-columnlayout: false;
+$include-ext-rtl-grid-navigationmodel: false;
+$include-ext-rtl-grid-column-column: false;
+$include-ext-rtl-grid-feature-summary: false;
+$include-ext-rtl-grid-plugin-headerresizer: false;
+$include-ext-rtl-grid-plugin-rowediting: false;
+$include-ext-rtl-layout-contextitem: false;
+$include-ext-rtl-layout-component-dock: false;
+$include-ext-rtl-layout-container-absolute: false;
+$include-ext-rtl-layout-container-border: false;
+$include-ext-rtl-layout-container-box: false;
+$include-ext-rtl-layout-container-column: false;
+$include-ext-rtl-layout-container-hbox: false;
+$include-ext-rtl-layout-container-vbox: false;
+$include-ext-rtl-layout-container-boxoverflow-menu: false;
+$include-ext-rtl-layout-container-boxoverflow-scroller: false;
+$include-ext-rtl-panel-bar: false;
+$include-ext-rtl-panel-panel: false;
+$include-ext-rtl-panel-title: false;
+$include-ext-rtl-resizer-bordersplittertracker: false;
+$include-ext-rtl-resizer-resizetracker: false;
+$include-ext-rtl-resizer-splittertracker: false;
+$include-ext-rtl-scroll-domscroller: false;
+$include-ext-rtl-scroll-indicator: false;
+$include-ext-rtl-scroll-scroller: false;
+$include-ext-rtl-scroll-touchscroller: false;
+$include-ext-rtl-slider-multi: false;
+$include-ext-rtl-tab-bar: false;
+$include-ext-rtl-tip-quicktipmanager: false;
+$include-ext-rtl-tree-column: false;
+$include-ext-rtl-util-focusablecontainer: false;
+$include-ext-rtl-util-renderable: false;
+$include-ext-rtl-view-navigationmodel: false;
+$include-ext-rtl-view-table: false;
+$include-ext-scroll-domscroller: false;
+$include-ext-scroll-indicator: false;
+$include-ext-scroll-scroller: false;
+$include-ext-scroll-touchscroller: false;
+$include-ext-selection-cellmodel: false;
+$include-ext-selection-checkboxmodel: false;
+$include-ext-selection-dataviewmodel: false;
+$include-ext-selection-model: false;
+$include-ext-selection-rowmodel: false;
+$include-ext-selection-treemodel: false;
+$include-ext-slider-multi: false;
+$include-ext-slider-single: false;
+$include-ext-slider-thumb: false;
+$include-ext-slider-tip: false;
+$include-ext-slider-widget: false;
+$include-ext-sparkline-bar: false;
+$include-ext-sparkline-barbase: false;
+$include-ext-sparkline-base: false;
+$include-ext-sparkline-box: false;
+$include-ext-sparkline-bullet: false;
+$include-ext-sparkline-canvasbase: false;
+$include-ext-sparkline-canvascanvas: false;
+$include-ext-sparkline-discrete: false;
+$include-ext-sparkline-line: false;
+$include-ext-sparkline-pie: false;
+$include-ext-sparkline-rangemap: false;
+$include-ext-sparkline-shape: false;
+$include-ext-sparkline-tristate: false;
+$include-ext-sparkline-vmlcanvas: false;
+$include-ext-state-cookieprovider: false;
+$include-ext-state-localstorageprovider: false;
+$include-ext-state-manager: false;
+$include-ext-state-provider: false;
+$include-ext-state-stateful: false;
+$include-ext-tab-bar: false;
+$include-ext-tab-panel: false;
+$include-ext-tab-tab: false;
+$include-ext-tip-quicktip: false;
+$include-ext-tip-quicktipmanager: false;
+$include-ext-tip-tip: false;
+$include-ext-tip-tooltip: false;
+$include-ext-toolbar-breadcrumb: false;
+$include-ext-toolbar-fill: false;
+$include-ext-toolbar-item: false;
+$include-ext-toolbar-paging: false;
+$include-ext-toolbar-separator: false;
+$include-ext-toolbar-spacer: false;
+$include-ext-toolbar-textitem: false;
+$include-ext-toolbar-toolbar: false;
+$include-ext-tree-column: false;
+$include-ext-tree-navigationmodel: false;
+$include-ext-tree-panel: false;
+$include-ext-tree-view: false;
+$include-ext-tree-viewdragzone: false;
+$include-ext-tree-viewdropzone: false;
+$include-ext-tree-plugin-treeviewdragdrop: false;
+$include-ext-util-abstractmixedcollection: false;
+$include-ext-util-animate: false;
+$include-ext-util-base64: false;
+$include-ext-util-css: false;
+$include-ext-util-csv: false;
+$include-ext-util-clickrepeater: false;
+$include-ext-util-collection: false;
+$include-ext-util-collectionkey: false;
+$include-ext-util-componentdragger: false;
+$include-ext-util-cookies: false;
+$include-ext-util-delimitedvalue: false;
+$include-ext-util-elementcontainer: false;
+$include-ext-util-event: false;
+$include-ext-util-filter: false;
+$include-ext-util-filtercollection: false;
+$include-ext-util-floating: false;
+$include-ext-util-focusable: false;
+$include-ext-util-focusablecontainer: false;
+$include-ext-util-format: false;
+$include-ext-util-group: false;
+$include-ext-util-groupcollection: false;
+$include-ext-util-grouper: false;
+$include-ext-util-hashmap: false;
+$include-ext-util-history: false;
+$include-ext-util-inflector: false;
+$include-ext-util-keymap: false;
+$include-ext-util-keynav: false;
+$include-ext-util-localstorage: false;
+$include-ext-util-lrucache: false;
+$include-ext-util-memento: false;
+$include-ext-util-mixedcollection: false;
+$include-ext-util-objecttemplate: false;
+$include-ext-util-observable: false;
+$include-ext-util-offset: false;
+$include-ext-util-paintmonitor: false;
+$include-ext-util-point: false;
+$include-ext-util-positionable: false;
+$include-ext-util-protoelement: false;
+$include-ext-util-queue: false;
+$include-ext-util-region: false;
+$include-ext-util-renderable: false;
+$include-ext-util-schedulable: false;
+$include-ext-util-scheduler: false;
+$include-ext-util-sizemonitor: false;
+$include-ext-util-sortable: false;
+$include-ext-util-sorter: false;
+$include-ext-util-sortercollection: false;
+$include-ext-util-storeholder: false;
+$include-ext-util-tsv: false;
+$include-ext-util-taskmanager: false;
+$include-ext-util-taskrunner: false;
+$include-ext-util-textmetrics: false;
+$include-ext-util-translatable: false;
+$include-ext-util-xtemplatecompiler: false;
+$include-ext-util-xtemplateparser: false;
+$include-ext-util-paintmonitor-abstract: false;
+$include-ext-util-paintmonitor-cssanimation: false;
+$include-ext-util-paintmonitor-overflowchange: false;
+$include-ext-util-sizemonitor-abstract: false;
+$include-ext-util-sizemonitor-default: false;
+$include-ext-util-sizemonitor-overflowchange: false;
+$include-ext-util-sizemonitor-scroll: false;
+$include-ext-util-translatable-abstract: false;
+$include-ext-util-translatable-cssposition: false;
+$include-ext-util-translatable-csstransform: false;
+$include-ext-util-translatable-dom: false;
+$include-ext-util-translatable-scrollparent: false;
+$include-ext-util-translatable-scrollposition: false;
+$include-ext-view-abstractview: false;
+$include-ext-view-boundlist: false;
+$include-ext-view-boundlistkeynav: false;
+$include-ext-view-dragzone: false;
+$include-ext-view-dropzone: false;
+$include-ext-view-multiselector: false;
+$include-ext-view-multiselectorsearch: false;
+$include-ext-view-navigationmodel: false;
+$include-ext-view-nodecache: false;
+$include-ext-view-table: false;
+$include-ext-view-tablelayout: false;
+$include-ext-view-view: false;
+$include-ext-window-messagebox: false;
+$include-ext-window-toast: false;
+$include-ext-window-window: false;
+/* including package ext-theme-base */
+@import '../../ext-theme-base/sass/etc/all';
+/* including package ext-theme-base */
+@import '../../ext-theme-base/sass/var/Component';
+/* including package ext-charts */
+$ext-charts-resource-path: 'images' !default;
+$relative-image-path-for-uis: $ext-charts-resource-path;
+@import '../sass/src/draw/Component';

文件差异内容过多而无法显示
+ 19855 - 0
src/ext/packages/ext-charts/build/ext-charts-debug.js


文件差异内容过多而无法显示
+ 1 - 0
src/ext/packages/ext-charts/build/ext-charts.js


+ 262 - 0
src/ext/packages/ext-charts/build/resources/ext-charts-all-debug.css

@@ -0,0 +1,262 @@
+/* including package ext-theme-base */
+/**
+ * Creates a background gradient.
+ *
+ * Example usage:
+ *     .foo {
+ *          @include background-gradient(#808080, matte, left);
+ *     }
+ *
+ * @param {Color} $bg-color The background color of the gradient
+ * @param {String/List} [$type=$base-gradient] The type of gradient to be used. Can either
+ * be a String which is a predefined gradient name, or it can can be a list of color stops.
+ * If null is passed, this mixin will still set the `background-color` to $bg-color.
+ * The available predefined gradient names are:
+ *
+ * * bevel
+ * * glossy
+ * * recessed
+ * * matte
+ * * matte-reverse
+ * * panel-header
+ * * tabbar
+ * * tab
+ * * tab-active
+ * * tab-over
+ * * tab-disabled
+ * * grid-header
+ * * grid-header-over
+ * * grid-row-over
+ * * grid-cell-special
+ * * glossy-button
+ * * glossy-button-over
+ * * glossy-button-pressed
+ *
+ * Each of these gradient names corresponds to a function named linear-gradient[name].
+ * Themes can override these functions to customize the color stops that they return.
+ * For example, to override the glossy-button gradient function add a function named
+ * "linear-gradient-glossy-button" to a file named "sass/etc/mixins/background-gradient.scss"
+ * in your theme.  The function should return the result of calling the Compass linear-gradient
+ * function with the desired direction and color-stop information for the gradient.  For example:
+ *
+ *     @function linear-gradient-glossy-button($direction, $bg-color) {
+ *         @return linear-gradient($direction, color_stops(
+ *             mix(#fff, $bg-color, 10%),
+ *             $bg-color 50%,
+ *             mix(#000, $bg-color, 5%) 51%,
+ *             $bg-color
+ *         ));
+ *     }
+ *
+ * @param {String} [$direction=top] The direction of the gradient. Can either be
+ * `top` or `left`.
+ *
+ * @member Global_CSS
+ */
+/*
+ * Method which inserts a full background-image property for a theme image.
+ * It checks if the file exists and if it doesn't, it'll throw an error.
+ * By default it will not include the background-image property if it is not found,
+ * but this can be changed by changing the default value of $include-missing-images to
+ * be true.
+ */
+/**
+ * Includes a google webfont for use in your theme.
+ * @param {string} $font-name The name of the font.  If the font name contains spaces
+ * use "+" instead of space.
+ * @param {string} [$font-weights=400] Comma-separated list of font weights to include.
+ *
+ * Example usage:
+ *
+ *     @include google-webfont(
+ *         $font-name: Exo,
+ *         $font-weights: 200 300 400
+ *     );
+ *
+ * Outputs:
+ *
+ *     @import url(http://fonts.googleapis.com/css?family=Exo:200,300,400);
+ *
+ * @member Global_CSS
+ */
+/* including package ext-theme-base */
+/**
+ * @class Global_CSS
+ */
+/**
+ * @var {string} $prefix
+ * The prefix to be applied to all CSS selectors. If this is changed, it must also be changed in your
+ * JavaScript application.
+ */
+/**
+ * @var {boolean/string} $relative-image-path-for-uis
+ * True to use a relative image path for all new UIs. If true, the path will be "../images/".
+ * It can also be a string of the path value.
+ * It defaults to false, which means it will look for the images in the ExtJS SDK folder.
+ */
+/**
+ * @var {boolean} $include-not-found-images
+ * True to include files which are not found when compiling your SASS
+ */
+/**
+ * @var {boolean} $include-ie
+ * True to include Internet Explorer specific rules for IE9 and lower.  IE10 and up are
+ * considered to be "modern" browsers, and as such do not need any of the CSS hacks required
+ * for IE9 and below.  Setting this property to false will result in a significantly smaller
+ * CSS file size, and may also result in a slight performance improvement, because the
+ * browser will have fewer rules to process.
+ */
+/**
+ * @var {boolean} $include-ff
+ * True to include Firefox specific rules
+ */
+/**
+ * @var {boolean} $include-opera
+ * True to include Opera specific rules
+ */
+/**
+ * @var {boolean} $include-webkit
+ * True to include Webkit specific rules
+ */
+/**
+ * @var {boolean} $include-safari
+ * True to include Safari specific rules
+ */
+/**
+ * @var {boolean} $include-chrome
+ * True to include Chrome specific rules
+ */
+/**
+ * @var {boolean} $include-slicer-border-radius
+ * True to include rules for rounded corners produced by the slicer.  Enables emulation
+ * of CSS3 border-radius in browsers that do not support it.
+ */
+/**
+ * @var {boolean} $include-slicer-gradient
+ * True to include rules for background gradients produced by the slicer.  Enables emulation
+ * of CSS3 background-gradient in browsers that do not support it.
+ */
+/**
+ * @var {number} $css-shadow-border-radius
+ * The border radius for CSS shadows
+ */
+/**
+ * @var {string} $image-extension
+ * default file extension to use for images (defaults to 'png').
+ */
+/**
+ * @var {string} $slicer-image-extension
+ * default file extension to use for slicer images (defaults to 'gif').
+ */
+/**
+ * Default search path for images
+ */
+/**
+ * @var {boolean}
+ * True to include the default UI for each component.
+ */
+/**
+ * @var {boolean}
+ * True to add font-smoothing styles to all components
+ */
+/**
+ * @var {string}
+ * The base path relative to the CSS output directory to use for theme resources.  For example
+ * if the theme's images live one directory up from the generated CSS output in a directory
+ * named 'foo/images/', you would need to set this variable to '../foo/' in order for the image
+ * paths in the CSS output to be generated correctly. By default this is the same as the
+ * CSS output directory.
+ */
+/**
+ * @private
+ * Flag to ensure GridField rules only get set once
+ */
+/* including package ext-charts */
+/* line 1, ../../sass/src/draw/Component.scss */
+.x-hide-visibility {
+  visibility: hidden !important;
+}
+
+/* line 5, ../../sass/src/draw/Component.scss */
+.x-hide-display {
+  display: none !important;
+}
+
+/* line 9, ../../sass/src/draw/Component.scss */
+.x-surface {
+  display: -moz-inline-stack;
+  display: inline-block;
+  vertical-align: middle;
+  *vertical-align: auto;
+  zoom: 1;
+  *display: inline;
+  overflow: hidden;
+}
+
+/* line 14, ../../sass/src/draw/Component.scss */
+.rvml {
+  behavior: url(#default#VML);
+}
+
+/* line 18, ../../sass/src/draw/Component.scss */
+.x-surface tspan {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+  -webkit-user-drag: none;
+  cursor: default;
+}
+
+/* line 22, ../../sass/src/draw/Component.scss */
+.x-vml-sprite {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px;
+}
+
+/* line 30, ../../sass/src/draw/Component.scss */
+.x-vml-group {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1000px;
+  height: 1000px;
+}
+
+/* line 38, ../../sass/src/draw/Component.scss */
+.x-vml-measure-span {
+  position: absolute;
+  left: -9999em;
+  top: -9999em;
+  padding: 0;
+  margin: 0;
+  display: inline;
+}
+
+/* line 47, ../../sass/src/draw/Component.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block;
+}
+
+/* line 55, ../../sass/src/draw/Component.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block;
+}
+
+/* line 63, ../../sass/src/draw/Component.scss */
+svg, vml {
+  overflow: hidden;
+}

+ 262 - 0
src/ext/packages/ext-charts/build/resources/ext-charts-all-rtl-debug.css

@@ -0,0 +1,262 @@
+/* including package ext-theme-base */
+/**
+ * Creates a background gradient.
+ *
+ * Example usage:
+ *     .foo {
+ *          @include background-gradient(#808080, matte, left);
+ *     }
+ *
+ * @param {Color} $bg-color The background color of the gradient
+ * @param {String/List} [$type=$base-gradient] The type of gradient to be used. Can either
+ * be a String which is a predefined gradient name, or it can can be a list of color stops.
+ * If null is passed, this mixin will still set the `background-color` to $bg-color.
+ * The available predefined gradient names are:
+ *
+ * * bevel
+ * * glossy
+ * * recessed
+ * * matte
+ * * matte-reverse
+ * * panel-header
+ * * tabbar
+ * * tab
+ * * tab-active
+ * * tab-over
+ * * tab-disabled
+ * * grid-header
+ * * grid-header-over
+ * * grid-row-over
+ * * grid-cell-special
+ * * glossy-button
+ * * glossy-button-over
+ * * glossy-button-pressed
+ *
+ * Each of these gradient names corresponds to a function named linear-gradient[name].
+ * Themes can override these functions to customize the color stops that they return.
+ * For example, to override the glossy-button gradient function add a function named
+ * "linear-gradient-glossy-button" to a file named "sass/etc/mixins/background-gradient.scss"
+ * in your theme.  The function should return the result of calling the Compass linear-gradient
+ * function with the desired direction and color-stop information for the gradient.  For example:
+ *
+ *     @function linear-gradient-glossy-button($direction, $bg-color) {
+ *         @return linear-gradient($direction, color_stops(
+ *             mix(#fff, $bg-color, 10%),
+ *             $bg-color 50%,
+ *             mix(#000, $bg-color, 5%) 51%,
+ *             $bg-color
+ *         ));
+ *     }
+ *
+ * @param {String} [$direction=top] The direction of the gradient. Can either be
+ * `top` or `left`.
+ *
+ * @member Global_CSS
+ */
+/*
+ * Method which inserts a full background-image property for a theme image.
+ * It checks if the file exists and if it doesn't, it'll throw an error.
+ * By default it will not include the background-image property if it is not found,
+ * but this can be changed by changing the default value of $include-missing-images to
+ * be true.
+ */
+/**
+ * Includes a google webfont for use in your theme.
+ * @param {string} $font-name The name of the font.  If the font name contains spaces
+ * use "+" instead of space.
+ * @param {string} [$font-weights=400] Comma-separated list of font weights to include.
+ *
+ * Example usage:
+ *
+ *     @include google-webfont(
+ *         $font-name: Exo,
+ *         $font-weights: 200 300 400
+ *     );
+ *
+ * Outputs:
+ *
+ *     @import url(http://fonts.googleapis.com/css?family=Exo:200,300,400);
+ *
+ * @member Global_CSS
+ */
+/* including package ext-theme-base */
+/**
+ * @class Global_CSS
+ */
+/**
+ * @var {string} $prefix
+ * The prefix to be applied to all CSS selectors. If this is changed, it must also be changed in your
+ * JavaScript application.
+ */
+/**
+ * @var {boolean/string} $relative-image-path-for-uis
+ * True to use a relative image path for all new UIs. If true, the path will be "../images/".
+ * It can also be a string of the path value.
+ * It defaults to false, which means it will look for the images in the ExtJS SDK folder.
+ */
+/**
+ * @var {boolean} $include-not-found-images
+ * True to include files which are not found when compiling your SASS
+ */
+/**
+ * @var {boolean} $include-ie
+ * True to include Internet Explorer specific rules for IE9 and lower.  IE10 and up are
+ * considered to be "modern" browsers, and as such do not need any of the CSS hacks required
+ * for IE9 and below.  Setting this property to false will result in a significantly smaller
+ * CSS file size, and may also result in a slight performance improvement, because the
+ * browser will have fewer rules to process.
+ */
+/**
+ * @var {boolean} $include-ff
+ * True to include Firefox specific rules
+ */
+/**
+ * @var {boolean} $include-opera
+ * True to include Opera specific rules
+ */
+/**
+ * @var {boolean} $include-webkit
+ * True to include Webkit specific rules
+ */
+/**
+ * @var {boolean} $include-safari
+ * True to include Safari specific rules
+ */
+/**
+ * @var {boolean} $include-chrome
+ * True to include Chrome specific rules
+ */
+/**
+ * @var {boolean} $include-slicer-border-radius
+ * True to include rules for rounded corners produced by the slicer.  Enables emulation
+ * of CSS3 border-radius in browsers that do not support it.
+ */
+/**
+ * @var {boolean} $include-slicer-gradient
+ * True to include rules for background gradients produced by the slicer.  Enables emulation
+ * of CSS3 background-gradient in browsers that do not support it.
+ */
+/**
+ * @var {number} $css-shadow-border-radius
+ * The border radius for CSS shadows
+ */
+/**
+ * @var {string} $image-extension
+ * default file extension to use for images (defaults to 'png').
+ */
+/**
+ * @var {string} $slicer-image-extension
+ * default file extension to use for slicer images (defaults to 'gif').
+ */
+/**
+ * Default search path for images
+ */
+/**
+ * @var {boolean}
+ * True to include the default UI for each component.
+ */
+/**
+ * @var {boolean}
+ * True to add font-smoothing styles to all components
+ */
+/**
+ * @var {string}
+ * The base path relative to the CSS output directory to use for theme resources.  For example
+ * if the theme's images live one directory up from the generated CSS output in a directory
+ * named 'foo/images/', you would need to set this variable to '../foo/' in order for the image
+ * paths in the CSS output to be generated correctly. By default this is the same as the
+ * CSS output directory.
+ */
+/**
+ * @private
+ * Flag to ensure GridField rules only get set once
+ */
+/* including package ext-charts */
+/* line 1, ../../sass/src/draw/Component.scss */
+.x-hide-visibility {
+  visibility: hidden !important;
+}
+
+/* line 5, ../../sass/src/draw/Component.scss */
+.x-hide-display {
+  display: none !important;
+}
+
+/* line 9, ../../sass/src/draw/Component.scss */
+.x-surface {
+  display: -moz-inline-stack;
+  display: inline-block;
+  vertical-align: middle;
+  *vertical-align: auto;
+  zoom: 1;
+  *display: inline;
+  overflow: hidden;
+}
+
+/* line 14, ../../sass/src/draw/Component.scss */
+.rvml {
+  behavior: url(#default#VML);
+}
+
+/* line 18, ../../sass/src/draw/Component.scss */
+.x-surface tspan {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+  -webkit-user-drag: none;
+  cursor: default;
+}
+
+/* line 22, ../../sass/src/draw/Component.scss */
+.x-vml-sprite {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px;
+}
+
+/* line 30, ../../sass/src/draw/Component.scss */
+.x-vml-group {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1000px;
+  height: 1000px;
+}
+
+/* line 38, ../../sass/src/draw/Component.scss */
+.x-vml-measure-span {
+  position: absolute;
+  left: -9999em;
+  top: -9999em;
+  padding: 0;
+  margin: 0;
+  display: inline;
+}
+
+/* line 47, ../../sass/src/draw/Component.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block;
+}
+
+/* line 55, ../../sass/src/draw/Component.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block;
+}
+
+/* line 63, ../../sass/src/draw/Component.scss */
+svg, vml {
+  overflow: hidden;
+}

文件差异内容过多而无法显示
+ 1 - 0
src/ext/packages/ext-charts/build/resources/ext-charts-all-rtl.css


文件差异内容过多而无法显示
+ 1 - 0
src/ext/packages/ext-charts/build/resources/ext-charts-all.css


+ 154 - 0
src/ext/packages/ext-locale/build/ext-locale-af-debug.js

@@ -0,0 +1,154 @@
+/**
+ * List compiled by mystix on the extjs.com forums.
+ * Thank you Mystix!
+ *
+ * Afrikaans Translations
+ * by Thys Meintjes (20 July 2007)
+ */
+Ext.onReady(function() {
+
+    if (Ext.Date) {
+        Ext.Date.monthNames = ["Januarie", "Februarie", "Maart", "April", "Mei", "Junie", "Julie", "Augustus", "September", "Oktober", "November", "Desember"];
+
+        Ext.Date.dayNames = ["Sondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrydag", "Saterdag"];
+    }
+
+    if (Ext.util && Ext.util.Format) {
+        Ext.apply(Ext.util.Format, {
+            thousandSeparator: '.',
+            decimalSeparator: ',',
+            currencySign: 'R',
+            // Sith Efrikan Rand
+            dateFormat: 'd-m-Y'
+        });
+    }
+});
+
+Ext.define("Ext.locale.af.view.View", {
+    override: "Ext.view.View",
+    emptyText: ""
+});
+
+Ext.define("Ext.locale.af.grid.plugin.DragDrop", {
+    override: "Ext.grid.plugin.DragDrop",
+    dragText: "{0} geselekteerde ry(e)"
+});
+
+Ext.define("Ext.locale.af.tab.Tab", {
+    override: "Ext.tab.Tab",
+    closeText: "Maak die oortjie toe"
+});
+
+Ext.define("Ext.locale.af.form.field.Base", {
+    override: "Ext.form.field.Base",
+    invalidText: "Die waarde in hierdie veld is foutief"
+});
+
+// changing the msg text below will affect the LoadMask
+Ext.define("Ext.locale.af.view.AbstractView", {
+    override: "Ext.view.AbstractView",
+    loadingText: "Besig om te laai..."
+});
+
+Ext.define("Ext.locale.af.picker.Date", {
+    override: "Ext.picker.Date",
+    todayText: "Vandag",
+    minText: "Hierdie datum is vroër as die minimum datum",
+    maxText: "Hierdie dataum is later as die maximum datum",
+    disabledDaysText: "",
+    disabledDatesText: "",
+    nextText: 'Volgende Maand (Beheer+Regs)',
+    prevText: 'Vorige Maand (Beheer+Links)',
+    monthYearText: "Kies 'n maand (Beheer+Op/Af volgende/vorige jaar)",
+    todayTip: "{0} (Spasie)",
+    format: "d-m-y",
+    startDay: 0
+});
+
+Ext.define("Ext.locale.af.toolbar.Paging", {
+    override: "Ext.PagingToolbar",
+    beforePageText: "Bladsy",
+    afterPageText: "van {0}",
+    firstText: "Eerste Bladsy",
+    prevText: "Vorige Bladsy",
+    nextText: "Volgende Bladsy",
+    lastText: "Laatste Bladsy",
+    refreshText: "Verfris",
+    displayMsg: "Wys {0} - {1} van {2}",
+    emptyMsg: 'Geen data om te wys nie'
+});
+
+Ext.define("Ext.locale.af.form.field.Text", {
+    override: "Ext.form.field.Text",
+    minLengthText: "Die minimum lengte van die veld is {0}",
+    maxLengthText: "Die maximum lengte van die veld is {0}",
+    blankText: "Die veld is verpligtend",
+    regexText: "",
+    emptyText: null
+});
+
+Ext.define("Ext.locale.af.form.field.Number", {
+    override: "Ext.form.field.Number",
+    minText: "Die minimum waarde vir die veld is {0}",
+    maxText: "Die maximum waarde vir die veld is {0}",
+    nanText: "{0} is nie 'n geldige waarde nie"
+});
+
+Ext.define("Ext.locale.af.form.field.Date", {
+    override: "Ext.form.field.Date",
+    disabledDaysText: "Afgeskakel",
+    disabledDatesText: "Afgeskakel",
+    minText: "Die datum in hierdie veld moet na {0} wees",
+    maxText: "Die datum in hierdie veld moet voor {0} wees",
+    invalidText: "{0} is nie 'n geldige datum nie - datumformaat is {1}",
+    format: "d/m/y",
+    altFormats: "d/m/Y|d-m-y|d-m-Y|d/m|d-m|dm|dmy|dmY|d|Y-m-d"
+});
+
+Ext.define("Ext.locale.af.form.field.ComboBox", {
+    override: "Ext.form.field.ComboBox",
+    valueNotFoundText: undefined
+}, function() {
+    Ext.apply(Ext.form.field.ComboBox.prototype.defaultListConfig, {
+        loadingText: "Besig om te laai..."
+    });
+});
+
+Ext.define("Ext.locale.af.form.field.VTypes", {
+    override: "Ext.form.field.VTypes",
+    emailText: "Hierdie veld moet 'n e-pos adres wees met die formaat 'gebruiker@domein.za'",
+    urlText: "Hierdie veld moet 'n URL wees me die formaat 'http:/'+'/www.domein.za'",
+    alphaText: 'Die veld mag alleenlik letters en _ bevat',
+    alphanumText: 'Die veld mag alleenlik letters, syfers en _ bevat'
+});
+
+Ext.define("Ext.locale.af.grid.header.Container", {
+    override: "Ext.grid.header.Container",
+    sortAscText: "Sorteer Oplopend",
+    sortDescText: "Sorteer Aflopend",
+    lockText: "Vries Kolom",
+    unlockText: "Ontvries Kolom",
+    columnsText: "Kolomme"
+});
+
+Ext.define("Ext.locale.af.grid.PropertyColumnModel", {
+    override: "Ext.grid.PropertyColumnModel",
+    nameText: "Naam",
+    valueText: "Waarde",
+    dateFormat: "Y-m-j"
+});
+
+Ext.define("Ext.locale.af.window.MessageBox", {
+    override: "Ext.window.MessageBox",
+    buttonText: {
+        ok: "OK",
+        cancel: "Kanselleer",
+        yes: "Ja",
+        no: "Nee"
+    }    
+});
+
+// This is needed until we can refactor all of the locales into individual files
+Ext.define("Ext.locale.af.Component", {	
+    override: "Ext.Component"
+});

文件差异内容过多而无法显示
+ 1 - 0
src/ext/packages/ext-locale/build/ext-locale-af.js


+ 258 - 0
src/ext/packages/ext-locale/build/ext-locale-bg-debug.js

@@ -0,0 +1,258 @@
+/**
+ * Bulgarian Translation
+ *
+ * By Георги Костадинов, Калгари, Канада
+ * 10 October 2007
+ * By Nedko Penev
+ * 26 October 2007
+ *
+ * (utf-8 encoding)
+ */
+Ext.onReady(function() {
+
+    if (Ext.Date) {
+        Ext.Date.monthNames = ["Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември"];
+
+        Ext.Date.monthNumbers = {
+            Jan: 0,
+            Feb: 1,
+            Mar: 2,
+            Apr: 3,
+            May: 4,
+            Jun: 5,
+            Jul: 6,
+            Aug: 7,
+            Sep: 8,
+            Oct: 9,
+            Nov: 10,
+            Dec: 11
+        };
+
+        Ext.Date.dayNames = ["Неделя", "Понеделник", "Вторник", "Сряда", "Четвъртък", "Петък", "Събота"];
+    }
+
+    if (Ext.util && Ext.util.Format) {
+        Ext.apply(Ext.util.Format, {
+            thousandSeparator: '.',
+            decimalSeparator: ',',
+            currencySign: '\u043b\u0432',
+            // Bulgarian Leva
+            dateFormat: 'd.m.Y'
+        });
+    }
+});
+
+Ext.define("Ext.locale.bg.view.View", {
+    override: "Ext.view.View",
+    emptyText: ""
+});
+
+Ext.define("Ext.locale.bg.grid.plugin.DragDrop", {
+    override: "Ext.grid.plugin.DragDrop",
+    dragText: "{0} избрани колони"
+});
+
+Ext.define("Ext.locale.bg.tab.Tab", {
+    override: "Ext.tab.Tab",
+    closeText: "Затвори таб"
+});
+
+Ext.define("Ext.locale.bg.form.field.Base", {
+    override: "Ext.form.field.Base",
+    invalidText: "Невалидна стойност на полето"
+});
+
+// changing the msg text below will affect the LoadMask
+Ext.define("Ext.locale.bg.view.AbstractView", {
+    override: "Ext.view.AbstractView",
+    loadingText: "Зареждане..."
+});
+
+Ext.define("Ext.locale.bg.picker.Date", {
+    override: "Ext.picker.Date",
+    todayText: "Днес",
+    minText: "Тази дата е преди минималната",
+    maxText: "Тази дата е след максималната",
+    disabledDaysText: "",
+    disabledDatesText: "",
+    nextText: 'Следващ месец (Control+Right)',
+    prevText: 'Предишен месец (Control+Left)',
+    monthYearText: 'Избери месец (Control+Up/Down за преместване по години)',
+    todayTip: "{0} (Spacebar)",
+    format: "d.m.y",
+    startDay: 1
+});
+
+Ext.define("Ext.locale.bg.picker.Month", {
+    override: "Ext.picker.Month",
+    okText: "&#160;OK&#160;",
+    cancelText: "Отмени"
+});
+
+Ext.define("Ext.locale.bg.toolbar.Paging", {
+    override: "Ext.PagingToolbar",
+    beforePageText: "Страница",
+    afterPageText: "от {0}",
+    firstText: "Първа страница",
+    prevText: "Предишна страница",
+    nextText: "Следваща страница",
+    lastText: "Последна страница",
+    refreshText: "Презареди",
+    displayMsg: "Показвайки {0} - {1} от {2}",
+    emptyMsg: 'Няма данни за показване'
+});
+
+Ext.define("Ext.locale.bg.form.field.Text", {
+    override: "Ext.form.field.Text",
+    minLengthText: "Минималната дължина на това поле е {0}",
+    maxLengthText: "Максималната дължина на това поле е {0}",
+    blankText: "Това поле е задължително",
+    regexText: "",
+    emptyText: null
+});
+
+Ext.define("Ext.locale.bg.form.field.Number", {
+    override: "Ext.form.field.Number",
+    minText: "Минималната стойност за това поле е {0}",
+    maxText: "Максималната стойност за това поле е {0}",
+    nanText: "{0} не е валидно число"
+});
+
+Ext.define("Ext.locale.bg.form.field.Date", {
+    override: "Ext.form.field.Date",
+    disabledDaysText: "Недостъпен",
+    disabledDatesText: "Недостъпен",
+    minText: "Датата в това поле трябва да е след {0}",
+    maxText: "Датата в това поле трябва да е преди {0}",
+    invalidText: "{0} не е валидна дата - трябва да бъде във формат {1}",
+    format: "d.m.y",
+    altFormats: "d.m.y|d/m/Y|d-m-y|d-m-Y|d/m|d-m|dm|dmy|dmY|d|Y-m-d"
+});
+
+Ext.define("Ext.locale.bg.form.field.ComboBox", {
+    override: "Ext.form.field.ComboBox",
+    valueNotFoundText: undefined
+}, function() {
+    Ext.apply(Ext.form.field.ComboBox.prototype.defaultListConfig, {
+        loadingText: "Зареждане..."
+    });
+});
+
+Ext.define("Ext.locale.bg.form.field.VTypes", {
+    override: "Ext.form.field.VTypes",
+    emailText: 'Това поле трябва да бъде емейл във формат "user@example.com"',
+    urlText: 'Това поле трябва да бъде URL във формат "http:/' + '/www.example.com"',
+    alphaText: 'Това поле трябва да съдържа само букви и _',
+    alphanumText: 'Това поле трябва да съдържа само букви, цифри и _'
+});
+
+Ext.define("Ext.locale.bg.form.field.HtmlEditor", {
+    override: "Ext.form.field.HtmlEditor",
+    createLinkText: 'Моля, въведете URL за връзката:'
+}, function() {
+    Ext.apply(Ext.form.field.HtmlEditor.prototype, {
+        buttonTips: {
+            bold: {
+                title: 'Bold (Ctrl+B)',
+                text: 'Удебелява избрания текст.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            italic: {
+                title: 'Italic (Ctrl+I)',
+                text: 'Прави избрания текст курсив.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            underline: {
+                title: 'Underline (Ctrl+U)',
+                text: 'Подчертава избрания текст.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            increasefontsize: {
+                title: 'Уголеми текста',
+                text: 'Уголемява размера на шрифта.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            decreasefontsize: {
+                title: 'Намали текста',
+                text: 'Намалява размера на шрифта.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            backcolor: {
+                title: 'Цвят на маркирания текст',
+                text: 'Променя фоновия цвят на избрания текст.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            forecolor: {
+                title: 'Цвят на шрифта',
+                text: 'Променя цвета на избрания текст.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifyleft: {
+                title: 'Ляво подравняване',
+                text: 'Подравнява текста на ляво.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifycenter: {
+                title: 'Центриране',
+                text: 'Центрира текста.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifyright: {
+                title: 'Дясно подравняване',
+                text: 'Подравнява текста на дясно.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            insertunorderedlist: {
+                title: 'Неномериран списък',
+                text: 'Започва неномериран списък.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            insertorderedlist: {
+                title: 'Номериран списък',
+                text: 'Започва номериран списък.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            createlink: {
+                title: 'Хипервръзка',
+                text: 'Превръща избрания текст в хипервръзка.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            sourceedit: {
+                title: 'Редактиране на кода',
+                text: 'Преминаване в режим на редактиране на кода.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            }
+        }
+    });
+});
+
+Ext.define("Ext.locale.bg.grid.header.Container", {
+    override: "Ext.grid.header.Container",
+    sortAscText: "Подреди в нарастващ ред",
+    sortDescText: "Подреди в намаляващ ред",
+    lockText: "Заключи колона",
+    unlockText: "Отключи колона",
+    columnsText: "Колони"
+});
+
+Ext.define("Ext.locale.bg.grid.PropertyColumnModel", {
+    override: "Ext.grid.PropertyColumnModel",
+    nameText: "Име",
+    valueText: "Стойност",
+    dateFormat: "d.m.Y"
+});
+
+Ext.define("Ext.locale.bg.window.MessageBox", {
+    override: "Ext.window.MessageBox",
+    buttonText: {
+        ok: "OK",
+        cancel: "Отмени",
+        yes: "Да",
+        no: "Не"
+    }    
+});
+
+// This is needed until we can refactor all of the locales into individual files
+Ext.define("Ext.locale.bg.Component", {	
+    override: "Ext.Component"
+});

文件差异内容过多而无法显示
+ 1 - 0
src/ext/packages/ext-locale/build/ext-locale-bg.js


+ 294 - 0
src/ext/packages/ext-locale/build/ext-locale-ca-debug.js

@@ -0,0 +1,294 @@
+/**
+ * Catalonian Translation by halkon_polako 6-12-2007
+ * December correction halkon_polako 11-12-2007
+ *
+ * Synchronized with 2.2 version of ext-lang-en.js (provided by Condor 8 aug 2008)
+ *     by halkon_polako 14-aug-2008
+ */
+Ext.onReady(function() {
+
+    if (Ext.Date) {
+        Ext.Date.monthNames = ["Gener", "Febrer", "Mar&#231;", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre"];
+
+        Ext.Date.getShortMonthName = function(month) {
+            return Ext.Date.monthNames[month].substring(0, 3);
+        };
+
+        Ext.Date.monthNumbers = {
+            Gen: 0,
+            Feb: 1,
+            Mar: 2,
+            Abr: 3,
+            Mai: 4,
+            Jun: 5,
+            Jul: 6,
+            Ago: 7,
+            Set: 8,
+            Oct: 9,
+            Nov: 10,
+            Dec: 11
+        };
+
+        Ext.Date.getMonthNumber = function(name) {
+            return Ext.Date.monthNumbers[name.substring(0, 1).toUpperCase() + name.substring(1, 3).toLowerCase()];
+        };
+
+        Ext.Date.dayNames = ["Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte"];
+
+        Ext.Date.getShortDayName = function(day) {
+            return Ext.Date.dayNames[day].substring(0, 3);
+        };
+
+        Ext.Date.parseCodes.S.s = "(?:st|nd|rd|th)";
+    }
+
+    if (Ext.util && Ext.util.Format) {
+        Ext.apply(Ext.util.Format, {
+            thousandSeparator: '.',
+            decimalSeparator: ',',
+            currencySign: '\u20ac',
+            // Spanish Euro
+            dateFormat: 'd/m/Y'
+        });
+    }
+});
+
+Ext.define("Ext.locale.ca.view.View", {
+    override: "Ext.view.View",
+    emptyText: ""
+});
+
+Ext.define("Ext.locale.ca.grid.plugin.DragDrop", {
+    override: "Ext.grid.plugin.DragDrop",
+    dragText: "{0} fila(es) seleccionada(es)"
+});
+
+// changing the msg text below will affect the LoadMask
+Ext.define("Ext.locale.ca.view.AbstractView", {
+    override: "Ext.view.AbstractView",
+    loadingText: "Carregant..."
+});
+
+Ext.define("Ext.locale.ca.picker.Date", {
+    override: "Ext.picker.Date",
+    todayText: "Avui",
+    minText: "Aquesta data &#233;s anterior a la data m&#237;nima",
+    maxText: "Aquesta data &#233;s posterior a la data m&#224;xima",
+    disabledDaysText: "",
+    disabledDatesText: "",
+    nextText: 'Mes Seg&#252;ent (Control+Fletxa Dreta)',
+    prevText: 'Mes Anterior (Control+Fletxa Esquerra)',
+    monthYearText: 'Seleccioni un mes (Control+Fletxa a Dalt o Abaix per canviar els anys)',
+    todayTip: "{0} (Barra d&#39;espai)",
+    format: "d/m/Y",
+    startDay: 1
+});
+
+Ext.define("Ext.locale.ca.picker.Month", {
+    override: "Ext.picker.Month",
+    okText: "&#160;Acceptar&#160;",
+    cancelText: "Cancel&#183;lar"
+});
+
+Ext.define("Ext.locale.ca.toolbar.Paging", {
+    override: "Ext.PagingToolbar",
+    beforePageText: "P&#224;gina",
+    afterPageText: "de {0}",
+    firstText: "Primera P&#224;gina",
+    prevText: "P&#224;gina Anterior",
+    nextText: "P&#224;gina Seg&#252;ent",
+    lastText: "Darrera P&#224;gina",
+    refreshText: "Refrescar",
+    displayMsg: "Mostrant {0} - {1} de {2}",
+    emptyMsg: 'Sense dades per mostrar'
+});
+
+Ext.define("Ext.locale.ca.form.field.Base", {
+    override: "Ext.form.field.Base",
+    invalidText: "El valor d&#39;aquest camp &#233;s inv&#224;lid"
+});
+
+Ext.define("Ext.locale.ca.form.field.Text", {
+    override: "Ext.form.field.Text",
+    minLengthText: "El tamany m&#237;nim per aquest camp &#233;s {0}",
+    maxLengthText: "El tamany m&#224;xim per aquest camp &#233;s {0}",
+    blankText: "Aquest camp &#233;s obligatori",
+    regexText: "",
+    emptyText: null
+});
+
+Ext.define("Ext.locale.ca.form.field.Number", {
+    override: "Ext.form.field.Number",
+    decimalPrecision: 2,
+    minText: "El valor m&#237;nim per aquest camp &#233;s {0}",
+    maxText: "El valor m&#224;xim per aquest camp &#233;s {0}",
+    nanText: "{0} no &#233;s un nombre v&#224;lid"
+});
+
+Ext.define("Ext.locale.ca.form.field.File", { 
+    override: "Ext.form.field.File", 
+    buttonText: "Examinar..." 
+});
+
+Ext.define("Ext.locale.ca.form.field.Date", {
+    override: "Ext.form.field.Date",
+    disabledDaysText: "Deshabilitat",
+    disabledDatesText: "Deshabilitat",
+    minText: "La data en aquest camp ha de ser posterior a {0}",
+    maxText: "La data en aquest camp ha de ser inferior a {0}",
+    invalidText: "{0} no &#233;s una data v&#224;lida - ha de tenir el format {1}",
+    format: "d/m/Y",
+    altFormats: "d/m/Y|d-m-y|d-m-Y|d/m|d-m|dm|dmy|dmY|d|Y-m-d"
+});
+
+Ext.define("Ext.locale.ca.form.field.ComboBox", {
+    override: "Ext.form.field.ComboBox",
+    valueNotFoundText: undefined
+}, function() {
+    Ext.apply(Ext.form.field.ComboBox.prototype.defaultListConfig, {
+        loadingText: "Carregant..."
+    });
+});
+
+Ext.define("Ext.locale.ca.form.field.VTypes", {
+    override: "Ext.form.field.VTypes",
+    emailText: 'Aquest camp ha de ser una adre&#231;a de e-mail amb el format "user@example.com"',
+    urlText: 'Aquest camp ha de ser una URL amb el format "http:/' + '/www.example.com"',
+    alphaText: 'Aquest camp nom&#233;s pot contenir lletres i _',
+    alphanumText: 'Aquest camp nom&#233;s por contenir lletres, nombres i _'
+});
+
+Ext.define("Ext.locale.ca.form.field.HtmlEditor", {
+    override: "Ext.form.field.HtmlEditor",
+    createLinkText: 'Si us plau, tecleixi la URL per l\'enlla&#231;:'
+}, function() {
+    Ext.apply(Ext.form.field.HtmlEditor.prototype, {
+        buttonTips: {
+            bold: {
+                title: 'Negreta (Ctrl+B)',
+                text: 'Posa el text seleccionat en negreta.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            italic: {
+                title: 'It&#224;lica (Ctrl+I)',
+                text: 'Posa el text seleccionat en it&#224;lica.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            underline: {
+                title: 'Subratllat (Ctrl+U)',
+                text: 'Subratlla el text seleccionat.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            increasefontsize: {
+                title: 'Augmentar Text',
+                text: 'Augmenta el tamany de la font de text.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            decreasefontsize: {
+                title: 'Disminuir Text',
+                text: 'Disminueix el tamany de la font de text.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            backcolor: {
+                title: 'Color de fons',
+                text: 'Canvia el color de fons del text seleccionat.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            forecolor: {
+                title: 'Color de la font de text',
+                text: 'Canvia el color del text seleccionat.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifyleft: {
+                title: 'Alinear a la esquerra',
+                text: 'Alinea el text a la esquerra.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifycenter: {
+                title: 'Centrar el text',
+                text: 'Centra el text a l\'editor',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifyright: {
+                title: 'Alinear a la dreta',
+                text: 'Alinea el text a la dreta.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            insertunorderedlist: {
+                title: 'Llista amb vinyetes',
+                text: 'Comen&#231;a una llista amb vinyetes.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            insertorderedlist: {
+                title: 'Llista numerada',
+                text: 'Comen&#231;a una llista numerada.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            createlink: {
+                title: 'Enlla&#231;',
+                text: 'Transforma el text seleccionat en un enlla&#231;.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            sourceedit: {
+                title: 'Editar Codi',
+                text: 'Canvia al mode d\'edici&#243; de codi.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            }
+        }
+    });
+});
+
+Ext.define("Ext.locale.ca.grid.header.Container", {
+    override: "Ext.grid.header.Container",
+    sortAscText: "Ordenaci&#243; Ascendent",
+    sortDescText: "Ordenaci&#243; Descendent",
+    columnsText: "Columnes"
+});
+
+Ext.define("Ext.locale.ca.grid.GroupingFeature", {
+    override: "Ext.grid.feature.Grouping",
+    emptyGroupText: '(Buit)',
+    groupByText: 'Agrupar Per Aquest Camp',
+    showGroupsText: 'Mostrar en Grups'
+});
+
+Ext.define("Ext.locale.ca.grid.PropertyColumnModel", {
+    override: "Ext.grid.PropertyColumnModel",
+    nameText: "Nom",
+    valueText: "Valor",
+    dateFormat: "d/m/Y"
+});
+
+Ext.define("Ext.locale.ca.form.field.Time", {
+    override: "Ext.form.field.Time",
+    minText: "L\'hora en aquest camp ha de ser igual o posterior a {0}",
+    maxText: "L\'hora en aquest camp ha de ser igual o anterior {0}",
+    invalidText: "{0} no &#233;s un hora v&#224;lida",
+    format: "g:i A",
+    altFormats: "g:ia|g:iA|g:i a|g:i A|h:i|g:i|H:i|ga|ha|gA|h a|g a|g A|gi|hi|gia|hia|g|H"
+});
+
+Ext.define("Ext.locale.ca.form.CheckboxGroup", {
+    override: "Ext.form.CheckboxGroup",
+    blankText: "Ha de seleccionar almenys un &#233;tem d\'aquest group"
+});
+
+Ext.define("Ext.locale.ca.form.RadioGroup", {
+    override: "Ext.form.RadioGroup",
+    blankText: "Ha de seleccionar un &#233;tem d\'aquest grup"
+});
+
+Ext.define("Ext.locale.ca.window.MessageBox", {
+    override: "Ext.window.MessageBox",
+    buttonText: {
+        ok: "Acceptar",
+        cancel: "Cancel&#183;lar",
+        yes: "S&#237;",
+        no: "No"
+    }    
+});
+
+// This is needed until we can refactor all of the locales into individual files
+Ext.define("Ext.locale.ca.Component", {	
+    override: "Ext.Component"
+});

文件差异内容过多而无法显示
+ 1 - 0
src/ext/packages/ext-locale/build/ext-locale-ca.js


+ 292 - 0
src/ext/packages/ext-locale/build/ext-locale-cs-debug.js

@@ -0,0 +1,292 @@
+/**
+ * Czech Translations
+ * Translated by Tomáš Korčák (72)
+ * 2008/02/08 18:02, Ext-2.0.1
+ */
+Ext.onReady(function() {
+
+    if (Ext.Date) {
+        Ext.Date.monthNames = ["Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"];
+
+        Ext.Date.shortMonthNames = {
+            "Leden": "Led",
+            "Únor": "Úno",
+            "Březen": "Bře",
+            "Duben": "Dub",
+            "Květen": "Kvě",
+            "Červen": "Čer",
+            "Červenec": "Čvc",
+            "Srpen": "Srp",
+            "Září": "Zář",
+            "Říjen": "Říj",
+            "Listopad": "Lis",
+            "Prosinec": "Pro"
+        };
+
+        Ext.Date.getShortMonthName = function(month) {
+            return Ext.Date.shortMonthNames[Ext.Date.monthNames[month]];
+        };
+
+        Ext.Date.monthNumbers = {
+            "Leden": 0,
+            "Únor": 1,
+            "Březen": 2,
+            "Duben": 3,
+            "Květen": 4,
+            "Červen": 5,
+            "Červenec": 6,
+            "Srpen": 7,
+            "Září": 8,
+            "Říjen": 9,
+            "Listopad": 10,
+            "Prosinec": 11
+        };
+
+        Ext.Date.getMonthNumber = function(name) {
+            return Ext.Date.monthNumbers[name.substring(0, 1).toUpperCase() + name.substring(1).toLowerCase()];
+        };
+
+        Ext.Date.dayNames = ["Neděle", "Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota"];
+
+        Ext.Date.getShortDayName = function(day) {
+            return Ext.Date.dayNames[day].substring(0, 3);
+        };
+    }
+
+    if (Ext.util && Ext.util.Format) {
+        Ext.apply(Ext.util.Format, {
+            thousandSeparator: '.',
+            decimalSeparator: ',',
+            currencySign: '\u004b\u010d',
+            // Czech Koruny
+            dateFormat: 'd.m.Y'
+        });
+    }
+});
+
+Ext.define("Ext.locale.cs.view.View", {
+    override: "Ext.view.View",
+    emptyText: ""
+});
+
+Ext.define("Ext.locale.cs.grid.plugin.DragDrop", {
+    override: "Ext.grid.plugin.DragDrop",
+    dragText: "{0} vybraných řádků"
+});
+
+Ext.define("Ext.locale.cs.tab.Tab", {
+    override: "Ext.tab.Tab",
+    closeText: "Zavřít záložku"
+});
+
+Ext.define("Ext.locale.cs.form.field.Base", {
+    override: "Ext.form.field.Base",
+    invalidText: "Hodnota v tomto poli je neplatná"
+});
+
+// changing the msg text below will affect the LoadMask
+Ext.define("Ext.locale.cs.view.AbstractView", {
+    override: "Ext.view.AbstractView",
+    loadingText: "Prosím čekejte..."
+});
+
+Ext.define("Ext.locale.cs.picker.Date", {
+    override: "Ext.picker.Date",
+    todayText: "Dnes",
+    minText: "Datum nesmí být starší než je minimální",
+    maxText: "Datum nesmí být dřívější než je maximální",
+    disabledDaysText: "",
+    disabledDatesText: "",
+    nextText: 'Následující měsíc (Control+Right)',
+    prevText: 'Předcházející měsíc (Control+Left)',
+    monthYearText: 'Zvolte měsíc (ke změně let použijte Control+Up/Down)',
+    todayTip: "{0} (Spacebar)",
+    format: "d.m.Y",
+    startDay: 1
+});
+
+Ext.define("Ext.locale.cs.picker.Month", {
+    override: "Ext.picker.Month",
+    okText: "&#160;OK&#160;",
+    cancelText: "Storno"
+});
+
+Ext.define("Ext.locale.cs.toolbar.Paging", {
+    override: "Ext.PagingToolbar",
+    beforePageText: "Strana",
+    afterPageText: "z {0}",
+    firstText: "První strana",
+    prevText: "Přecházející strana",
+    nextText: "Následující strana",
+    lastText: "Poslední strana",
+    refreshText: "Aktualizovat",
+    displayMsg: "Zobrazeno {0} - {1} z celkových {2}",
+    emptyMsg: 'Žádné záznamy nebyly nalezeny'
+});
+
+Ext.define("Ext.locale.cs.form.field.Text", {
+    override: "Ext.form.field.Text",
+    minLengthText: "Pole nesmí mít méně {0} znaků",
+    maxLengthText: "Pole nesmí být delší než {0} znaků",
+    blankText: "Povinné pole",
+    regexText: "",
+    emptyText: null
+});
+
+Ext.define("Ext.locale.cs.form.field.Number", {
+    override: "Ext.form.field.Number",
+    minText: "Hodnota v tomto poli nesmí být menší než {0}",
+    maxText: "Hodnota v tomto poli nesmí být větší než {0}",
+    nanText: "{0} není platné číslo"
+});
+
+Ext.define("Ext.locale.cs.form.field.Date", {
+    override: "Ext.form.field.Date",
+    disabledDaysText: "Neaktivní",
+    disabledDatesText: "Neaktivní",
+    minText: "Datum v tomto poli nesmí být starší než {0}",
+    maxText: "Datum v tomto poli nesmí být novější než {0}",
+    invalidText: "{0} není platným datem - zkontrolujte zda-li je ve formátu {1}",
+    format: "d.m.Y",
+    altFormats: "d/m/Y|d-m-y|d-m-Y|d/m|d-m|dm|dmy|dmY|d|Y-m-d"
+});
+
+Ext.define("Ext.locale.cs.form.field.ComboBox", {
+    override: "Ext.form.field.ComboBox",
+    valueNotFoundText: undefined
+}, function() {
+    Ext.apply(Ext.form.field.ComboBox.prototype.defaultListConfig, {
+        loadingText: "Prosím čekejte..."
+    });
+});
+
+Ext.define("Ext.locale.cs.form.field.VTypes", {
+    override: "Ext.form.field.VTypes",
+    emailText: 'V tomto poli může být vyplněna pouze emailová adresa ve formátu "uživatel@doména.cz"',
+    urlText: 'V tomto poli může být vyplněna pouze URL (adresa internetové stránky) ve formátu "http:/' + '/www.doména.cz"',
+    alphaText: 'Toto pole může obsahovat pouze písmena abecedy a znak _',
+    alphanumText: 'Toto pole může obsahovat pouze písmena abecedy, čísla a znak _'
+});
+
+Ext.define("Ext.locale.cs.form.field.HtmlEditor", {
+    override: "Ext.form.field.HtmlEditor",
+    createLinkText: 'Zadejte URL adresu odkazu:'
+}, function() {
+    Ext.apply(Ext.form.field.HtmlEditor.prototype, {
+        buttonTips: {
+            bold: {
+                title: 'Tučné (Ctrl+B)',
+                text: 'Označí vybraný text tučně.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            italic: {
+                title: 'Kurzíva (Ctrl+I)',
+                text: 'Označí vybraný text kurzívou.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            underline: {
+                title: 'Podtržení (Ctrl+U)',
+                text: 'Podtrhne vybraný text.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            increasefontsize: {
+                title: 'Zvětšit písmo',
+                text: 'Zvětší velikost písma.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            decreasefontsize: {
+                title: 'Zúžit písmo',
+                text: 'Zmenší velikost písma.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            backcolor: {
+                title: 'Barva zvýraznění textu',
+                text: 'Označí vybraný text tak, aby vypadal jako označený zvýrazňovačem.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            forecolor: {
+                title: 'Barva písma',
+                text: 'Změní barvu textu.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifyleft: {
+                title: 'Zarovnat text vlevo',
+                text: 'Zarovná text doleva.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifycenter: {
+                title: 'Zarovnat na střed',
+                text: 'Zarovná text na střed.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifyright: {
+                title: 'Zarovnat text vpravo',
+                text: 'Zarovná text doprava.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            insertunorderedlist: {
+                title: 'Odrážky',
+                text: 'Začne seznam s odrážkami.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            insertorderedlist: {
+                title: 'Číslování',
+                text: 'Začne číslovaný seznam.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            createlink: {
+                title: 'Internetový odkaz',
+                text: 'Z vybraného textu vytvoří internetový odkaz.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            sourceedit: {
+                title: 'Zdrojový kód',
+                text: 'Přepne do módu úpravy zdrojového kódu.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            }
+        }
+    });
+});
+
+Ext.define("Ext.locale.cs.grid.header.Container", {
+    override: "Ext.grid.header.Container",
+    sortAscText: "Řadit vzestupně",
+    sortDescText: "Řadit sestupně",
+    lockText: "Ukotvit sloupec",
+    unlockText: "Uvolnit sloupec",
+    columnsText: "Sloupce"
+});
+
+Ext.define("Ext.locale.cs.grid.GroupingFeature", {
+    override: "Ext.grid.feature.Grouping",
+    emptyGroupText: '(Žádná data)',
+    groupByText: 'Seskupit dle tohoto pole',
+    showGroupsText: 'Zobrazit ve skupině'
+});
+
+Ext.define("Ext.locale.cs.grid.PropertyColumnModel", {
+    override: "Ext.grid.PropertyColumnModel",
+    nameText: "Název",
+    valueText: "Hodnota",
+    dateFormat: "j.m.Y"
+});
+
+Ext.define("Ext.locale.cs.form.field.File", {
+    override: "Ext.form.field.File",
+    buttonText: "Procházet..."
+});
+
+Ext.define("Ext.locale.cs.window.MessageBox", {
+    override: "Ext.window.MessageBox",
+    buttonText: {
+        ok: "OK",
+        cancel: "Storno",
+        yes: "Ano",
+        no: "Ne"
+    }    
+});
+
+// This is needed until we can refactor all of the locales into individual files
+Ext.define("Ext.locale.cs.Component", {	
+    override: "Ext.Component"
+});

文件差异内容过多而无法显示
+ 1 - 0
src/ext/packages/ext-locale/build/ext-locale-cs.js


+ 277 - 0
src/ext/packages/ext-locale/build/ext-locale-da-debug.js

@@ -0,0 +1,277 @@
+/**
+ * Danish translation
+ * By JohnF
+ * 04-09-2007, 05:28 AM
+ *
+ * Extended and modified by Karl Krukow,
+ * December, 2007.
+ */
+Ext.onReady(function() {
+    
+    if (Ext.Date) {
+        Ext.Date.monthNames = ["januar", "februar", "marts", "april", "maj", "juni", "juli", "august", "september", "oktober", "november", "december"];
+
+        Ext.Date.getShortMonthName = function(month) {
+            return Ext.Date.monthNames[month].substring(0, 3);
+        };
+
+        Ext.Date.monthNumbers = {
+            jan: 0,
+            feb: 1,
+            mar: 2,
+            apr: 3,
+            maj: 4,
+            jun: 5,
+            jul: 6,
+            aug: 7,
+            sep: 8,
+            okt: 9,
+            nov: 10,
+            dec: 11
+        };
+
+        Ext.Date.getMonthNumber = function(name) {
+            return Ext.Date.monthNumbers[name.substring(0, 3).toLowerCase()];
+        };
+
+        Ext.Date.dayNames = ["søndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "lørdag"];
+
+        Ext.Date.getShortDayName = function(day) {
+            return Ext.Date.dayNames[day].substring(0, 3);
+        };
+    }
+
+    if (Ext.util && Ext.util.Format) {
+        Ext.apply(Ext.util.Format, {
+            thousandSeparator: '.',
+            decimalSeparator: ',',
+            currencySign: 'kr',
+            // Danish Krone
+            dateFormat: 'd/m/Y'
+        });
+    }
+});
+
+Ext.define("Ext.locale.da.view.View", {
+    override: "Ext.view.View",
+    emptyText: ""
+});
+
+Ext.define("Ext.locale.da.grid.plugin.DragDrop", {
+    override: "Ext.grid.plugin.DragDrop",
+    dragText: "{0} markerede rækker"
+});
+
+Ext.define("Ext.locale.da.tab.Tab", {
+    override: "Ext.tab.Tab",
+    closeText: "Luk denne fane"
+});
+
+Ext.define("Ext.locale.da.form.field.Base", {
+    override: "Ext.form.field.Base",
+    invalidText: "Værdien i dette felt er ugyldig"
+});
+
+// changing the msg text below will affect the LoadMask
+Ext.define("Ext.locale.da.view.AbstractView", {
+    override: "Ext.view.AbstractView",
+    loadingText: "Henter..."
+});
+
+Ext.define("Ext.locale.da.picker.Date", {
+    override: "Ext.picker.Date",
+    todayText: "I dag",
+    minText: "Denne dato er før den tidligst tilladte",
+    maxText: "Denne dato er senere end den senest tilladte",
+    disabledDaysText: "",
+    disabledDatesText: "",
+    nextText: 'Næste måned (Ctrl + højre piltast)',
+    prevText: 'Forrige måned (Ctrl + venstre piltast)',
+    monthYearText: 'Vælg en måned (Ctrl + op/ned pil for at ændre årstal)',
+    todayTip: "{0} (mellemrum)",
+    format: "d/m/y",
+    startDay: 1
+});
+
+Ext.define("Ext.locale.da.picker.Month", {
+    override: "Ext.picker.Month",
+    okText: "&#160;OK&#160;",
+    cancelText: "Cancel"
+});
+
+Ext.define("Ext.locale.da.toolbar.Paging", {
+    override: "Ext.PagingToolbar",
+    beforePageText: "Side",
+    afterPageText: "af {0}",
+    firstText: "Første side",
+    prevText: "Forrige side",
+    nextText: "Næste side",
+    lastText: "Sidste side",
+    refreshText: "Opfrisk",
+    displayMsg: "Viser {0} - {1} af {2}",
+    emptyMsg: 'Der er ingen data at vise'
+});
+
+Ext.define("Ext.locale.da.form.field.Text", {
+    override: "Ext.form.field.Text",
+    minLengthText: "Minimum længden for dette felt er {0}",
+    maxLengthText: "Maksimum længden for dette felt er {0}",
+    blankText: "Dette felt skal udfyldes",
+    regexText: "",
+    emptyText: null
+});
+
+Ext.define("Ext.locale.da.form.field.Number", {
+    override: "Ext.form.field.Number",
+    minText: "Mindste-værdien for dette felt er {0}",
+    maxText: "Maksimum-værdien for dette felt er {0}",
+    nanText: "{0} er ikke et tilladt nummer"
+});
+
+Ext.define("Ext.locale.da.form.field.Date", {
+    override: "Ext.form.field.Date",
+    disabledDaysText: "Inaktiveret",
+    disabledDatesText: "Inaktiveret",
+    minText: "Datoen i dette felt skal være efter {0}",
+    maxText: "Datoen i dette felt skal være før {0}",
+    invalidText: "{0} er ikke en tilladt dato - datoer skal angives i formatet {1}",
+    format: "d/m/y",
+    altFormats: "d/m/Y|d-m-y|d-m-Y|d/m|d-m|dm|dmy|dmY|d|Y-m-d"
+});
+
+Ext.define("Ext.locale.da.form.field.ComboBox", {
+    override: "Ext.form.field.ComboBox",
+    valueNotFoundText: undefined
+}, function() {
+    Ext.apply(Ext.form.field.ComboBox.prototype.defaultListConfig, {
+        loadingText: "Henter..."
+    });
+});
+
+Ext.define("Ext.locale.da.form.field.VTypes", {
+    override: "Ext.form.field.VTypes",
+    emailText: 'Dette felt skal være en email adresse i formatet "xxx@yyy.zzz"',
+    urlText: 'Dette felt skal være en URL i formatet "http:/' + '/xxx.yyy"',
+    alphaText: 'Dette felt kan kun indeholde bogstaver og "_" (understregning)',
+    alphanumText: 'Dette felt kan kun indeholde bogstaver, tal og "_" (understregning)'
+});
+
+Ext.define("Ext.locale.da.form.field.HtmlEditor", {
+    override: "Ext.form.field.HtmlEditor",
+    createLinkText: 'Indtast URL:'
+}, function() {
+    Ext.apply(Ext.form.field.HtmlEditor.prototype, {
+        buttonTips: {
+            bold: {
+                title: 'Fed (Ctrl+B)',
+                //Can I change this to Ctrl+F?
+                text: 'Formater det markerede tekst med fed.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            italic: {
+                title: 'Kursiv (Ctrl+I)',
+                //Ctrl+K
+                text: 'Formater det markerede tekst med kursiv.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            underline: {
+                title: 'Understreg (Ctrl+U)',
+                text: 'Understreg det markerede tekst.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            increasefontsize: {
+                title: 'Forstør tekst',
+                text: 'Forøg fontstørrelsen.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            decreasefontsize: {
+                title: 'Formindsk tekst',
+                text: 'Formindsk fontstørrelsen.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            backcolor: {
+                title: 'Farve for tekstfremhævelse',
+                text: 'Skift baggrundsfarve for det markerede tekst.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            forecolor: {
+                title: 'Skriftfarve',
+                text: 'Skift skriftfarve for det markerede tekst.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifyleft: {
+                title: 'Juster venstre',
+                text: 'Venstrestil tekst.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifycenter: {
+                title: 'Centreret',
+                text: 'Centrer tekst.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifyright: {
+                title: 'Juster højre',
+                text: 'Højrestil tekst.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            insertunorderedlist: {
+                title: 'Punktopstilling',
+                text: 'Påbegynd punktopstilling.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            insertorderedlist: {
+                title: 'Nummereret opstilling',
+                text: 'Påbegynd nummereret opstilling.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            createlink: {
+                title: 'Hyperlink',
+                text: 'Lav det markerede test til et hyperlink.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            sourceedit: {
+                title: 'Kildetekstredigering',
+                text: 'Skift til redigering af kildetekst.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            }
+        }
+    });
+});
+
+Ext.define("Ext.locale.da.grid.header.Container", {
+    override: "Ext.grid.header.Container",
+    sortAscText: "Sortér stigende",
+    sortDescText: "Sortér faldende",
+    lockText: "Lås kolonne",
+    unlockText: "Fjern lås fra kolonne",
+    columnsText: "Kolonner"
+});
+
+Ext.define("Ext.locale.da.grid.GroupingFeature", {
+    override: "Ext.grid.feature.Grouping",
+    emptyGroupText: '(Ingen)',
+    groupByText: 'Gruppér efter dette felt',
+    showGroupsText: 'Vis i grupper' //should this be sort in groups?
+});
+
+Ext.define("Ext.locale.da.grid.PropertyColumnModel", {
+    override: "Ext.grid.PropertyColumnModel",
+    nameText: "Navn",
+    valueText: "Værdi",
+    dateFormat: "j/m/Y"
+});
+
+Ext.define("Ext.locale.da.window.MessageBox", {
+    override: "Ext.window.MessageBox",
+    buttonText: {
+        ok: "OK",
+        cancel: "Fortryd",
+        yes: "Ja",
+        no: "Nej"
+    }    
+});
+
+// This is needed until we can refactor all of the locales into individual files
+Ext.define("Ext.locale.da.Component", {	
+    override: "Ext.Component"
+});

文件差异内容过多而无法显示
+ 1 - 0
src/ext/packages/ext-locale/build/ext-locale-da.js


+ 325 - 0
src/ext/packages/ext-locale/build/ext-locale-de-debug.js

@@ -0,0 +1,325 @@
+/**
+ * German translation
+ * 2007-Apr-07 update by schmidetzki and humpdi
+ * 2007-Oct-31 update by wm003
+ * 2009-Jul-10 update by Patrick Matsumura and Rupert Quaderer
+ * 2010-Mar-10 update by Volker Grabsch
+ */
+Ext.onReady(function() {
+    
+    if (Ext.Date) {
+        Ext.Date.monthNames = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];
+        
+        Ext.Date.defaultFormat = 'd.m.Y';
+
+        Ext.Date.getShortMonthName = function(month) {
+            return Ext.Date.monthNames[month].substring(0, 3);
+        };
+
+        Ext.Date.monthNumbers = {
+            Jan: 0,
+            Feb: 1,
+            "M\u00e4r": 2,
+            Apr: 3,
+            Mai: 4,
+            Jun: 5,
+            Jul: 6,
+            Aug: 7,
+            Sep: 8,
+            Okt: 9,
+            Nov: 10,
+            Dez: 11
+        };
+
+        Ext.Date.getMonthNumber = function(name) {
+            return Ext.Date.monthNumbers[name.substring(0, 1).toUpperCase() + name.substring(1, 3).toLowerCase()];
+        };
+
+        Ext.Date.dayNames = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];
+
+        Ext.Date.getShortDayName = function(day) {
+            return Ext.Date.dayNames[day].substring(0, 3);
+        };
+    }
+
+    if (Ext.util && Ext.util.Format) {
+        Ext.util.Format.__number = Ext.util.Format.number;
+        Ext.util.Format.number = function(v, format) {
+            return Ext.util.Format.__number(v, format || "0.000,00/i");
+        };
+
+        Ext.apply(Ext.util.Format, {
+            thousandSeparator: '.',
+            decimalSeparator: ',',
+            currencySign: '\u20ac',
+            // German Euro
+            dateFormat: 'd.m.Y'
+        });
+    }
+});
+
+Ext.define("Ext.locale.de.view.View", {
+    override: "Ext.view.View",
+    emptyText: ""
+});
+
+Ext.define("Ext.locale.de.grid.plugin.DragDrop", {
+    override: "Ext.grid.plugin.DragDrop",
+    dragText: "{0} Zeile(n) ausgewählt"
+});
+
+Ext.define("Ext.locale.de.tab.Tab", {
+    override: "Ext.tab.Tab",
+    closeText: "Diesen Tab schließen"
+});
+
+Ext.define("Ext.locale.de.form.Basic", {
+    override: "Ext.form.Basic",
+    waitTitle: "Bitte warten..."
+});
+
+Ext.define("Ext.locale.de.form.field.Base", {
+    override: "Ext.form.field.Base",
+    invalidText: "Der Wert des Feldes ist nicht korrekt"
+});
+
+Ext.define("Ext.locale.de.LoadMask", {
+    override: "Ext.LoadMask",
+    loadingText: "Lade Daten..."
+});
+
+Ext.define("Ext.locale.de.view.AbstractView", {
+    override: "Ext.view.AbstractView",
+    loadingText: "Lade Daten..."
+});
+
+Ext.define("Ext.locale.de.picker.Date", {
+    override: "Ext.picker.Date",
+    todayText: "Heute",
+    minText: "Dieses Datum liegt von dem erstmöglichen Datum",
+    maxText: "Dieses Datum liegt nach dem letztmöglichen Datum",
+    disabledDaysText: "",
+    disabledDatesText: "",
+    nextText: "Nächster Monat (Strg/Control + Rechts)",
+    prevText: "Vorheriger Monat (Strg/Control + Links)",
+    monthYearText: "Monat auswählen (Strg/Control + Hoch/Runter, um ein Jahr auszuwählen)",
+    todayTip: "Heute ({0}) (Leertaste)",
+    format: "d.m.Y",
+    startDay: 1
+});
+
+Ext.define("Ext.locale.de.picker.Month", {
+    override: "Ext.picker.Month",
+    okText: "&#160;OK&#160;",
+    cancelText: "Abbrechen"
+});
+
+Ext.define("Ext.locale.de.toolbar.Paging", {
+    override: "Ext.PagingToolbar",
+    beforePageText: "Seite",
+    afterPageText: "von {0}",
+    firstText: "Erste Seite",
+    prevText: "vorherige Seite",
+    nextText: "nächste Seite",
+    lastText: "letzte Seite",
+    refreshText: "Aktualisieren",
+    displayMsg: "Anzeige Eintrag {0} - {1} von {2}",
+    emptyMsg: "Keine Daten vorhanden"
+});
+
+Ext.define("Ext.locale.de.form.field.Text", {
+    override: "Ext.form.field.Text",
+    minLengthText: "Bitte geben Sie mindestens {0} Zeichen ein",
+    maxLengthText: "Bitte geben Sie maximal {0} Zeichen ein",
+    blankText: "Dieses Feld darf nicht leer sein",
+    regexText: "",
+    emptyText: null
+});
+
+Ext.define("Ext.locale.de.form.field.Number", {
+    override: "Ext.form.field.Number",
+    minText: "Der Mindestwert für dieses Feld ist {0}",
+    maxText: "Der Maximalwert für dieses Feld ist {0}",
+    nanText: "{0} ist keine Zahl"
+});
+
+Ext.define("Ext.locale.de.form.field.Date", {
+    override: "Ext.form.field.Date",
+    disabledDaysText: "nicht erlaubt",
+    disabledDatesText: "nicht erlaubt",
+    minText: "Das Datum in diesem Feld muss nach dem {0} liegen",
+    maxText: "Das Datum in diesem Feld muss vor dem {0} liegen",
+    invalidText: "{0} ist kein gültiges Datum - es muss im Format {1} eingegeben werden",
+    format: "d.m.Y",
+    altFormats: "j.n.Y|j.n.y|j.n.|j.|j/n/Y|j/n/y|j-n-y|j-n-Y|j/n|j-n|dm|dmy|dmY|j|Y-n-j|Y-m-d",
+    startDay: 1
+});
+
+Ext.define("Ext.locale.de.form.field.ComboBox", {
+    override: "Ext.form.field.ComboBox",
+    valueNotFoundText: undefined
+}, function() {
+    Ext.apply(Ext.form.field.ComboBox.prototype.defaultListConfig, {
+        loadingText: "Lade Daten ..."
+    });
+});
+
+Ext.define("Ext.locale.de.form.field.VTypes", {
+    override: "Ext.form.field.VTypes",
+    emailText: 'Dieses Feld sollte eine E-Mail-Adresse enthalten. Format: "user@example.com"',
+    urlText: 'Dieses Feld sollte eine URL enthalten. Format: "http:/' + '/www.example.com"',
+    alphaText: 'Dieses Feld darf nur Buchstaben enthalten und _',
+    alphanumText: 'Dieses Feld darf nur Buchstaben und Zahlen enthalten und _'
+});
+
+Ext.define("Ext.locale.de.form.field.HtmlEditor", {
+    override: "Ext.form.field.HtmlEditor",
+    createLinkText: 'Bitte geben Sie die URL für den Link ein:'
+}, function() {
+    Ext.apply(Ext.form.field.HtmlEditor.prototype, {
+        buttonTips: {
+            bold: {
+                title: 'Fett (Ctrl+B)',
+                text: 'Erstellt den ausgewählten Text in Fettschrift.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            italic: {
+                title: 'Kursiv (Ctrl+I)',
+                text: 'Erstellt den ausgewählten Text in Schrägschrift.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            underline: {
+                title: 'Unterstrichen (Ctrl+U)',
+                text: 'Unterstreicht den ausgewählten Text.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            increasefontsize: {
+                title: 'Text vergößern',
+                text: 'Erhöht die Schriftgröße.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            decreasefontsize: {
+                title: 'Text verkleinern',
+                text: 'Verringert die Schriftgröße.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            backcolor: {
+                title: 'Text farblich hervorheben',
+                text: 'Hintergrundfarbe des ausgewählten Textes ändern.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            forecolor: {
+                title: 'Schriftfarbe',
+                text: 'Farbe des ausgewählten Textes ändern.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifyleft: {
+                title: 'Linksbündig',
+                text: 'Setzt den Text linksbündig.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifycenter: {
+                title: 'Zentrieren',
+                text: 'Zentriert den Text in Editor.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifyright: {
+                title: 'Rechtsbündig',
+                text: 'Setzt den Text rechtsbündig.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            insertunorderedlist: {
+                title: 'Aufzählungsliste',
+                text: 'Beginnt eine Aufzählungsliste mit Spiegelstrichen.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            insertorderedlist: {
+                title: 'Numerierte Liste',
+                text: 'Beginnt eine numerierte Liste.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            createlink: {
+                title: 'Hyperlink',
+                text: 'Erstellt einen Hyperlink aus dem ausgewählten text.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            sourceedit: {
+                title: 'Source bearbeiten',
+                text: 'Zur Bearbeitung des Quelltextes wechseln.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            }
+        }
+    });
+});
+
+Ext.define("Ext.locale.de.grid.header.Container", {
+    override: "Ext.grid.header.Container",
+    sortAscText: "Aufsteigend sortieren",
+    sortDescText: "Absteigend sortieren",
+    lockText: "Spalte sperren",
+    unlockText: "Spalte freigeben (entsperren)",
+    columnsText: "Spalten"
+});
+
+Ext.define("Ext.locale.de.grid.GroupingFeature", {
+    override: "Ext.grid.feature.Grouping",
+    emptyGroupText: '(Keine)',
+    groupByText: 'Dieses Feld gruppieren',
+    showGroupsText: 'In Gruppen anzeigen'
+});
+
+Ext.define("Ext.locale.de.grid.PropertyColumnModel", {
+    override: "Ext.grid.PropertyColumnModel",
+    nameText: "Name",
+    valueText: "Wert",
+    dateFormat: "d.m.Y"
+});
+
+Ext.define("Ext.locale.de.grid.BooleanColumn", {
+    override: "Ext.grid.BooleanColumn",
+    trueText: "wahr",
+    falseText: "falsch"
+});
+
+Ext.define("Ext.locale.de.grid.NumberColumn", {
+    override: "Ext.grid.NumberColumn",
+    format: '0.000,00/i'
+});
+
+Ext.define("Ext.locale.de.grid.DateColumn", {
+    override: "Ext.grid.DateColumn",
+    format: 'd.m.Y'
+});
+
+Ext.define("Ext.locale.de.form.field.Time", {
+    override: "Ext.form.field.Time",
+    minText: "Die Zeit muss gleich oder nach {0} liegen",
+    maxText: "Die Zeit muss gleich oder vor {0} liegen",
+    invalidText: "{0} ist keine gültige Zeit",
+    format: "H:i"
+});
+
+Ext.define("Ext.locale.de.form.CheckboxGroup", {
+    override: "Ext.form.CheckboxGroup",
+    blankText: "Du mußt mehr als einen Eintrag aus der Gruppe auswählen"
+});
+
+Ext.define("Ext.locale.de.form.RadioGroup", {
+    override: "Ext.form.RadioGroup",
+    blankText: "Du mußt einen Eintrag aus der Gruppe auswählen"
+});
+
+Ext.define("Ext.locale.de.window.MessageBox", {
+    override: "Ext.window.MessageBox",
+    buttonText: {
+        ok: "OK",
+        cancel: "Abbrechen",
+        yes: "Ja",
+        no: "Nein"
+    }    
+});
+
+// This is needed until we can refactor all of the locales into individual files
+Ext.define("Ext.locale.de.Component", {	
+    override: "Ext.Component"
+});

文件差异内容过多而无法显示
+ 1 - 0
src/ext/packages/ext-locale/build/ext-locale-de.js


+ 268 - 0
src/ext/packages/ext-locale/build/ext-locale-el_GR-debug.js

@@ -0,0 +1,268 @@
+/**
+ * Greek translation
+ * By thesilentman (utf8 encoding)
+ * 27 Apr 2008
+ *
+ * Changes since previous (second) Version:
+ * + added Ext.Date.shortMonthNames
+ * + added Ext.Date.getShortMonthName
+ * + added Ext.Date.monthNumbers
+ * + added Ext.grid.feature.Grouping
+ */
+Ext.onReady(function() {
+
+    if (Ext.Date) {
+        Ext.Date.monthNames = ["Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάιος", "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος"];
+
+        Ext.Date.shortMonthNames = ["Ιαν", "Φεβ", "Μάρ", "Απρ", "Μάι", "Ιού", "Ιού", "Αύγ", "Σεπ", "Οκτ", "Νοέ", "Δεκ"];
+
+        Ext.Date.getShortMonthName = function(month) {
+            return Ext.Date.monthNames[month].substring(0, 3);
+        };
+
+        Ext.Date.monthNumbers = {
+            Jan: 0,
+            Feb: 1,
+            Mar: 2,
+            Apr: 3,
+            May: 4,
+            Jun: 5,
+            Jul: 6,
+            Aug: 7,
+            Sep: 8,
+            Oct: 9,
+            Nov: 10,
+            Dec: 11
+        };
+
+        Ext.Date.getMonthNumber = function(name) {
+            return Ext.Date.monthNumbers[name.substring(0, 1).toUpperCase() + name.substring(1, 3).toLowerCase()];
+        };
+
+        Ext.Date.dayNames = ["Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο"];
+    }
+
+    if (Ext.util && Ext.util.Format) {
+        Ext.apply(Ext.util.Format, {
+            thousandSeparator: '.',
+            decimalSeparator: ',',
+            currencySign: '\u20ac',
+            // Greek Euro
+            dateFormat: 'd/m/Y'
+        });
+    }
+});
+
+Ext.define("Ext.locale.el_GR.view.View", {
+    override: "Ext.view.View",
+    emptyText: ""
+});
+
+Ext.define("Ext.locale.el_GR.grid.plugin.DragDrop", {
+    override: "Ext.grid.plugin.DragDrop",
+    dragText: "{0} Επιλεγμένες σειρές"
+});
+
+Ext.define("Ext.locale.el_GR.tab.Tab", {
+    override: "Ext.tab.Tab",
+    closeText: "Κλείστε το tab"
+});
+
+Ext.define("Ext.locale.el_GR.form.field.Base", {
+    override: "Ext.form.field.Base",
+    invalidText: "Το περιεχόμενο του πεδίου δεν είναι αποδεκτό"
+});
+
+// changing the msg text below will affect the LoadMask
+Ext.define("Ext.locale.el_GR.view.AbstractView", {
+    override: "Ext.view.AbstractView",
+    loadingText: "Μεταφόρτωση δεδομένων..."
+});
+
+Ext.define("Ext.locale.el_GR.picker.Date", {
+    override: "Ext.picker.Date",
+    todayText: "Σήμερα",
+    minText: "Η Ημερομηνία είναι προγενέστερη από την παλαιότερη αποδεκτή",
+    maxText: "Η Ημερομηνία είναι μεταγενέστερη από την νεότερη αποδεκτή",
+    disabledDaysText: "",
+    disabledDatesText: "",
+    nextText: 'Επόμενος Μήνας (Control+Δεξί Βέλος)',
+    prevText: 'Προηγούμενος Μήνας (Control + Αριστερό Βέλος)',
+    monthYearText: 'Επιλογή Μηνός (Control + Επάνω/Κάτω Βέλος για μεταβολή ετών)',
+    todayTip: "{0} (ΠΛήκτρο Διαστήματος)",
+    format: "d/m/y"
+});
+
+Ext.define("Ext.locale.el_GR.toolbar.Paging", {
+    override: "Ext.PagingToolbar",
+    beforePageText: "Σελίδα",
+    afterPageText: "από {0}",
+    firstText: "Πρώτη Σελίδα",
+    prevText: "Προηγούμενη Σελίδα",
+    nextText: "Επόμενη Σελίδα",
+    lastText: "Τελευταία Σελίδα",
+    refreshText: "Ανανέωση",
+    displayMsg: "Εμφάνιση {0} - {1} από {2}",
+    emptyMsg: 'Δεν υπάρχουν δεδομένα'
+});
+
+Ext.define("Ext.locale.el_GR.form.field.Text", {
+    override: "Ext.form.field.Text",
+    minLengthText: "Το μικρότερο αποδεκτό μήκος για το πεδίο είναι {0}",
+    maxLengthText: "Το μεγαλύτερο αποδεκτό μήκος για το πεδίο είναι {0}",
+    blankText: "Το πεδίο είναι υποχρεωτικό",
+    regexText: "",
+    emptyText: null
+});
+
+Ext.define("Ext.locale.el_GR.form.field.Number", {
+    override: "Ext.form.field.Number",
+    minText: "Η μικρότερη τιμή του πεδίου είναι {0}",
+    maxText: "Η μεγαλύτερη τιμή του πεδίου είναι {0}",
+    nanText: "{0} δεν είναι αποδεκτός αριθμός"
+});
+
+Ext.define("Ext.locale.el_GR.form.field.Date", {
+    override: "Ext.form.field.Date",
+    disabledDaysText: "Ανενεργό",
+    disabledDatesText: "Ανενεργό",
+    minText: "Η ημερομηνία αυτού του πεδίου πρέπει να είναι μετά την {0}",
+    maxText: "Η ημερομηνία αυτού του πεδίου πρέπει να είναι πριν την {0}",
+    invalidText: "{0} δεν είναι έγκυρη ημερομηνία - πρέπει να είναι στη μορφή {1}",
+    format: "d/m/y"
+});
+
+Ext.define("Ext.locale.el_GR.form.field.ComboBox", {
+    override: "Ext.form.field.ComboBox",
+    valueNotFoundText: undefined
+}, function() {
+    Ext.apply(Ext.form.field.ComboBox.prototype.defaultListConfig, {
+        loadingText: "Μεταφόρτωση δεδομένων..."
+    });
+});
+
+Ext.define("Ext.locale.el_GR.form.field.VTypes", {
+    override: "Ext.form.field.VTypes",
+    emailText: 'Το πεδίο δέχεται μόνο διευθύνσεις Email σε μορφή "user@example.com"',
+    urlText: 'Το πεδίο δέχεται μόνο URL σε μορφή "http:/' + '/www.example.com"',
+    alphaText: 'Το πεδίο δέχεται μόνο χαρακτήρες και _',
+    alphanumText: 'Το πεδίο δέχεται μόνο χαρακτήρες, αριθμούς και _'
+});
+
+Ext.define("Ext.locale.el_GR.form.field.HtmlEditor", {
+    override: "Ext.form.field.HtmlEditor",
+    createLinkText: 'Δώστε τη διεύθυνση (URL) για το σύνδεσμο (link):'
+}, function() {
+    Ext.apply(Ext.form.field.HtmlEditor.prototype, {
+        buttonTips: {
+            bold: {
+                title: 'Έντονα (Ctrl+B)',
+                text: 'Κάνετε το προεπιλεγμένο κείμενο έντονο.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            italic: {
+                title: 'Πλάγια (Ctrl+I)',
+                text: 'Κάνετε το προεπιλεγμένο κείμενο πλάγιο.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            underline: {
+                title: 'Υπογράμμιση (Ctrl+U)',
+                text: 'Υπογραμμίζετε το προεπιλεγμένο κείμενο.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            increasefontsize: {
+                title: 'Μεγέθυνση κειμένου',
+                text: 'Μεγαλώνετε τη γραμματοσειρά.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            decreasefontsize: {
+                title: 'Σμίκρυνση κειμένου',
+                text: 'Μικραίνετε τη γραμματοσειρά.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            backcolor: {
+                title: 'Χρώμα Φόντου Κειμένου',
+                text: 'Αλλάζετε το χρώμα στο φόντο του προεπιλεγμένου κειμένου.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            forecolor: {
+                title: 'Χρώμα Γραμματοσειράς',
+                text: 'Αλλάζετε το χρώμα στη γραμματοσειρά του προεπιλεγμένου κειμένου.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifyleft: {
+                title: 'Αριστερή Στοίχιση Κειμένου',
+                text: 'Στοιχίζετε το κείμενο στα αριστερά.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifycenter: {
+                title: 'Κεντράρισμα Κειμένου',
+                text: 'Στοιχίζετε το κείμενο στο κέντρο.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifyright: {
+                title: 'Δεξιά Στοίχιση Κειμένου',
+                text: 'Στοιχίζετε το κείμενο στα δεξιά.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            insertunorderedlist: {
+                title: 'Εισαγωγή Λίστας Κουκίδων',
+                text: 'Ξεκινήστε μια λίστα με κουκίδες.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            insertorderedlist: {
+                title: 'Εισαγωγή Λίστας Αρίθμησης',
+                text: 'Ξεκινήστε μια λίστα με αρίθμηση.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            createlink: {
+                title: 'Hyperlink',
+                text: 'Μετατρέπετε το προεπιλεγμένο κείμενο σε Link.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            sourceedit: {
+                title: 'Επεξεργασία Κώδικα',
+                text: 'Μεταβαίνετε στη λειτουργία επεξεργασίας κώδικα.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            }
+        }
+    });
+});
+
+Ext.define("Ext.locale.el_GR.grid.header.Container", {
+    override: "Ext.grid.header.Container",
+    sortAscText: "Αύξουσα ταξινόμηση",
+    sortDescText: "Φθίνουσα ταξινόμηση",
+    lockText: "Κλείδωμα στήλης",
+    unlockText: "Ξεκλείδωμα στήλης",
+    columnsText: "Στήλες"
+});
+
+Ext.define("Ext.locale.el_GR.grid.GroupingFeature", {
+    override: "Ext.grid.feature.Grouping",
+    emptyGroupText: '(Καμμία)',
+    groupByText: 'Ομαδοποίηση βάσει αυτού του πεδίου',
+    showGroupsText: 'Να εμφανίζεται στις ομάδες'
+});
+
+Ext.define("Ext.locale.el_GR.grid.PropertyColumnModel", {
+    override: "Ext.grid.PropertyColumnModel",
+    nameText: "Όνομα",
+    valueText: "Περιεχόμενο",
+    dateFormat: "d/m/Y"
+});
+
+Ext.define("Ext.locale.el_GR.window.MessageBox", {
+    override: "Ext.window.MessageBox",
+    buttonText: {
+        ok: "OK",
+        cancel: "Άκυρο",
+        yes: "Ναι",
+        no: "Όχι"
+    }    
+});
+
+// This is needed until we can refactor all of the locales into individual files
+Ext.define("Ext.locale.el_GR.Component", {	
+    override: "Ext.Component"
+});

文件差异内容过多而无法显示
+ 1 - 0
src/ext/packages/ext-locale/build/ext-locale-el_GR.js


+ 403 - 0
src/ext/packages/ext-locale/build/ext-locale-en-debug.js

@@ -0,0 +1,403 @@
+/**
+ * List compiled by mystix on the extjs.com forums.
+ * Thank you Mystix!
+ *
+ * English Translations
+ * updated to 2.2 by Condor (8 Aug 2008)
+ */
+Ext.onReady(function() {
+
+    if (Ext.data && Ext.data.Types) {
+        Ext.data.Types.stripRe = /[\$,%]/g;
+    }
+
+    if (Ext.Date) {
+        Ext.Date.monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
+
+        Ext.Date.getShortMonthName = function(month) {
+            return Ext.Date.monthNames[month].substring(0, 3);
+        };
+
+        Ext.Date.monthNumbers = {
+            Jan: 0,
+            Feb: 1,
+            Mar: 2,
+            Apr: 3,
+            May: 4,
+            Jun: 5,
+            Jul: 6,
+            Aug: 7,
+            Sep: 8,
+            Oct: 9,
+            Nov: 10,
+            Dec: 11
+        };
+
+        Ext.Date.getMonthNumber = function(name) {
+            return Ext.Date.monthNumbers[name.substring(0, 1).toUpperCase() + name.substring(1, 3).toLowerCase()];
+        };
+
+        Ext.Date.dayNames = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
+
+        Ext.Date.getShortDayName = function(day) {
+            return Ext.Date.dayNames[day].substring(0, 3);
+        };
+
+        Ext.Date.parseCodes.S.s = "(?:st|nd|rd|th)";
+    }
+    
+    if (Ext.util && Ext.util.Format) {
+        Ext.apply(Ext.util.Format, {
+            thousandSeparator: ',',
+            decimalSeparator: '.',
+            currencySign: '$',
+            dateFormat: 'm/d/Y'
+        });
+    }
+});
+
+Ext.define("Ext.locale.en.data.validator.Bound", {
+    override: "Ext.data.validator.Bound",
+    emptyMessage: "Must be present"
+});
+
+Ext.define("Ext.locale.en.data.validator.Email", {
+    override: "Ext.data.validator.Email",
+    message: "Is not a valid email address"
+});
+
+Ext.define("Ext.locale.en.data.validator.Exclusion", {
+    override: "Ext.data.validator.Exclusion",
+    message: "Is a value that has been excluded"
+});
+
+Ext.define("Ext.locale.en.data.validator.Format", {
+    override: "Ext.data.validator.Format",
+    message: "Is in the wrong format"
+});
+
+Ext.define("Ext.locale.en.data.validator.Inclusion", {
+    override: "Ext.data.validator.Inclusion",
+    message: "Is not in the list of acceptable values"
+});
+
+Ext.define("Ext.locale.en.data.validator.Length", {
+    override: "Ext.data.validator.Length",
+    minOnlyMessage: "Length must be at least {0}",
+    maxOnlyMessage: "Length must be no more than {0}",
+    bothMessage: "Length must be between {0} and {1}"
+});
+
+Ext.define("Ext.locale.en.data.validator.Presence", {
+    override: "Ext.data.validator.Presence",
+    message: "Must be present"
+});
+
+Ext.define("Ext.locale.en.data.validator.Range", {
+    override: "Ext.data.validator.Range",
+    minOnlyMessage: "Must be must be at least {0}",
+    maxOnlyMessage: "Must be no more than than {0}",
+    bothMessage: "Must be between {0} and {1}",
+    nanMessage: "Must be numeric"
+});
+
+Ext.define("Ext.locale.en.view.View", {
+    override: "Ext.view.View",
+    emptyText: ""
+});
+
+Ext.define("Ext.locale.en.grid.plugin.DragDrop", {
+    override: "Ext.grid.plugin.DragDrop",
+    dragText: "{0} selected row{1}"
+});
+
+// changing the msg text below will affect the LoadMask
+Ext.define("Ext.locale.en.view.AbstractView", {
+    override: "Ext.view.AbstractView",
+    loadingText: "Loading..."
+});
+
+Ext.define("Ext.locale.en.picker.Date", {
+    override: "Ext.picker.Date",
+    todayText: "Today",
+    minText: "This date is before the minimum date",
+    maxText: "This date is after the maximum date",
+    disabledDaysText: "",
+    disabledDatesText: "",
+    nextText: 'Next Month (Control+Right)',
+    prevText: 'Previous Month (Control+Left)',
+    monthYearText: 'Choose a month (Control+Up/Down to move years)',
+    todayTip: "{0} (Spacebar)",
+    format: "m/d/y",
+    startDay: 0
+});
+
+Ext.define("Ext.locale.en.picker.Month", {
+    override: "Ext.picker.Month",
+    okText: "&#160;OK&#160;",
+    cancelText: "Cancel"
+});
+
+Ext.define("Ext.locale.en.toolbar.Paging", {
+    override: "Ext.PagingToolbar",
+    beforePageText: "Page",
+    afterPageText: "of {0}",
+    firstText: "First Page",
+    prevText: "Previous Page",
+    nextText: "Next Page",
+    lastText: "Last Page",
+    refreshText: "Refresh",
+    displayMsg: "Displaying {0} - {1} of {2}",
+    emptyMsg: 'No data to display'
+});
+
+Ext.define("Ext.locale.en.form.Basic", {
+    override: "Ext.form.Basic",
+    waitTitle: "Please Wait..."
+});
+
+Ext.define("Ext.locale.en.form.field.Base", {
+    override: "Ext.form.field.Base",
+    invalidText: "The value in this field is invalid"
+});
+
+Ext.define("Ext.locale.en.form.field.Text", {
+    override: "Ext.form.field.Text",
+    minLengthText: "The minimum length for this field is {0}",
+    maxLengthText: "The maximum length for this field is {0}",
+    blankText: "This field is required",
+    regexText: "",
+    emptyText: null
+});
+
+Ext.define("Ext.locale.en.form.field.Number", {
+    override: "Ext.form.field.Number",
+    decimalPrecision: 2,
+    minText: "The minimum value for this field is {0}",
+    maxText: "The maximum value for this field is {0}",
+    nanText: "{0} is not a valid number"
+});
+
+Ext.define("Ext.locale.en.form.field.Date", {
+    override: "Ext.form.field.Date",
+    disabledDaysText: "Disabled",
+    disabledDatesText: "Disabled",
+    minText: "The date in this field must be after {0}",
+    maxText: "The date in this field must be before {0}",
+    invalidText: "{0} is not a valid date - it must be in the format {1}",
+    format: "m/d/y",
+    altFormats: "m/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d|Y-m-d"
+});
+
+Ext.define("Ext.locale.en.form.field.ComboBox", {
+    override: "Ext.form.field.ComboBox",
+    valueNotFoundText: undefined
+}, function() {
+    Ext.apply(Ext.form.field.ComboBox.prototype.defaultListConfig, {
+        loadingText: "Loading..."
+    });
+});
+
+Ext.define("Ext.locale.en.form.field.VTypes", {
+    override: "Ext.form.field.VTypes",
+    emailText: 'This field should be an e-mail address in the format "user@example.com"',
+    urlText: 'This field should be a URL in the format "http:/' + '/www.example.com"',
+    alphaText: 'This field should only contain letters and _',
+    alphanumText: 'This field should only contain letters, numbers and _'
+});
+
+Ext.define("Ext.locale.en.form.field.HtmlEditor", {
+    override: "Ext.form.field.HtmlEditor",
+    createLinkText: 'Please enter the URL for the link:'
+}, function() {
+    Ext.apply(Ext.form.field.HtmlEditor.prototype, {
+        buttonTips: {
+            bold: {
+                title: 'Bold (Ctrl+B)',
+                text: 'Make the selected text bold.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            italic: {
+                title: 'Italic (Ctrl+I)',
+                text: 'Make the selected text italic.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            underline: {
+                title: 'Underline (Ctrl+U)',
+                text: 'Underline the selected text.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            increasefontsize: {
+                title: 'Grow Text',
+                text: 'Increase the font size.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            decreasefontsize: {
+                title: 'Shrink Text',
+                text: 'Decrease the font size.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            backcolor: {
+                title: 'Text Highlight Color',
+                text: 'Change the background color of the selected text.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            forecolor: {
+                title: 'Font Color',
+                text: 'Change the color of the selected text.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifyleft: {
+                title: 'Align Text Left',
+                text: 'Align text to the left.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifycenter: {
+                title: 'Center Text',
+                text: 'Center text in the editor.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifyright: {
+                title: 'Align Text Right',
+                text: 'Align text to the right.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            insertunorderedlist: {
+                title: 'Bullet List',
+                text: 'Start a bulleted list.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            insertorderedlist: {
+                title: 'Numbered List',
+                text: 'Start a numbered list.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            createlink: {
+                title: 'Hyperlink',
+                text: 'Make the selected text a hyperlink.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            sourceedit: {
+                title: 'Source Edit',
+                text: 'Switch to source editing mode.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            }
+        }
+    });
+});
+
+Ext.define("Ext.locale.en.grid.header.Container", {
+    override: "Ext.grid.header.Container",
+    sortAscText: "Sort Ascending",
+    sortDescText: "Sort Descending",
+    columnsText: "Columns"
+});
+
+Ext.define("Ext.locale.en.grid.GroupingFeature", {
+    override: "Ext.grid.feature.Grouping",
+    emptyGroupText: '(None)',
+    groupByText: 'Group by this field',
+    showGroupsText: 'Show in Groups'
+});
+
+Ext.define("Ext.locale.en.grid.PropertyColumnModel", {
+    override: "Ext.grid.PropertyColumnModel",
+    nameText: "Name",
+    valueText: "Value",
+    dateFormat: "m/j/Y",
+    trueText: "true",
+    falseText: "false"
+});
+
+Ext.define("Ext.locale.en.grid.BooleanColumn", {
+    override: "Ext.grid.BooleanColumn",
+    trueText: "true",
+    falseText: "false",
+    undefinedText: '&#160;'
+});
+
+Ext.define("Ext.locale.en.grid.NumberColumn", {
+    override: "Ext.grid.NumberColumn",
+    format: '0,000.00'
+});
+
+Ext.define("Ext.locale.en.grid.DateColumn", {
+    override: "Ext.grid.DateColumn",
+    format: 'm/d/Y'
+});
+
+Ext.define("Ext.locale.en.form.field.Time", {
+    override: "Ext.form.field.Time",
+    minText: "The time in this field must be equal to or after {0}",
+    maxText: "The time in this field must be equal to or before {0}",
+    invalidText: "{0} is not a valid time",
+    format: "g:i A",
+    altFormats: "g:ia|g:iA|g:i a|g:i A|h:i|g:i|H:i|ga|ha|gA|h a|g a|g A|gi|hi|gia|hia|g|H"
+});
+
+Ext.define("Ext.locale.en.form.field.File", {
+    override: "Ext.form.field.File",
+    buttonText: "Browse..."
+});
+
+Ext.define("Ext.locale.en.form.CheckboxGroup", {
+    override: "Ext.form.CheckboxGroup",
+    blankText: "You must select at least one item in this group"
+});
+
+Ext.define("Ext.locale.en.form.RadioGroup", {
+    override: "Ext.form.RadioGroup",
+    blankText: "You must select one item in this group"
+});
+
+Ext.define("Ext.locale.en.window.MessageBox", {
+    override: "Ext.window.MessageBox",
+    buttonText: {
+        ok: "OK",
+        cancel: "Cancel",
+        yes: "Yes",
+        no: "No"
+    }    
+});
+
+Ext.define("Ext.locale.en.grid.filters.Filters", {
+    override: "Ext.grid.filters.Filters",
+    menuFilterText: "Filters"
+});
+
+Ext.define("Ext.locale.en.grid.filters.filter.Boolean", {
+    override: "Ext.grid.filters.filter.Boolean",
+    yesText: "Yes",
+    noText: "No"
+});
+
+Ext.define("Ext.locale.en.grid.filters.filter.Date", {
+    override: "Ext.grid.filters.filter.Date",
+    fields: {
+        lt: {text: 'Before'},
+        gt: {text: 'After'},
+        eq: {text: 'On'}
+    },
+    // Defaults to Ext.Date.defaultFormat
+    dateFormat: null
+});
+
+Ext.define("Ext.locale.en.grid.filters.filter.List", {
+    override: "Ext.grid.filters.filter.List",
+    loadingText: "Loading..."
+});
+
+Ext.define("Ext.locale.en.grid.filters.filter.Number", {
+    override: "Ext.grid.filters.filter.Number",
+    emptyText: "Enter Number..."
+});
+
+Ext.define("Ext.locale.en.grid.filters.filter.String", {
+    override: "Ext.grid.filters.filter.String",
+    emptyText: "Enter Filter Text..."
+});
+
+// This is needed until we can refactor all of the locales into individual files
+Ext.define("Ext.locale.en.Component", {	
+    override: "Ext.Component"
+});

文件差异内容过多而无法显示
+ 1 - 0
src/ext/packages/ext-locale/build/ext-locale-en.js


+ 388 - 0
src/ext/packages/ext-locale/build/ext-locale-en_AU-debug.js

@@ -0,0 +1,388 @@
+/**
+ * List compiled by mystix on the extjs.com forums.
+ * Thank you Mystix!
+ *
+ * English (AU) Translations
+ * created by Dawesi (2012) - modified from en_GB
+ */
+Ext.onReady(function() {
+
+    if (Ext.Date) {
+        Ext.Date.defaultDateFormat = "d/m/Y";
+        Ext.Date.monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
+
+        Ext.Date.getShortMonthName = function(month) {
+            return Ext.Date.monthNames[month].substring(0, 3);
+        };
+
+        Ext.Date.monthNumbers = {
+            Jan: 0,
+            Feb: 1,
+            Mar: 2,
+            Apr: 3,
+            May: 4,
+            Jun: 5,
+            Jul: 6,
+            Aug: 7,
+            Sep: 8,
+            Oct: 9,
+            Nov: 10,
+            Dec: 11
+        };
+
+        Ext.Date.getMonthNumber = function(name) {
+            return Ext.Date.monthNumbers[name.substring(0, 1).toUpperCase() + name.substring(1, 3).toLowerCase()];
+        };
+
+        Ext.Date.dayNames = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
+
+        Ext.Date.getShortDayName = function(day) {
+            return Ext.Date.dayNames[day].substring(0, 3);
+        };
+
+        Ext.Date.parseCodes.S.s = "(?:st|nd|rd|th)";
+    }
+
+    if (Ext.util && Ext.util.Format) {
+        Ext.apply(Ext.util.Format, {
+            thousandSeparator: ',',
+            decimalSeparator: '.',
+            currencySign: '$',     // AU dollar
+            dateFormat: 'd/m/Y'
+        });
+    }
+});
+
+Ext.define("Ext.locale.en_AU.data.validator.Bound", {
+    override: "Ext.data.validator.Bound",
+    emptyMessage: "Must be present"
+});
+
+Ext.define("Ext.locale.en_AU.data.validator.Email", {
+    override: "Ext.data.validator.Email",
+    message: "Is not a valid email address"
+});
+
+Ext.define("Ext.locale.en_AU.data.validator.Exclusion", {
+    override: "Ext.data.validator.Exclusion",
+    message: "Is a value that has been excluded"
+});
+
+Ext.define("Ext.locale.en_AU.data.validator.Format", {
+    override: "Ext.data.validator.Format",
+    message: "Is in the wrong format"
+});
+
+Ext.define("Ext.locale.en_AU.data.validator.Inclusion", {
+    override: "Ext.data.validator.Inclusion",
+    message: "Is not in the list of acceptable values"
+});
+
+Ext.define("Ext.locale.en_AU.data.validator.Length", {
+    override: "Ext.data.validator.Length",
+    minOnlyMessage: "Length must be at least {0}",
+    maxOnlyMessage: "Length must be no more than {0}",
+    bothMessage: "Length must be between {0} and {1}"
+});
+
+Ext.define("Ext.locale.en_AU.data.validator.Presence", {
+    override: "Ext.data.validator.Presence",
+    message: "Must be present"
+});
+
+Ext.define("Ext.locale.en_AU.data.validator.Range", {
+    override: "Ext.data.validator.Range",
+    minOnlyMessage: "Must be must be at least {0}",
+    maxOnlyMessage: "Must be no more than than {0}",
+    bothMessage: "Must be between {0} and {1}",
+    nanMessage: "Must be numeric"
+});
+
+Ext.define("Ext.locale.en_AU.view.View", {
+    override: "Ext.view.View",
+    emptyText: ""
+});
+
+Ext.define("Ext.locale.en_AU.grid.plugin.DragDrop", {
+    override: "Ext.grid.plugin.DragDrop",
+    dragText: "{0} selected row{1}"
+});
+
+// changing the msg text below will affect the LoadMask
+Ext.define("Ext.locale.en_AU.view.AbstractView", {
+    override: "Ext.view.AbstractView",
+    loadingText: "Loading..."
+});
+
+Ext.define("Ext.locale.en_AU.picker.Date", {
+    override: "Ext.picker.Date",
+    todayText: "Today",
+    minText: "This date is before the minimum date",
+    maxText: "This date is after the maximum date",
+    disabledDaysText: "",
+    disabledDatesText: "",
+    nextText: 'Next Month (Control+Right)',
+    prevText: 'Previous Month (Control+Left)',
+    monthYearText: 'Choose a month (Control+Up/Down to move years)',
+    todayTip: "{0} (Spacebar)",
+    format: "d/m/Y",
+    startDay: 0
+});
+
+Ext.define("Ext.locale.en_AU.picker.Month", {
+    override: "Ext.picker.Month",
+    okText: "&#160;OK&#160;",
+    cancelText: "Cancel"
+});
+
+Ext.define("Ext.locale.en_AU.toolbar.Paging", {
+    override: "Ext.PagingToolbar",
+    beforePageText: "Page",
+    afterPageText: "of {0}",
+    firstText: "First Page",
+    prevText: "Previous Page",
+    nextText: "Next Page",
+    lastText: "Last Page",
+    refreshText: "Refresh",
+    displayMsg: "Displaying {0} - {1} of {2}",
+    emptyMsg: 'No data to display'
+});
+
+Ext.define("Ext.locale.en_AU.form.Basic", {
+    override: "Ext.form.Basic",
+    waitTitle: "Please Wait..."
+});
+
+Ext.define("Ext.locale.en_AU.form.field.Base", {
+    override: "Ext.form.field.Base",
+    invalidText: "The value in this field is invalid"
+});
+
+Ext.define("Ext.locale.en_AU.form.field.Text", {
+    override: "Ext.form.field.Text",
+    minLengthText: "The minimum length for this field is {0}",
+    maxLengthText: "The maximum length for this field is {0}",
+    blankText: "This field is required",
+    regexText: "",
+    emptyText: null
+});
+
+Ext.define("Ext.locale.en_AU.form.field.Number", {
+    override: "Ext.form.field.Number",
+    decimalPrecision: 2,
+    minText: "The minimum value for this field is {0}",
+    maxText: "The maximum value for this field is {0}",
+    nanText: "{0} is not a valid number"
+});
+
+Ext.define("Ext.locale.en_AU.form.field.Date", {
+    override: "Ext.form.field.Date",
+    disabledDaysText: "Disabled",
+    disabledDatesText: "Disabled",
+    minText: "The date in this field must be after {0}",
+    maxText: "The date in this field must be before {0}",
+    invalidText: "{0} is not a valid date - it must be in the format {1}",
+    format: "d/m/y",
+    altFormats: "d/m/Y|d/m/y|d-m-y|d-m-Y|d/m|d-m|dm|dmy|dmY|d|Y-m-d"
+});
+
+Ext.define("Ext.locale.en_AU.form.field.ComboBox", {
+    override: "Ext.form.field.ComboBox",
+    valueNotFoundText: undefined
+}, function() {
+    Ext.apply(Ext.form.field.ComboBox.prototype.defaultListConfig, {
+        loadingText: "Loading..."
+    });
+});
+
+Ext.define("Ext.locale.en_AU.form.field.VTypes", {
+    override: "Ext.form.field.VTypes",
+    emailText: 'This field should be an e-mail address in the format "user@example.com"',
+    urlText: 'This field should be a URL in the format "http:/' + '/www.example.com"',
+    alphaText: 'This field should only contain letters and _',
+    alphanumText: 'This field should only contain letters, numbers and _'
+});
+
+Ext.define("Ext.locale.en_AU.form.field.HtmlEditor", {
+    override: "Ext.form.field.HtmlEditor",
+    createLinkText: 'Please enter the URL for the link:'
+}, function() {
+    Ext.apply(Ext.form.field.HtmlEditor.prototype, {
+        buttonTips: {
+            bold: {
+                title: 'Bold (Ctrl+B)',
+                text: 'Make the selected text bold.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            italic: {
+                title: 'Italic (Ctrl+I)',
+                text: 'Make the selected text italic.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            underline: {
+                title: 'Underline (Ctrl+U)',
+                text: 'Underline the selected text.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            increasefontsize: {
+                title: 'Grow Text',
+                text: 'Increase the font size.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            decreasefontsize: {
+                title: 'Shrink Text',
+                text: 'Decrease the font size.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            backcolor: {
+                title: 'Text Highlight Colour',
+                text: 'Change the background colour of the selected text.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            forecolor: {
+                title: 'Font Colour',
+                text: 'Change the colour of the selected text.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifyleft: {
+                title: 'Align Text Left',
+                text: 'Align text to the left.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifycenter: {
+                title: 'Centre Text',
+                text: 'Centre text in the editor.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifyright: {
+                title: 'Align Text Right',
+                text: 'Align text to the right.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            insertunorderedlist: {
+                title: 'Bullet List',
+                text: 'Start a bulleted list.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            insertorderedlist: {
+                title: 'Numbered List',
+                text: 'Start a numbered list.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            createlink: {
+                title: 'Hyperlink',
+                text: 'Make the selected text a hyperlink.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            sourceedit: {
+                title: 'Source Edit',
+                text: 'Switch to source editing mode.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            }
+        }
+    });
+});
+
+Ext.define("Ext.locale.en_AU.grid.header.Container", {
+    override: "Ext.grid.header.Container",
+    sortAscText: "Sort Ascending",
+    sortDescText: "Sort Descending",
+    columnsText: "Columns"
+});
+
+Ext.define("Ext.locale.en_AU.grid.DateColumn", {        
+    override: "Ext.grid.DateColumn",       
+    format: 'd/m/Y'    
+});  
+
+Ext.define("Ext.locale.en_AU.grid.GroupingFeature", {
+    override: "Ext.grid.feature.Grouping",
+    emptyGroupText: '(None)',
+    groupByText: 'Group by this field',
+    showGroupsText: 'Show in Groups'
+});
+
+Ext.define("Ext.locale.en_AU.grid.PropertyColumnModel", {
+    override: "Ext.grid.PropertyColumnModel",
+    nameText: "Name",
+    valueText: "Value",
+    dateFormat: "j/m/Y",
+    trueText: "true",
+    falseText: "false"
+});
+
+Ext.define("Ext.locale.en_AU.form.field.Time", {
+    override: "Ext.form.field.Time",
+    minText: "The time in this field must be equal to or after {0}",
+    maxText: "The time in this field must be equal to or before {0}",
+    invalidText: "{0} is not a valid time",
+    format: "g:i A",
+    altFormats: "g:ia|g:iA|g:i a|g:i A|h:i|g:i|H:i|ga|ha|gA|h a|g a|g A|gi|hi|gia|hia|g|H"
+});
+
+Ext.define("Ext.locale.en_AU.form.field.File", {
+    override: "Ext.form.field.File",
+    buttonText: "Browse..."
+});
+
+Ext.define("Ext.locale.en_AU.form.CheckboxGroup", {
+    override: "Ext.form.CheckboxGroup",
+    blankText: "You must select at least one item in this group"
+});
+
+Ext.define("Ext.locale.en_AU.form.RadioGroup", {
+    override: "Ext.form.RadioGroup",
+    blankText: "You must select one item in this group"
+});
+
+Ext.define("Ext.locale.en_AU.window.MessageBox", {
+    override: "Ext.window.MessageBox",
+    buttonText: {
+        ok: "OK",
+        cancel: "Cancel",
+        yes: "Yes",
+        no: "No"
+    }    
+});
+
+Ext.define("Ext.locale.en_AU.grid.filters.Filters", {
+    override: "Ext.grid.filters.Filters",
+    menuFilterText: "Filters"
+});
+
+Ext.define("Ext.locale.en_AU.grid.filters.filter.Boolean", {
+    override: "Ext.grid.filters.filter.Boolean",
+    yesText: "Yes",
+    noText: "No"
+});
+
+Ext.define("Ext.locale.en_AU.grid.filters.filter.Date", {
+    override: "Ext.grid.filters.filter.Date",
+    fields: {
+        lt: {text: 'Before'},
+        gt: {text: 'After'},
+        eq: {text: 'On'}
+    },
+    // Defaults to Ext.Date.defaultFormat
+    dateFormat: null
+});
+
+Ext.define("Ext.locale.en_AU.grid.filters.filter.List", {
+    override: "Ext.grid.filters.filter.List",
+    loadingText: "Loading..."
+});
+
+Ext.define("Ext.locale.en_AU.grid.filters.filter.Number", {
+    override: "Ext.grid.filters.filter.Number",
+    emptyText: "Enter Number..."
+});
+
+Ext.define("Ext.locale.en_AU.grid.filters.filter.String", {
+    override: "Ext.grid.filters.filter.String",
+    emptyText: "Enter Filter Text..."
+});
+
+// This is needed until we can refactor all of the locales into individual files
+Ext.define("Ext.locale.en_AU.Component", {	
+    override: "Ext.Component"
+});

文件差异内容过多而无法显示
+ 1 - 0
src/ext/packages/ext-locale/build/ext-locale-en_AU.js


+ 390 - 0
src/ext/packages/ext-locale/build/ext-locale-en_GB-debug.js

@@ -0,0 +1,390 @@
+/**
+ * List compiled by mystix on the extjs.com forums.
+ * Thank you Mystix!
+ *
+ * English (UK) Translations
+ * updated to 2.2 by Condor (8 Aug 2008)
+ * updated by Dawesi (7 Dec 2012)
+ */
+Ext.onReady(function() {
+
+    if (Ext.Date) {
+        Ext.Date.defaultDateFormat = "d/m/Y";
+        Ext.Date.monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
+
+        Ext.Date.getShortMonthName = function(month) {
+            return Ext.Date.monthNames[month].substring(0, 3);
+        };
+
+        Ext.Date.monthNumbers = {
+            Jan: 0,
+            Feb: 1,
+            Mar: 2,
+            Apr: 3,
+            May: 4,
+            Jun: 5,
+            Jul: 6,
+            Aug: 7,
+            Sep: 8,
+            Oct: 9,
+            Nov: 10,
+            Dec: 11
+        };
+
+        Ext.Date.getMonthNumber = function(name) {
+            return Ext.Date.monthNumbers[name.substring(0, 1).toUpperCase() + name.substring(1, 3).toLowerCase()];
+        };
+
+        Ext.Date.dayNames = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
+
+        Ext.Date.getShortDayName = function(day) {
+            return Ext.Date.dayNames[day].substring(0, 3);
+        };
+
+        Ext.Date.parseCodes.S.s = "(?:st|nd|rd|th)";
+    }
+
+    if (Ext.util && Ext.util.Format) {
+        Ext.apply(Ext.util.Format, {
+            thousandSeparator: ',',
+            decimalSeparator: '.',
+            currencySign: '£',
+            // UK Pound
+            dateFormat: 'd/m/Y'
+        });
+    }
+});
+
+Ext.define("Ext.locale.en_GB.data.validator.Bound", {
+    override: "Ext.data.validator.Bound",
+    emptyMessage: "Must be present"
+});
+
+Ext.define("Ext.locale.en_GB.data.validator.Email", {
+    override: "Ext.data.validator.Email",
+    message: "Is not a valid email address"
+});
+
+Ext.define("Ext.locale.en_GB.data.validator.Exclusion", {
+    override: "Ext.data.validator.Exclusion",
+    message: "Is a value that has been excluded"
+});
+
+Ext.define("Ext.locale.en_GB.data.validator.Format", {
+    override: "Ext.data.validator.Format",
+    message: "Is in the wrong format"
+});
+
+Ext.define("Ext.locale.en_GB.data.validator.Inclusion", {
+    override: "Ext.data.validator.Inclusion",
+    message: "Is not in the list of acceptable values"
+});
+
+Ext.define("Ext.locale.en_GB.data.validator.Length", {
+    override: "Ext.data.validator.Length",
+    minOnlyMessage: "Length must be at least {0}",
+    maxOnlyMessage: "Length must be no more than {0}",
+    bothMessage: "Length must be between {0} and {1}"
+});
+
+Ext.define("Ext.locale.en_GB.data.validator.Presence", {
+    override: "Ext.data.validator.Presence",
+    message: "Must be present"
+});
+
+Ext.define("Ext.locale.en_GB.data.validator.Range", {
+    override: "Ext.data.validator.Range",
+    minOnlyMessage: "Must be must be at least {0}",
+    maxOnlyMessage: "Must be no more than than {0}",
+    bothMessage: "Must be between {0} and {1}",
+    nanMessage: "Must be numeric"
+});
+
+Ext.define("Ext.locale.en_GB.view.View", {
+    override: "Ext.view.View",
+    emptyText: ""
+});
+
+Ext.define("Ext.locale.en_GB.grid.plugin.DragDrop", {
+    override: "Ext.grid.plugin.DragDrop",
+    dragText: "{0} selected row{1}"
+});
+
+// changing the msg text below will affect the LoadMask
+Ext.define("Ext.locale.en_GB.view.AbstractView", {
+    override: "Ext.view.AbstractView",
+    loadingText: "Loading..."
+});
+
+Ext.define("Ext.locale.en_GB.picker.Date", {
+    override: "Ext.picker.Date",
+    todayText: "Today",
+    minText: "This date is before the minimum date",
+    maxText: "This date is after the maximum date",
+    disabledDaysText: "",
+    disabledDatesText: "",
+    nextText: 'Next Month (Control+Right)',
+    prevText: 'Previous Month (Control+Left)',
+    monthYearText: 'Choose a month (Control+Up/Down to move years)',
+    todayTip: "{0} (Spacebar)",
+    format: "d/m/Y",
+    startDay: 0
+});
+
+Ext.define("Ext.locale.en_GB.picker.Month", {
+    override: "Ext.picker.Month",
+    okText: "&#160;OK&#160;",
+    cancelText: "Cancel"
+});
+
+Ext.define("Ext.locale.en_GB.toolbar.Paging", {
+    override: "Ext.PagingToolbar",
+    beforePageText: "Page",
+    afterPageText: "of {0}",
+    firstText: "First Page",
+    prevText: "Previous Page",
+    nextText: "Next Page",
+    lastText: "Last Page",
+    refreshText: "Refresh",
+    displayMsg: "Displaying {0} - {1} of {2}",
+    emptyMsg: 'No data to display'
+});
+
+Ext.define("Ext.locale.en_GB.form.Basic", {
+    override: "Ext.form.Basic",
+    waitTitle: "Please Wait..."
+});
+
+Ext.define("Ext.locale.en_GB.form.field.Base", {
+    override: "Ext.form.field.Base",
+    invalidText: "The value in this field is invalid"
+});
+
+Ext.define("Ext.locale.en_GB.form.field.Text", {
+    override: "Ext.form.field.Text",
+    minLengthText: "The minimum length for this field is {0}",
+    maxLengthText: "The maximum length for this field is {0}",
+    blankText: "This field is required",
+    regexText: "",
+    emptyText: null
+});
+
+Ext.define("Ext.locale.en_GB.form.field.Number", {
+    override: "Ext.form.field.Number",
+    decimalPrecision: 2,
+    minText: "The minimum value for this field is {0}",
+    maxText: "The maximum value for this field is {0}",
+    nanText: "{0} is not a valid number"
+});
+
+Ext.define("Ext.locale.en_GB.form.field.Date", {
+    override: "Ext.form.field.Date",
+    disabledDaysText: "Disabled",
+    disabledDatesText: "Disabled",
+    minText: "The date in this field must be after {0}",
+    maxText: "The date in this field must be before {0}",
+    invalidText: "{0} is not a valid date - it must be in the format {1}",
+    format: "d/m/y",
+    altFormats: "d/m/Y|d/m/y|d-m-y|d-m-Y|d/m|d-m|dm|dmy|dmY|d|Y-m-d"
+});
+
+Ext.define("Ext.locale.en_GB.form.field.ComboBox", {
+    override: "Ext.form.field.ComboBox",
+    valueNotFoundText: undefined
+}, function() {
+    Ext.apply(Ext.form.field.ComboBox.prototype.defaultListConfig, {
+        loadingText: "Loading..."
+    });
+});
+
+Ext.define("Ext.locale.en_GB.form.field.VTypes", {
+    override: "Ext.form.field.VTypes",
+    emailText: 'This field should be an e-mail address in the format "user@example.com"',
+    urlText: 'This field should be a URL in the format "http:/' + '/www.example.com"',
+    alphaText: 'This field should only contain letters and _',
+    alphanumText: 'This field should only contain letters, numbers and _'
+});
+
+Ext.define("Ext.locale.en_GB.form.field.HtmlEditor", {
+    override: "Ext.form.field.HtmlEditor",
+    createLinkText: 'Please enter the URL for the link:'
+}, function() {
+    Ext.apply(Ext.form.field.HtmlEditor.prototype, {
+        buttonTips: {
+            bold: {
+                title: 'Bold (Ctrl+B)',
+                text: 'Make the selected text bold.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            italic: {
+                title: 'Italic (Ctrl+I)',
+                text: 'Make the selected text italic.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            underline: {
+                title: 'Underline (Ctrl+U)',
+                text: 'Underline the selected text.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            increasefontsize: {
+                title: 'Grow Text',
+                text: 'Increase the font size.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            decreasefontsize: {
+                title: 'Shrink Text',
+                text: 'Decrease the font size.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            backcolor: {
+                title: 'Text Highlight Colour',
+                text: 'Change the background colour of the selected text.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            forecolor: {
+                title: 'Font Colour',
+                text: 'Change the colour of the selected text.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifyleft: {
+                title: 'Align Text Left',
+                text: 'Align text to the left.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifycenter: {
+                title: 'Centre Text',
+                text: 'Centre text in the editor.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifyright: {
+                title: 'Align Text Right',
+                text: 'Align text to the right.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            insertunorderedlist: {
+                title: 'Bullet List',
+                text: 'Start a bulleted list.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            insertorderedlist: {
+                title: 'Numbered List',
+                text: 'Start a numbered list.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            createlink: {
+                title: 'Hyperlink',
+                text: 'Make the selected text a hyperlink.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            sourceedit: {
+                title: 'Source Edit',
+                text: 'Switch to source editing mode.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            }
+        }
+    });
+});
+
+Ext.define("Ext.locale.en_GB.grid.header.Container", {
+    override: "Ext.grid.header.Container",
+    sortAscText: "Sort Ascending",
+    sortDescText: "Sort Descending",
+    columnsText: "Columns"
+});
+
+Ext.define("Ext.locale.en_GB.grid.DateColumn", {        
+    override: "Ext.grid.DateColumn",       
+    format: 'd/m/Y'    
+});  
+
+Ext.define("Ext.locale.en_GB.grid.GroupingFeature", {
+    override: "Ext.grid.feature.Grouping",
+    emptyGroupText: '(None)',
+    groupByText: 'Group by this field',
+    showGroupsText: 'Show in Groups'
+});
+
+Ext.define("Ext.locale.en_GB.grid.PropertyColumnModel", {
+    override: "Ext.grid.PropertyColumnModel",
+    nameText: "Name",
+    valueText: "Value",
+    dateFormat: "j/m/Y",
+    trueText: "true",
+    falseText: "false"
+});
+
+Ext.define("Ext.locale.en_GB.form.field.Time", {
+    override: "Ext.form.field.Time",
+    minText: "The time in this field must be equal to or after {0}",
+    maxText: "The time in this field must be equal to or before {0}",
+    invalidText: "{0} is not a valid time",
+    format: "g:i A",
+    altFormats: "g:ia|g:iA|g:i a|g:i A|h:i|g:i|H:i|ga|ha|gA|h a|g a|g A|gi|hi|gia|hia|g|H"
+});
+
+Ext.define("Ext.locale.en_GB.form.field.File", {
+    override: "Ext.form.field.File",
+    buttonText: "Browse..."
+});
+
+Ext.define("Ext.locale.en_GB.form.CheckboxGroup", {
+    override: "Ext.form.CheckboxGroup",
+    blankText: "You must select at least one item in this group"
+});
+
+Ext.define("Ext.locale.en_GB.form.RadioGroup", {
+    override: "Ext.form.RadioGroup",
+    blankText: "You must select one item in this group"
+});
+
+Ext.define("Ext.locale.en_GB.window.MessageBox", {
+    override: "Ext.window.MessageBox",
+    buttonText: {
+        ok: "OK",
+        cancel: "Cancel",
+        yes: "Yes",
+        no: "No"
+    }    
+});
+
+Ext.define("Ext.locale.en_GB.grid.filters.Filters", {
+    override: "Ext.grid.filters.Filters",
+    menuFilterText: "Filters"
+});
+
+Ext.define("Ext.locale.en_GB.grid.filters.filter.Boolean", {
+    override: "Ext.grid.filters.filter.Boolean",
+    yesText: "Yes",
+    noText: "No"
+});
+
+Ext.define("Ext.locale.en_GB.grid.filters.filter.Date", {
+    override: "Ext.grid.filters.filter.Date",
+    fields: {
+        lt: {text: 'Before'},
+        gt: {text: 'After'},
+        eq: {text: 'On'}
+    },
+    // Defaults to Ext.Date.defaultFormat
+    dateFormat: null
+});
+
+Ext.define("Ext.locale.en_GB.grid.filters.filter.List", {
+    override: "Ext.grid.filters.filter.List",
+    loadingText: "Loading..."
+});
+
+Ext.define("Ext.locale.en_GB.grid.filters.filter.Number", {
+    override: "Ext.grid.filters.filter.Number",
+    emptyText: "Enter Number..."
+});
+
+Ext.define("Ext.locale.en_GB.grid.filters.filter.String", {
+    override: "Ext.grid.filters.filter.String",
+    emptyText: "Enter Filter Text..."
+});
+
+// This is needed until we can refactor all of the locales into individual files
+Ext.define("Ext.locale.en_GB.Component", {	
+    override: "Ext.Component"
+});

文件差异内容过多而无法显示
+ 1 - 0
src/ext/packages/ext-locale/build/ext-locale-en_GB.js


+ 310 - 0
src/ext/packages/ext-locale/build/ext-locale-es-debug.js

@@ -0,0 +1,310 @@
+/**
+ * Spanish/Latin American Translation by genius551v 04-08-2007
+ * Revised by efege, 2007-04-15.
+ * Revised by Rafaga2k 10-01-2007 (mm/dd/yyyy)
+ * Revised by FeDe 12-13-2007 (mm/dd/yyyy)
+ * Synchronized with 2.2 version of ext-lang-en.js (provided by Condor 8 aug 2008)
+ *     by halkon_polako 14-aug-2008
+ */
+Ext.onReady(function() {
+
+    if (Ext.Date) {
+        Ext.Date.monthNames = ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"];
+
+        Ext.Date.getShortMonthName = function(month) {
+            return Ext.Date.monthNames[month].substring(0, 3);
+        };
+
+        Ext.Date.monthNumbers = {
+            Ene: 0,
+            Feb: 1,
+            Mar: 2,
+            Abr: 3,
+            May: 4,
+            Jun: 5,
+            Jul: 6,
+            Ago: 7,
+            Sep: 8,
+            Oct: 9,
+            Nov: 10,
+            Dic: 11
+        };
+
+        Ext.Date.getMonthNumber = function(name) {
+            return Ext.Date.monthNumbers[name.substring(0, 1).toUpperCase() + name.substring(1, 3).toLowerCase()];
+        };
+
+        Ext.Date.dayNames = ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"];
+
+        Ext.Date.getShortDayName = function(day) {
+            if (day == 3) return "Mié";
+            if (day == 6) return "Sáb";
+            return Ext.Date.dayNames[day].substring(0, 3);
+        };
+
+        Ext.Date.formatCodes.a = "(this.getHours() < 12 ? 'a.m.' : 'p.m.')";
+        Ext.Date.formatCodes.A = "(this.getHours() < 12 ? 'A.M.' : 'P.M.')";
+
+        // This will match am or a.m.
+        Ext.Date.parseCodes.a = Ext.Date.parseCodes.A = {
+            g:1,
+            c:"if (/(a\\.?m\\.?)/i.test(results[{0}])) {\n"
+                + "if (!h || h == 12) { h = 0; }\n"
+                + "} else { if (!h || h < 12) { h = (h || 0) + 12; }}",
+            s:"(A\\.?M\\.?|P\\.?M\\.?|a\\.?m\\.?|p\\.?m\\.?)",
+            calcAtEnd: true
+        };
+
+        Ext.Date.parseCodes.S.s = "(?:st|nd|rd|th)";
+    }
+
+    if (Ext.util && Ext.util.Format) {
+        Ext.apply(Ext.util.Format, {
+            thousandSeparator: '.',
+            decimalSeparator: ',',
+            currencySign: '\u20ac',
+            // Spanish Euro
+            dateFormat: 'd/m/Y'
+        });
+    }
+});
+
+Ext.define("Ext.locale.es.view.View", {
+    override: "Ext.view.View",
+    emptyText: ""
+});
+
+Ext.define("Ext.locale.es.grid.plugin.DragDrop", {
+    override: "Ext.grid.plugin.DragDrop",
+    dragText: "{0} fila(s) seleccionada(s)"
+});
+
+// changing the msg text below will affect the LoadMask
+Ext.define("Ext.locale.es.view.AbstractView", {
+    override: "Ext.view.AbstractView",
+    loadingText: "Cargando..."
+});
+
+Ext.define("Ext.locale.es.picker.Date", {
+    override: "Ext.picker.Date",
+    todayText: "Hoy",
+    minText: "Esta fecha es anterior a la fecha mínima",
+    maxText: "Esta fecha es posterior a la fecha máxima",
+    disabledDaysText: "",
+    disabledDatesText: "",
+    nextText: 'Mes Siguiente (Control+Right)',
+    prevText: 'Mes Anterior (Control+Left)',
+    monthYearText: 'Seleccione un mes (Control+Up/Down para desplazar el año)',
+    todayTip: "{0} (Barra espaciadora)",
+    format: "d/m/Y",
+    startDay: 1
+});
+
+Ext.define("Ext.locale.es.picker.Month", {
+    override: "Ext.picker.Month",
+    okText: "&#160;Aceptar&#160;",
+    cancelText: "Cancelar"
+});
+
+Ext.define("Ext.locale.es.toolbar.Paging", {
+    override: "Ext.PagingToolbar",
+    beforePageText: "Página",
+    afterPageText: "de {0}",
+    firstText: "Primera página",
+    prevText: "Página anterior",
+    nextText: "Página siguiente",
+    lastText: "Última página",
+    refreshText: "Actualizar",
+    displayMsg: "Mostrando {0} - {1} de {2}",
+    emptyMsg: 'Sin datos para mostrar'
+});
+
+Ext.define("Ext.locale.es.form.field.Base", {
+    override: "Ext.form.field.Base",
+    invalidText: "El valor en este campo es inválido"
+});
+
+Ext.define("Ext.locale.es.form.field.Text", {
+    override: "Ext.form.field.Text",
+    minLengthText: "El tamaño mínimo para este campo es de {0}",
+    maxLengthText: "El tamaño máximo para este campo es de {0}",
+    blankText: "Este campo es obligatorio",
+    regexText: "",
+    emptyText: null
+});
+
+Ext.define("Ext.locale.es.form.field.Number", {
+    override: "Ext.form.field.Number",
+    decimalPrecision: 2,
+    minText: "El valor mínimo para este campo es de {0}",
+    maxText: "El valor máximo para este campo es de {0}",
+    nanText: "{0} no es un número válido"
+});
+
+Ext.define("Ext.locale.es.form.field.File", { 
+    override: "Ext.form.field.File", 
+    buttonText: "Examinar..." 
+});
+
+Ext.define("Ext.locale.es.form.field.Date", {
+    override: "Ext.form.field.Date",
+    disabledDaysText: "Deshabilitado",
+    disabledDatesText: "Deshabilitado",
+    minText: "La fecha para este campo debe ser posterior a {0}",
+    maxText: "La fecha para este campo debe ser anterior a {0}",
+    invalidText: "{0} no es una fecha válida - debe tener el formato {1}",
+    format: "d/m/Y",
+    altFormats: "d/m/Y|d-m-y|d-m-Y|d/m|d-m|dm|dmy|dmY|d|Y-m-d"
+});
+
+Ext.define("Ext.locale.es.form.field.ComboBox", {
+    override: "Ext.form.field.ComboBox",
+    valueNotFoundText: undefined
+}, function() {
+    Ext.apply(Ext.form.field.ComboBox.prototype.defaultListConfig, {
+        loadingText: "Cargando..."
+    });
+});
+
+Ext.define("Ext.locale.es.form.field.VTypes", {
+    override: "Ext.form.field.VTypes",
+    emailText: 'Este campo debe ser una dirección de correo electrónico con el formato "usuario@dominio.com"',
+    urlText: 'Este campo debe ser una URL con el formato "http:/' + '/www.dominio.com"',
+    alphaText: 'Este campo sólo debe contener letras y _',
+    alphanumText: 'Este campo sólo debe contener letras, números y _'
+});
+
+Ext.define("Ext.locale.es.form.field.HtmlEditor", {
+    override: "Ext.form.field.HtmlEditor",
+    createLinkText: "Por favor proporcione la URL para el enlace:"
+}, function() {
+    Ext.apply(Ext.form.field.HtmlEditor.prototype, {
+        buttonTips: {
+            bold: {
+                title: 'Negritas (Ctrl+B)',
+                text: 'Transforma el texto seleccionado en Negritas.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            italic: {
+                title: 'Itálica (Ctrl+I)',
+                text: 'Transforma el texto seleccionado en Itálicas.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            underline: {
+                title: 'Subrayado (Ctrl+U)',
+                text: 'Subraya el texto seleccionado.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            increasefontsize: {
+                title: 'Aumentar la fuente',
+                text: 'Aumenta el tamaño de la fuente',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            decreasefontsize: {
+                title: 'Reducir la fuente',
+                text: 'Reduce el tamaño de la fuente.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            backcolor: {
+                title: 'Color de fondo',
+                text: 'Modifica el color de fondo del texto seleccionado.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            forecolor: {
+                title: 'Color de la fuente',
+                text: 'Modifica el color del texto seleccionado.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifyleft: {
+                title: 'Alinear a la izquierda',
+                text: 'Alinea el texto a la izquierda.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifycenter: {
+                title: 'Centrar',
+                text: 'Centrar el texto.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifyright: {
+                title: 'Alinear a la derecha',
+                text: 'Alinea el texto a la derecha.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            insertunorderedlist: {
+                title: 'Lista de viñetas',
+                text: 'Inicia una lista con viñetas.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            insertorderedlist: {
+                title: 'Lista numerada',
+                text: 'Inicia una lista numerada.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            createlink: {
+                title: 'Enlace',
+                text: 'Inserta un enlace de hipertexto.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            sourceedit: {
+                title: 'Código Fuente',
+                text: 'Pasar al modo de edición de código fuente.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            }
+        }
+    });
+});
+
+Ext.define("Ext.locale.es.grid.header.Container", {
+    override: "Ext.grid.header.Container",
+    sortAscText: "Ordenar en forma ascendente",
+    sortDescText: "Ordenar en forma descendente",
+    columnsText: "Columnas"
+});
+
+Ext.define("Ext.locale.es.grid.GroupingFeature", {
+    override: "Ext.grid.feature.Grouping",
+    emptyGroupText: '(Ninguno)',
+    groupByText: 'Agrupar por este campo',
+    showGroupsText: 'Mostrar en grupos'
+});
+
+Ext.define("Ext.locale.es.grid.PropertyColumnModel", {
+    override: "Ext.grid.PropertyColumnModel",
+    nameText: "Nombre",
+    valueText: "Valor",
+    dateFormat: "j/m/Y"
+});
+
+Ext.define("Ext.locale.es.form.field.Time", {
+    override: "Ext.form.field.Time",
+    minText: "La hora en este campo debe ser igual o posterior a {0}",
+    maxText: "La hora en este campo debe ser igual o anterior a {0}",
+    invalidText: "{0} no es una hora válida",
+    format: "g:i A",
+    altFormats: "g:ia|g:iA|g:i a|g:i A|h:i|g:i|H:i|ga|ha|gA|h a|g a|g A|gi|hi|gia|hia|g|H"
+});
+
+Ext.define("Ext.locale.es.form.CheckboxGroup", {
+    override: "Ext.form.CheckboxGroup",
+    blankText: "Debe seleccionar al menos un étem de este grupo"
+});
+
+Ext.define("Ext.locale.es.form.RadioGroup", {
+    override: "Ext.form.RadioGroup",
+    blankText: "Debe seleccionar un étem de este grupo"
+});
+
+Ext.define("Ext.locale.es.window.MessageBox", {
+    override: "Ext.window.MessageBox",
+    buttonText: {
+        ok: "Aceptar",
+        cancel: "Cancelar",
+        yes: "Sí",
+        no: "No"
+    }    
+});
+
+// This is needed until we can refactor all of the locales into individual files
+Ext.define("Ext.locale.es.Component", {	
+    override: "Ext.Component"
+});

文件差异内容过多而无法显示
+ 1 - 0
src/ext/packages/ext-locale/build/ext-locale-es.js


+ 293 - 0
src/ext/packages/ext-locale/build/ext-locale-et-debug.js

@@ -0,0 +1,293 @@
+/**
+ * Estonian Translations
+ * By Rene Saarsoo (2012-05-28)
+ */
+Ext.onReady(function() {
+
+    if (Ext.Date) {
+        Ext.Date.monthNames = ["Jaanuar", "Veebruar", "Märts", "Aprill", "Mai", "Juuni", "Juuli", "August", "September", "Oktoober", "November", "Detsember"];
+
+        // Month names aren't shortened to strictly three letters
+        var shortMonthNames = ["Jaan", "Veeb", "Märts", "Apr", "Mai", "Juuni", "Juuli", "Aug", "Sept", "Okt", "Nov", "Dets"];
+        Ext.Date.getShortMonthName = function(month) {
+            return shortMonthNames[month];
+        };
+
+        Ext.Date.monthNumbers = {
+            Jan: 0,
+            Feb: 1,
+            Mar: 2,
+            Apr: 3,
+            May: 4,
+            Jun: 5,
+            Jul: 6,
+            Aug: 7,
+            Sep: 8,
+            Oct: 9,
+            Nov: 10,
+            Dec: 11
+        };
+
+        Ext.Date.getMonthNumber = function(name) {
+            return Ext.Date.monthNumbers[name.substring(0, 1).toUpperCase() + name.substring(1, 3).toLowerCase()];
+        };
+
+        Ext.Date.dayNames = ["Pühapäev", "Esmaspäev", "Teisipäev", "Kolmapäev", "Neljapäev", "Reede", "Laupäev"];
+
+        // Weekday names are abbreviated to single letter
+        Ext.Date.getShortDayName = function(day) {
+            return Ext.Date.dayNames[day].substring(0, 1);
+        };
+    }
+
+    if (Ext.util && Ext.util.Format) {
+        Ext.apply(Ext.util.Format, {
+            thousandSeparator: ' ',
+            decimalSeparator: ',',
+            currencySign: '\u20ac', // Euro
+            dateFormat: 'd.m.Y'
+        });
+    }
+});
+
+Ext.define("Ext.locale.et.view.View", {
+    override: "Ext.view.View",
+    emptyText: ""
+});
+
+Ext.define("Ext.locale.et.grid.plugin.DragDrop", {
+    override: "Ext.grid.plugin.DragDrop",
+    dragText: "{0} valitud rida"
+});
+
+// changing the msg text below will affect the LoadMask
+Ext.define("Ext.locale.et.view.AbstractView", {
+    override: "Ext.view.AbstractView",
+    loadingText: "Laen..."
+});
+
+Ext.define("Ext.locale.et.picker.Date", {
+    override: "Ext.picker.Date",
+    todayText: "Täna",
+    minText: "See kuupäev on enne määratud vanimat kuupäeva",
+    maxText: "See kuupäev on pärast määratud hiliseimat kuupäeva",
+    disabledDaysText: "",
+    disabledDatesText: "",
+    nextText: 'Järgmine kuu (Ctrl+Paremale)',
+    prevText: 'Eelmine kuu (Ctrl+Vasakule)',
+    monthYearText: 'Vali kuu (Ctrl+Üles/Alla aastate muutmiseks)',
+    todayTip: "{0} (Tühik)",
+    format: "d.m.Y",
+    startDay: 1
+});
+
+Ext.define("Ext.locale.et.picker.Month", {
+    override: "Ext.picker.Month",
+    okText: "&#160;OK&#160;",
+    cancelText: "Katkesta"
+});
+
+Ext.define("Ext.locale.et.toolbar.Paging", {
+    override: "Ext.PagingToolbar",
+    beforePageText: "Lehekülg",
+    afterPageText: "{0}-st",
+    firstText: "Esimene lk",
+    prevText: "Eelmine lk",
+    nextText: "Järgmine lk",
+    lastText: "Viimane lk",
+    refreshText: "Värskenda",
+    displayMsg: "Näitan {0} - {1} {2}-st",
+    emptyMsg: 'Puuduvad andmed mida näidata'
+});
+
+Ext.define("Ext.locale.et.form.Basic", {
+    override: "Ext.form.Basic",
+    waitTitle: "Palun oota..."
+});
+
+Ext.define("Ext.locale.et.form.field.Base", {
+    override: "Ext.form.field.Base",
+    invalidText: "Välja sisu ei vasta nõuetele"
+});
+
+Ext.define("Ext.locale.et.form.field.Text", {
+    override: "Ext.form.field.Text",
+    minLengthText: "Selle välja minimaalne pikkus on {0}",
+    maxLengthText: "Selle välja maksimaalne pikkus on {0}",
+    blankText: "Selle välja täitmine on nõutud",
+    regexText: "",
+    emptyText: null
+});
+
+Ext.define("Ext.locale.et.form.field.Number", {
+    override: "Ext.form.field.Number",
+    minText: "Selle välja vähim väärtus võib olla {0}",
+    maxText: "Selle välja suurim väärtus võib olla {0}",
+    nanText: "{0} pole korrektne number"
+});
+
+Ext.define("Ext.locale.et.form.field.Date", {
+    override: "Ext.form.field.Date",
+    disabledDaysText: "Võimetustatud",
+    disabledDatesText: "Võimetustatud",
+    minText: "Kuupäev peab olema alates kuupäevast: {0}",
+    maxText: "Kuupäev peab olema kuni kuupäevani: {0}",
+    invalidText: "{0} ei ole sobiv kuupäev - õige formaat on: {1}",
+    format: "d.m.Y"
+});
+
+Ext.define("Ext.locale.et.form.field.ComboBox", {
+    override: "Ext.form.field.ComboBox",
+    valueNotFoundText: undefined
+}, function() {
+    Ext.apply(Ext.form.field.ComboBox.prototype.defaultListConfig, {
+        loadingText: "Laen..."
+    });
+});
+
+Ext.define("Ext.locale.et.form.field.VTypes", {
+    override: "Ext.form.field.VTypes",
+    emailText: 'Selle välja sisuks peab olema e-posti aadress kujul "kasutaja@domeen.com"',
+    urlText: 'Selle välja sisuks peab olema veebiaadress kujul "http:/'+'/www.domeen.com"',
+    alphaText: 'See väli võib sisaldada vaid tähemärke ja alakriipsu',
+    alphanumText: 'See väli võib sisaldada vaid tähemärke, numbreid ja alakriipsu'
+});
+
+Ext.define("Ext.locale.et.form.field.HtmlEditor", {
+    override: "Ext.form.field.HtmlEditor",
+    createLinkText: 'Palun sisestage selle lingi internetiaadress:'
+}, function() {
+    Ext.apply(Ext.form.field.HtmlEditor.prototype, {
+        buttonTips: {
+            bold: {
+                title: 'Rasvane kiri (Ctrl+B)',
+                text: 'Muuda valitud tekst rasvaseks.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            italic: {
+                title: 'Kursiiv (Ctrl+I)',
+                text: 'Pane valitud tekst kaldkirja.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            underline: {
+                title: 'Allakriipsutus (Ctrl+U)',
+                text: 'Jooni valitud tekst alla.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            increasefontsize: {
+                title: 'Suurenda',
+                text: 'Suurenda teksti suurust.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            decreasefontsize: {
+                title: 'Vähenda',
+                text: 'Vähenda teksti suurust.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            backcolor: {
+                title: 'Tausta värv',
+                text: 'Muuda valitud teksti taustavärvi.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            forecolor: {
+                title: 'Teksti värv',
+                text: 'Muuda valitud teksti värvi.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifyleft: {
+                title: 'Vasakule',
+                text: 'Joonda tekst vasakule.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifycenter: {
+                title: 'Keskele',
+                text: 'Joonda tekst keskele.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifyright: {
+                title: 'Paremale',
+                text: 'Joonda tekst paremale.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            insertunorderedlist: {
+                title: 'Loetelu',
+                text: 'Alusta loetelu.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            insertorderedlist: {
+                title: 'Numereeritud list',
+                text: 'Alusta numereeritud nimekirja.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            createlink: {
+                title: 'Link',
+                text: 'Muuda tekst lingiks.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            sourceedit: {
+                title: 'Lähtekoodi muutmine',
+                text: 'Lülitu lähtekoodi muutmise režiimi.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            }
+        }
+    });
+});
+
+Ext.define("Ext.locale.et.grid.header.Container", {
+    override: "Ext.grid.header.Container",
+    sortAscText: "Järjesta kasvavalt",
+    sortDescText: "Järjesta kahanevalt",
+    columnsText: "Tulbad"
+});
+
+Ext.define("Ext.locale.et.grid.feature.Grouping", {
+    override: "Ext.grid.feature.Grouping",
+    emptyGroupText: '(Tühi)',
+    groupByText: 'Grupeeri selle välja järgi',
+    showGroupsText: 'Näita gruppides'
+});
+
+Ext.define("Ext.locale.et.grid.property.HeaderContainer", {
+    override: "Ext.grid.property.HeaderContainer",
+    nameText: "Nimi",
+    valueText: "Väärtus",
+    dateFormat: "d.m.Y"
+});
+
+Ext.define("Ext.locale.et.grid.column.Date", {
+    override: "Ext.grid.column.Date",
+    format: 'd.m.Y'
+});
+
+Ext.define("Ext.locale.et.form.field.Time", {
+    override: "Ext.form.field.Time",
+    minText: "Kellaaeg peab olema alates {0}",
+    maxText: "Kellaaeg peab olema kuni {0}",
+    invalidText: "{0} ei ole sobiv kellaaeg",
+    format: "H:i"
+});
+
+Ext.define("Ext.locale.et.form.CheckboxGroup", {
+    override: "Ext.form.CheckboxGroup",
+    blankText: "Vähemalt üks väli selles grupis peab olema valitud"
+});
+
+Ext.define("Ext.locale.et.form.RadioGroup", {
+    override: "Ext.form.RadioGroup",
+    blankText: "Vähemalt üks väli selles grupis peab olema valitud"
+});
+
+Ext.define("Ext.locale.et.window.MessageBox", {
+    override: "Ext.window.MessageBox",
+    buttonText: {
+        ok: "OK",
+        cancel: "Katkesta",
+        yes: "Jah",
+        no: "Ei"
+    }    
+});
+
+// This is needed until we can refactor all of the locales into individual files
+Ext.define("Ext.locale.et.Component", {	
+    override: "Ext.Component"
+});

文件差异内容过多而无法显示
+ 1 - 0
src/ext/packages/ext-locale/build/ext-locale-et.js


+ 260 - 0
src/ext/packages/ext-locale/build/ext-locale-fa-debug.js

@@ -0,0 +1,260 @@
+/**
+ * Farsi (Persian) translation
+ * By Mohaqa
+ * 03-10-2007, 06:23 PM
+ */
+Ext.onReady(function() {
+    if (Ext.Date) {
+        Ext.Date.monthNames = ["ژانویه", "فوریه", "مارس", "آپریل", "می", "ژوئن", "جولای", "آگوست", "سپتامبر", "اکتبر", "نوامبر", "دسامبر"];
+
+        Ext.Date.monthNumbers = {
+            Jan: 0,
+            Feb: 1,
+            Mar: 2,
+            Apr: 3,
+            May: 4,
+            Jun: 5,
+            Jul: 6,
+            Aug: 7,
+            Sep: 8,
+            Oct: 9,
+            Nov: 10,
+            Dec: 11
+        };
+
+        Ext.Date.dayNames = ["یکشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه"];
+    }
+
+    if (Ext.MessageBox) {
+        Ext.MessageBox.buttonText = {
+            ok: "تایید",
+            cancel: "بازگشت",
+            yes: "بله",
+            no: "خیر"
+        };
+    }
+
+    if (Ext.util && Ext.util.Format) {
+        Ext.apply(Ext.util.Format, {
+            thousandSeparator: '.',
+            decimalSeparator: ',',
+            currencySign: '\ufdfc',
+            // Iranian Rial
+            dateFormat: 'Y/m/d'
+        });
+    }
+});
+
+Ext.define("Ext.locale.fa.view.View", {
+    override: "Ext.view.View",
+    emptyText: ""
+});
+
+Ext.define("Ext.locale.fa.grid.plugin.DragDrop", {
+    override: "Ext.grid.plugin.DragDrop",
+    dragText: "{0} رکورد انتخاب شده"
+});
+
+Ext.define("Ext.locale.fa.tab.Tab", {
+    override: "Ext.tab.Tab",
+    closeText: "بستن"
+});
+
+Ext.define("Ext.locale.fa.form.field.Base", {
+    override: "Ext.form.field.Base",
+    invalidText: "مقدار فیلد صحیح نیست"
+});
+
+// changing the msg text below will affect the LoadMask
+Ext.define("Ext.locale.fa.view.AbstractView", {
+    override: "Ext.view.AbstractView",
+    loadingText: "در حال بارگذاری ..."
+});
+
+Ext.define("Ext.locale.fa.picker.Date", {
+    override: "Ext.picker.Date",
+    todayText: "امروز",
+    minText: "این تاریخ قبل از محدوده مجاز است",
+    maxText: "این تاریخ پس از محدوده مجاز است",
+    disabledDaysText: "",
+    disabledDatesText: "",
+    nextText: 'ماه بعد (Control + Right)',
+    prevText: 'ماه قبل (Control+Left)',
+    monthYearText: 'یک ماه را انتخاب کنید (Control+Up/Down برای انتقال در سال)',
+    todayTip: "{0} (Spacebar)",
+    format: "y/m/d",
+    startDay: 0
+});
+
+Ext.define("Ext.locale.fa.picker.Month", {
+    override: "Ext.picker.Month",
+    okText: "&#160;OK&#160;",
+    cancelText: "Cancel"
+});
+
+Ext.define("Ext.locale.fa.toolbar.Paging", {
+    override: "Ext.PagingToolbar",
+    beforePageText: "صفحه",
+    afterPageText: "از {0}",
+    firstText: "صفحه اول",
+    prevText: "صفحه قبل",
+    nextText: "صفحه بعد",
+    lastText: "صفحه آخر",
+    refreshText: "بازخوانی",
+    displayMsg: "نمایش {0} - {1} of {2}",
+    emptyMsg: 'داده ای برای نمایش وجود ندارد'
+});
+
+Ext.define("Ext.locale.fa.form.field.Text", {
+    override: "Ext.form.field.Text",
+    minLengthText: "حداقل طول این فیلد برابر است با {0}",
+    maxLengthText: "حداکثر طول این فیلد برابر است با {0}",
+    blankText: "این فیلد باید مقداری داشته باشد",
+    regexText: "",
+    emptyText: null
+});
+
+Ext.define("Ext.locale.fa.form.field.Number", {
+    override: "Ext.form.field.Number",
+    minText: "حداقل مقدار این فیلد برابر است با {0}",
+    maxText: "حداکثر مقدار این فیلد برابر است با {0}",
+    nanText: "{0} یک عدد نیست"
+});
+
+Ext.define("Ext.locale.fa.form.field.Date", {
+    override: "Ext.form.field.Date",
+    disabledDaysText: "غیرفعال",
+    disabledDatesText: "غیرفعال",
+    minText: "تاریخ باید پس از {0} باشد",
+    maxText: "تاریخ باید پس از {0} باشد",
+    invalidText: "{0} تاریخ صحیحی نیست - فرمت صحیح {1}",
+    format: "y/m/d"
+});
+
+Ext.define("Ext.locale.fa.form.field.ComboBox", {
+    override: "Ext.form.field.ComboBox",
+    valueNotFoundText: undefined
+}, function() {
+    Ext.apply(Ext.form.field.ComboBox.prototype.defaultListConfig, {
+        loadingText: "در حال بارگذاری ..."
+    });
+});
+
+Ext.define("Ext.locale.fa.form.field.VTypes", {
+    override: "Ext.form.field.VTypes",
+    emailText: 'مقدار این فیلد باید یک ایمیل با این فرمت باشد "user@example.com"',
+    urlText: 'مقدار این آدرس باید یک آدرس سایت با این فرمت باشد "http:/' + '/www.example.com"',
+    alphaText: 'مقدار این فیلد باید فقط از حروف الفبا و _ تشکیل شده باشد ',
+    alphanumText: 'مقدار این فیلد باید فقط از حروف الفبا، اعداد و _ تشکیل شده باشد'
+});
+
+Ext.define("Ext.locale.fa.form.field.HtmlEditor", {
+    override: "Ext.form.field.HtmlEditor",
+    createLinkText: 'لطفا آدرس لینک را وارد کنید:'
+}, function() {
+    Ext.apply(Ext.form.field.HtmlEditor.prototype, {
+        buttonTips: {
+            bold: {
+                title: 'تیره (Ctrl+B)',
+                text: 'متن انتخاب شده را تیره می کند.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            italic: {
+                title: 'ایتالیک (Ctrl+I)',
+                text: 'متن انتخاب شده را ایتالیک می کند.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            underline: {
+                title: 'زیرخط (Ctrl+U)',
+                text: 'زیر هر نوشته یک خط نمایش می دهد.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            increasefontsize: {
+                title: 'افزایش اندازه',
+                text: 'اندازه فونت را افزایش می دهد.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            decreasefontsize: {
+                title: 'کاهش اندازه',
+                text: 'اندازه متن را کاهش می دهد.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            backcolor: {
+                title: 'رنگ زمینه متن',
+                text: 'برای تغییر رنگ زمینه متن استفاده می شود.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            forecolor: {
+                title: 'رنگ قلم',
+                text: 'رنگ  قلم متن را تغییر می دهد.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifyleft: {
+                title: 'چیدن متن از سمت چپ',
+                text: 'متن از سمت چپ چیده شده می شود.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifycenter: {
+                title: 'متن در وسط ',
+                text: 'نمایش متن در قسمت وسط صفحه و رعابت سمت چپ و راست.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifyright: {
+                title: 'چیدن متن از سمت راست',
+                text: 'متن از سمت راست پیده خواهد شد.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            insertunorderedlist: {
+                title: 'لیست همراه با علامت',
+                text: 'یک لیست جدید ایجاد می کند.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            insertorderedlist: {
+                title: 'لیست عددی',
+                text: 'یک لیست عددی ایجاد می کند. ',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            createlink: {
+                title: 'لینک',
+                text: 'متن انتخاب شده را به لینک تبدیل کنید.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            sourceedit: {
+                title: 'ویرایش سورس',
+                text: 'رفتن به حالت ویرایش سورس.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            }
+        }
+    });
+});
+
+Ext.define("Ext.locale.fa.grid.header.Container", {
+    override: "Ext.grid.header.Container",
+    sortAscText: "مرتب سازی افزایشی",
+    sortDescText: "مرتب سازی کاهشی",
+    lockText: "قفل ستون ها",
+    unlockText: "بازکردن ستون ها",
+    columnsText: "ستون ها"
+});
+
+Ext.define("Ext.locale.fa.grid.PropertyColumnModel", {
+    override: "Ext.grid.PropertyColumnModel",
+    nameText: "نام",
+    valueText: "مقدار",
+    dateFormat: "Y/m/d"
+});
+
+Ext.define("Ext.locale.fa.window.MessageBox", {
+    override: "Ext.window.MessageBox",
+    buttonText: {
+        ok: "OK",
+        cancel: "Kanselleer",
+        yes: "Ja",
+        no: "Nee"
+    }    
+});
+
+// This is needed until we can refactor all of the locales into individual files
+Ext.define("Ext.locale.fa.Component", {	
+    override: "Ext.Component"
+});

文件差异内容过多而无法显示
+ 1 - 0
src/ext/packages/ext-locale/build/ext-locale-fa.js


+ 288 - 0
src/ext/packages/ext-locale/build/ext-locale-fi-debug.js

@@ -0,0 +1,288 @@
+/**
+ * Finnish Translations
+ * <tuomas.salo (at) iki.fi>
+ * 'ä' should read as lowercase 'a' with two dots on top (&auml;)
+ */
+Ext.onReady(function() {
+
+    if (Ext.Date) {
+        Ext.Date.monthNames = ["tammikuu", "helmikuu", "maaliskuu", "huhtikuu", "toukokuu", "kesäkuu", "heinäkuu", "elokuu", "syyskuu", "lokakuu", "marraskuu", "joulukuu"];
+
+        Ext.Date.getShortMonthName = function(month) {
+            return (month + 1) + ".";
+        };
+
+        Ext.Date.monthNumbers = {
+            'tammikuu': 0,
+            'helmikuu': 1,
+            'maaliskuu': 2,
+            'huhtikuu': 3,
+            'toukokuu': 4,
+            'kesäkuu': 5,
+            'heinäkuu': 6,
+            'elokuu': 7,
+            'syyskuu': 8,
+            'lokakuu': 9,
+            'marraskuu': 10,
+            'joulukuu': 11
+        };
+
+        Ext.Date.getMonthNumber = function(name) {
+            if (name.match(/^(1?\d)\./)) {
+                return -1 + RegExp.$1;
+            } else {
+                return Ext.Date.monthNumbers[name];
+            }
+        };
+
+        Ext.Date.dayNames = ["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai"];
+
+        Ext.Date.getShortDayName = function(day) {
+            return Ext.Date.dayNames[day].substring(0, 2);
+        };
+    }
+
+    if (Ext.util && Ext.util.Format) {
+        Ext.apply(Ext.util.Format, {
+            thousandSeparator: '.',
+            decimalSeparator: ',',
+            currencySign: '\u20ac',
+            // Finnish Euro
+            dateFormat: 'j.n.Y'
+        });
+        
+        Ext.util.Format.date = function(v, format) {
+            if (!v) return "";
+            if (!(v instanceof Date)) v = new Date(Date.parse(v));
+            return Ext.Date.format(v, format || "j.n.Y");
+        };
+        
+    }
+});
+
+Ext.define("Ext.locale.fi.view.View", {
+    override: "Ext.view.View",
+    emptyText: ""
+});
+
+Ext.define("Ext.locale.fi.grid.plugin.DragDrop", {
+    override: "Ext.grid.plugin.DragDrop",
+    dragText: "{0} rivi(ä) valittu"
+});
+
+Ext.define("Ext.locale.fi.tab.Tab", {
+    override: "Ext.tab.Tab",
+    closeText: "Sulje tämä välilehti"
+});
+
+// changing the msg text below will affect the LoadMask
+Ext.define("Ext.locale.fi.view.AbstractView", {
+    override: "Ext.view.AbstractView",
+    loadingText: "Ladataan..."
+});
+
+Ext.define("Ext.locale.fi.picker.Date", {
+    override: "Ext.picker.Date",
+    todayText: "Tänään",
+    minText: "Tämä päivämäärä on aikaisempi kuin ensimmäinen sallittu",
+    maxText: "Tämä päivämäärä on myöhäisempi kuin viimeinen sallittu",
+    disabledDaysText: "",
+    disabledDatesText: "",
+    nextText: 'Seuraava kuukausi (Control+oikealle)',
+    prevText: 'Edellinen kuukausi (Control+vasemmalle)',
+    monthYearText: 'Valitse kuukausi (vaihda vuotta painamalla Control+ylös/alas)',
+    todayTip: "{0} (välilyönti)",
+    format: "j.n.Y",
+    startDay: 1 // viikko alkaa maanantaista
+});
+
+Ext.define("Ext.locale.fi.picker.Month", {
+    override: "Ext.picker.Month",
+    okText: "&#160;OK&#160;",
+    cancelText: "Peruuta"
+});
+
+Ext.define("Ext.locale.fi.toolbar.Paging", {
+    override: "Ext.PagingToolbar",
+    beforePageText: "Sivu",
+    afterPageText: "/ {0}",
+    firstText: "Ensimmäinen sivu",
+    prevText: "Edellinen sivu",
+    nextText: "Seuraava sivu",
+    lastText: "Viimeinen sivu",
+    refreshText: "Päivitä",
+    displayMsg: "Näytetään {0} - {1} / {2}",
+    emptyMsg: 'Ei tietoja'
+});
+
+Ext.define("Ext.locale.fi.form.field.Base", {
+    override: "Ext.form.field.Base",
+    invalidText: "Tämän kentän arvo ei kelpaa"
+});
+
+Ext.define("Ext.locale.fi.form.field.Text", {
+    override: "Ext.form.field.Text",
+    minLengthText: "Tämän kentän minimipituus on {0}",
+    maxLengthText: "Tämän kentän maksimipituus on {0}",
+    blankText: "Tämä kenttä on pakollinen",
+    regexText: "",
+    emptyText: null
+});
+
+Ext.define("Ext.locale.fi.form.field.Number", {
+    override: "Ext.form.field.Number",
+    minText: "Tämän kentän pienin sallittu arvo on {0}",
+    maxText: "Tämän kentän suurin sallittu arvo on {0}",
+    nanText: "{0} ei ole numero"
+});
+
+Ext.define("Ext.locale.fi.form.field.Date", {
+    override: "Ext.form.field.Date",
+    disabledDaysText: "Ei käytössä",
+    disabledDatesText: "Ei käytössä",
+    minText: "Tämän kentän päivämäärän tulee olla {0} jälkeen",
+    maxText: "Tämän kentän päivämäärän tulee olla ennen {0}",
+    invalidText: "Päivämäärä {0} ei ole oikeassa muodossa - kirjoita päivämäärä muodossa {1}",
+    format: "j.n.Y",
+    altFormats: "j.n.|d.m.|mdy|mdY|d|Y-m-d|Y/m/d"
+});
+
+Ext.define("Ext.locale.fi.form.field.ComboBox", {
+    override: "Ext.form.field.ComboBox",
+    valueNotFoundText: undefined
+}, function() {
+    Ext.apply(Ext.form.field.ComboBox.prototype.defaultListConfig, {
+        loadingText: "Ladataan..."
+    });
+});
+
+Ext.define("Ext.locale.fi.form.field.VTypes", {
+    override: "Ext.form.field.VTypes",
+    emailText: 'Syötä tähän kenttään sähköpostiosoite, esim. "etunimi.sukunimi@osoite.fi"',
+    urlText: 'Syötä tähän kenttään URL-osoite, esim. "http:/' + '/www.osoite.fi"',
+    alphaText: 'Syötä tähän kenttään vain kirjaimia (a-z, A-Z) ja alaviivoja (_)',
+    alphanumText: 'Syötä tähän kenttään vain kirjaimia (a-z, A-Z), numeroita (0-9) ja alaviivoja (_)'
+});
+
+Ext.define("Ext.locale.fi.form.field.HtmlEditor", {
+    override: "Ext.form.field.HtmlEditor",
+    createLinkText: 'Anna linkin URL-osoite:'
+}, function() {
+    Ext.apply(Ext.form.field.HtmlEditor.prototype, {
+        buttonTips: {
+            bold: {
+                title: 'Lihavoi (Ctrl+B)',
+                text: 'Lihavoi valittu teksti.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            italic: {
+                title: 'Kursivoi (Ctrl+I)',
+                text: 'Kursivoi valittu teksti.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            underline: {
+                title: 'Alleviivaa (Ctrl+U)',
+                text: 'Alleviivaa valittu teksti.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            increasefontsize: {
+                title: 'Suurenna tekstiä',
+                text: 'Kasvata tekstin kirjasinkokoa.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            decreasefontsize: {
+                title: 'Pienennä tekstiä',
+                text: 'Pienennä tekstin kirjasinkokoa.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            backcolor: {
+                title: 'Tekstin korostusväri',
+                text: 'Vaihda valitun tekstin taustaväriä.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            forecolor: {
+                title: 'Tekstin väri',
+                text: 'Vaihda valitun tekstin väriä.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifyleft: {
+                title: 'Tasaa vasemmalle',
+                text: 'Tasaa teksti vasempaan reunaan.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifycenter: {
+                title: 'Keskitä',
+                text: 'Keskitä teksti.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            justifyright: {
+                title: 'Tasaa oikealle',
+                text: 'Tasaa teksti oikeaan reunaan.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            insertunorderedlist: {
+                title: 'Luettelo',
+                text: 'Luo luettelo.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            insertorderedlist: {
+                title: 'Numeroitu luettelo',
+                text: 'Luo numeroitu luettelo.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            createlink: {
+                title: 'Linkki',
+                text: 'Tee valitusta tekstistä hyperlinkki.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            },
+            sourceedit: {
+                title: 'Lähdekoodin muokkaus',
+                text: 'Vaihda lähdekoodin muokkausnäkymään.',
+                cls: Ext.baseCSSPrefix + 'html-editor-tip'
+            }
+        }
+    });
+});
+
+Ext.define("Ext.locale.fi.form.Basic", {
+    override: "Ext.form.Basic",
+    waitTitle: "Odota..."
+});
+
+Ext.define("Ext.locale.fi.grid.header.Container", {
+    override: "Ext.grid.header.Container",
+    sortAscText: "Järjestä A-Ö",
+    sortDescText: "Järjestä Ö-A",
+    lockText: "Lukitse sarake",
+    unlockText: "Vapauta sarakkeen lukitus",
+    columnsText: "Sarakkeet"
+});
+
+Ext.define("Ext.locale.fi.grid.GroupingFeature", {
+    override: "Ext.grid.feature.Grouping",
+    emptyGroupText: '(ei mitään)',
+    groupByText: 'Ryhmittele tämän kentän mukaan',
+    showGroupsText: 'Näytä ryhmissä'
+});
+
+Ext.define("Ext.locale.fi.grid.PropertyColumnModel", {
+    override: "Ext.grid.PropertyColumnModel",
+    nameText: "Nimi",
+    valueText: "Arvo",
+    dateFormat: "j.m.Y"
+});
+
+Ext.define("Ext.locale.fi.window.MessageBox", {
+    override: "Ext.window.MessageBox",
+    buttonText: {
+        ok: "OK",
+        cancel: "Peruuta",
+        yes: "Kyllä",
+        no: "Ei"
+    }    
+});
+
+// This is needed until we can refactor all of the locales into individual files
+Ext.define("Ext.locale.fi.Component", {	
+    override: "Ext.Component"
+});

+ 0 - 0
src/ext/packages/ext-locale/build/ext-locale-fi.js


部分文件因为文件数量过多而无法显示