first commit
This commit is contained in:
3
.eslintrc.js
Normal file
3
.eslintrc.js
Normal file
@@ -0,0 +1,3 @@
|
||||
module.exports = {
|
||||
"extends": "airbnb"
|
||||
};
|
||||
11
.gitignore
vendored
Normal file
11
.gitignore
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
.vscode/
|
||||
.vscode/*
|
||||
node_modules/
|
||||
node_modules/*
|
||||
dist
|
||||
dist/*
|
||||
yarn.lock
|
||||
.DS_Store
|
||||
Dockerfile
|
||||
yarn-error.log
|
||||
npm-debug.log
|
||||
3
.htpasswd
Normal file
3
.htpasswd
Normal file
@@ -0,0 +1,3 @@
|
||||
carlos:{SHA}gIR8SA3ZqhSPKo1WfEFsBuGkl70=
|
||||
michael:{SHA}se4JYmkoY/PhE5tA+DSiURhGERA=
|
||||
demo-user:{SHA}se4JYmkoY/PhE5tA+DSiURhGERA=
|
||||
6
.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
6
.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<profile version="1.0">
|
||||
<option name="myName" value="Project Default" />
|
||||
<inspection_tool class="Eslint" enabled="true" level="ERROR" enabled_by_default="true" />
|
||||
</profile>
|
||||
</component>
|
||||
60
.idea/misc.xml
generated
Normal file
60
.idea/misc.xml
generated
Normal file
@@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ClientPropertiesManager">
|
||||
<properties class="javax.swing.AbstractButton">
|
||||
<property name="hideActionText" class="java.lang.Boolean" />
|
||||
</properties>
|
||||
<properties class="javax.swing.JComponent">
|
||||
<property name="html.disable" class="java.lang.Boolean" />
|
||||
</properties>
|
||||
<properties class="javax.swing.JEditorPane">
|
||||
<property name="JEditorPane.w3cLengthUnits" class="java.lang.Boolean" />
|
||||
<property name="JEditorPane.honorDisplayProperties" class="java.lang.Boolean" />
|
||||
<property name="charset" class="java.lang.String" />
|
||||
</properties>
|
||||
<properties class="javax.swing.JList">
|
||||
<property name="List.isFileList" class="java.lang.Boolean" />
|
||||
</properties>
|
||||
<properties class="javax.swing.JPasswordField">
|
||||
<property name="JPasswordField.cutCopyAllowed" class="java.lang.Boolean" />
|
||||
</properties>
|
||||
<properties class="javax.swing.JSlider">
|
||||
<property name="Slider.paintThumbArrowShape" class="java.lang.Boolean" />
|
||||
<property name="JSlider.isFilled" class="java.lang.Boolean" />
|
||||
</properties>
|
||||
<properties class="javax.swing.JTable">
|
||||
<property name="Table.isFileList" class="java.lang.Boolean" />
|
||||
<property name="JTable.autoStartsEdit" class="java.lang.Boolean" />
|
||||
<property name="terminateEditOnFocusLost" class="java.lang.Boolean" />
|
||||
</properties>
|
||||
<properties class="javax.swing.JToolBar">
|
||||
<property name="JToolBar.isRollover" class="java.lang.Boolean" />
|
||||
</properties>
|
||||
<properties class="javax.swing.JTree">
|
||||
<property name="JTree.lineStyle" class="java.lang.String" />
|
||||
</properties>
|
||||
<properties class="javax.swing.text.JTextComponent">
|
||||
<property name="caretAspectRatio" class="java.lang.Double" />
|
||||
<property name="caretWidth" class="java.lang.Integer" />
|
||||
</properties>
|
||||
</component>
|
||||
<component name="JavaScriptSettings">
|
||||
<option name="languageLevel" value="JSX" />
|
||||
</component>
|
||||
<component name="masterDetails">
|
||||
<states>
|
||||
<state key="ProjectJDKs.UI">
|
||||
<settings>
|
||||
<last-edited>1.8</last-edited>
|
||||
<splitter-proportions>
|
||||
<option name="proportions">
|
||||
<list>
|
||||
<option value="0.2" />
|
||||
</list>
|
||||
</option>
|
||||
</splitter-proportions>
|
||||
</settings>
|
||||
</state>
|
||||
</states>
|
||||
</component>
|
||||
</project>
|
||||
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/nemt-portal.iml" filepath="$PROJECT_DIR$/.idea/nemt-portal.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
16
.idea/nemt-portal.iml
generated
Normal file
16
.idea/nemt-portal.iml
generated
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
<component name="TemplatesService">
|
||||
<option name="TEMPLATE_FOLDERS">
|
||||
<list>
|
||||
<option value="$MODULE_DIR$/public/bower_components/moment/templates" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
</module>
|
||||
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
534
.idea/workspace.xml
generated
Normal file
534
.idea/workspace.xml
generated
Normal file
@@ -0,0 +1,534 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="cbd60ba6-1fa1-4e7c-b48c-44708b1568e2" name="Default" comment="">
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.gitignore" afterPath="$PROJECT_DIR$/.gitignore" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/components/Connection/index.js" afterPath="$PROJECT_DIR$/src/components/Connection/index.js" />
|
||||
</list>
|
||||
<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="ExecutionTargetManager" SELECTED_TARGET="default_target" />
|
||||
<component name="FileEditorManager">
|
||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
||||
<file leaf-file-name="index.js" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/reducers/index.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="180">
|
||||
<caret line="10" column="0" lean-forward="false" selection-start-line="10" selection-start-column="0" selection-end-line="10" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#0#40#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="user.js" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/routes/app/routes/users/components/user.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="317">
|
||||
<caret line="835" column="46" lean-forward="false" selection-start-line="835" selection-start-column="46" selection-end-line="835" selection-end-column="46" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="Services.js" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/routes/app/routes/pages/routes/services/components/Services.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="576">
|
||||
<caret line="95" column="20" lean-forward="false" selection-start-line="95" selection-start-column="20" selection-end-line="95" selection-end-column="20" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="index.js" pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/src/components/Connection/index.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="342">
|
||||
<caret line="31" column="14" lean-forward="true" selection-start-line="31" selection-start-column="14" selection-end-line="31" selection-end-column="14" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="App.js" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/containers/App.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#0#41#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="index.js" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/stores/index.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="198">
|
||||
<caret line="12" column="0" lean-forward="false" selection-start-line="12" selection-start-column="0" selection-end-line="12" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#0#36#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="index.js" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/components/Header/index.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#0#26#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
</leaf>
|
||||
</component>
|
||||
<component name="FindInProjectRecents">
|
||||
<findStrings>
|
||||
<find>o</find>
|
||||
<find>portal-d</find>
|
||||
<find>p</find>
|
||||
<find>port</find>
|
||||
<find>portal</find>
|
||||
<find>portal-</find>
|
||||
<find>portal-a</find>
|
||||
<find>portal-ap</find>
|
||||
<find>portal-api</find>
|
||||
</findStrings>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="GradleLocalSettings">
|
||||
<option name="externalProjectsViewState">
|
||||
<projects_view />
|
||||
</option>
|
||||
</component>
|
||||
<component name="IdeDocumentHistory">
|
||||
<option name="CHANGED_PATHS">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/.gitignore" />
|
||||
<option value="$PROJECT_DIR$/src/routes/app/routes/pages/routes/services/components/Services.js" />
|
||||
<option value="$PROJECT_DIR$/src/components/Connection/index.js" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
|
||||
<component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
|
||||
<component name="JsGulpfileManager">
|
||||
<detection-done>true</detection-done>
|
||||
<sorting>DEFINITION_ORDER</sorting>
|
||||
</component>
|
||||
<component name="NodeModulesDirectoryManager">
|
||||
<handled-path value="$PROJECT_DIR$/node_modules" />
|
||||
</component>
|
||||
<component name="ProjectFrameBounds">
|
||||
<option name="x" value="1984" />
|
||||
<option name="y" value="-11" />
|
||||
<option name="width" value="1857" />
|
||||
<option name="height" value="1092" />
|
||||
</component>
|
||||
<component name="ProjectView">
|
||||
<navigator currentView="ProjectPane" proportions="" version="1">
|
||||
<flattenPackages />
|
||||
<showMembers />
|
||||
<showModules />
|
||||
<showLibraryContents />
|
||||
<hideEmptyPackages />
|
||||
<abbreviatePackageNames />
|
||||
<autoscrollToSource />
|
||||
<autoscrollFromSource />
|
||||
<sortByType />
|
||||
<manualOrder />
|
||||
<foldersAlwaysOnTop value="true" />
|
||||
</navigator>
|
||||
<panes>
|
||||
<pane id="Scope" />
|
||||
<pane id="PackagesPane" />
|
||||
<pane id="Scratches" />
|
||||
<pane id="ProjectPane">
|
||||
<subPane>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="nemt-portal" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="nemt-portal" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="nemt-portal" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="nemt-portal" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="src" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
</subPane>
|
||||
</pane>
|
||||
</panes>
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
<property name="WebServerToolWindowFactoryState" value="false" />
|
||||
<property name="aspect.path.notification.shown" value="true" />
|
||||
<property name="last_opened_file_path" value="$USER_HOME$/go/src/bitbucket.org/nemt/nemt-portal-api" />
|
||||
<property name="node.js.path.for.package.eslint" value="$USER_HOME$/.nvm/versions/node/v8.9.4/bin/node" />
|
||||
<property name="node.js.detected.package.eslint" value="true" />
|
||||
<property name="node.js.selected.package.eslint" value="$PROJECT_DIR$/node_modules/eslint" />
|
||||
<property name="node.js.path.for.package.standard" value="$USER_HOME$/.nvm/versions/node/v8.9.4/bin/node" />
|
||||
<property name="node.js.detected.package.standard" value="true" />
|
||||
<property name="node.js.selected.package.standard" value="$PROJECT_DIR$/node_modules/eslint" />
|
||||
</component>
|
||||
<component name="RunDashboard">
|
||||
<option name="ruleStates">
|
||||
<list>
|
||||
<RuleState>
|
||||
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
|
||||
</RuleState>
|
||||
<RuleState>
|
||||
<option name="name" value="StatusDashboardGroupingRule" />
|
||||
</RuleState>
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="RunManager">
|
||||
<configuration default="true" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" factoryName="Plugin">
|
||||
<module name="" />
|
||||
<option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
|
||||
<option name="PROGRAM_PARAMETERS" />
|
||||
<predefined_log_file id="idea.log" enabled="true" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="Applet" factoryName="Applet">
|
||||
<option name="HTML_USED" value="false" />
|
||||
<option name="WIDTH" value="400" />
|
||||
<option name="HEIGHT" value="300" />
|
||||
<option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
|
||||
<module />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="Application" factoryName="Application">
|
||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
||||
<option name="MAIN_CLASS_NAME" />
|
||||
<option name="VM_PARAMETERS" />
|
||||
<option name="PROGRAM_PARAMETERS" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" />
|
||||
<option name="ENABLE_SWING_INSPECTOR" value="false" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<module name="" />
|
||||
<envs />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="JUnit" factoryName="JUnit">
|
||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
||||
<module name="" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" />
|
||||
<option name="PACKAGE_NAME" />
|
||||
<option name="MAIN_CLASS_NAME" />
|
||||
<option name="METHOD_NAME" />
|
||||
<option name="TEST_OBJECT" value="class" />
|
||||
<option name="VM_PARAMETERS" value="-ea" />
|
||||
<option name="PARAMETERS" />
|
||||
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<option name="TEST_SEARCH_SCOPE">
|
||||
<value defaultName="singleModule" />
|
||||
</option>
|
||||
<envs />
|
||||
<patterns />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="Remote" factoryName="Remote">
|
||||
<option name="USE_SOCKET_TRANSPORT" value="true" />
|
||||
<option name="SERVER_MODE" value="false" />
|
||||
<option name="SHMEM_ADDRESS" value="javadebug" />
|
||||
<option name="HOST" value="localhost" />
|
||||
<option name="PORT" value="5005" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="TestNG" factoryName="TestNG">
|
||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
||||
<module name="" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" />
|
||||
<option name="SUITE_NAME" />
|
||||
<option name="PACKAGE_NAME" />
|
||||
<option name="MAIN_CLASS_NAME" />
|
||||
<option name="METHOD_NAME" />
|
||||
<option name="GROUP_NAME" />
|
||||
<option name="TEST_OBJECT" value="CLASS" />
|
||||
<option name="VM_PARAMETERS" value="-ea" />
|
||||
<option name="PARAMETERS" />
|
||||
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
|
||||
<option name="OUTPUT_DIRECTORY" />
|
||||
<option name="ANNOTATION_TYPE" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<option name="TEST_SEARCH_SCOPE">
|
||||
<value defaultName="singleModule" />
|
||||
</option>
|
||||
<option name="USE_DEFAULT_REPORTERS" value="false" />
|
||||
<option name="PROPERTIES_FILE" />
|
||||
<envs />
|
||||
<properties />
|
||||
<listeners />
|
||||
<method />
|
||||
</configuration>
|
||||
</component>
|
||||
<component name="ShelveChangesManager" show_recycled="false">
|
||||
<option name="remove_strategy" value="false" />
|
||||
</component>
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="cbd60ba6-1fa1-4e7c-b48c-44708b1568e2" name="Default" comment="" />
|
||||
<created>1524160808787</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1524160808787</updated>
|
||||
<workItem from="1524160815222" duration="1394000" />
|
||||
<workItem from="1524507470076" duration="640000" />
|
||||
<workItem from="1525157982201" duration="1006000" />
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TimeTrackingManager">
|
||||
<option name="totallyTimeSpent" value="3040000" />
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="1984" y="-11" width="1857" height="1092" extended-state="6" />
|
||||
<editor active="true" />
|
||||
<layout>
|
||||
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Nl-Palette" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Palette	" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" 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" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" 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" show_stripe_button="true" 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" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Properties" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.24959569" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
|
||||
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" 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" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Theme Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" 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" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Data View" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" 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" show_stripe_button="true" 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" show_stripe_button="true" 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="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
|
||||
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
|
||||
</layout>
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
<option name="processedProjectFiles" value="true" />
|
||||
</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$/src/reducers/index.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#0#40#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/containers/App.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#0#41#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/stores/index.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="198">
|
||||
<caret line="12" column="0" lean-forward="false" selection-start-line="12" selection-start-column="0" selection-end-line="12" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#0#36#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/components/Header/index.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#0#26#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/reducers/index.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#0#40#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/containers/App.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#0#41#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/stores/index.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="198">
|
||||
<caret line="12" column="0" lean-forward="true" selection-start-line="12" selection-start-column="0" selection-end-line="12" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#0#36#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/components/Header/index.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#0#26#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/bitbucket-pipelines.yml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="486">
|
||||
<caret line="27" column="38" lean-forward="true" selection-start-line="27" selection-start-column="38" selection-end-line="27" selection-end-column="38" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/.gitignore">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="216">
|
||||
<caret line="12" column="6" lean-forward="false" selection-start-line="12" selection-start-column="6" selection-end-line="12" selection-end-column="6" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/bitbucket-pipelines.yml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="486">
|
||||
<caret line="27" column="38" lean-forward="true" selection-start-line="27" selection-start-column="38" selection-end-line="27" selection-end-column="38" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/components/Header/index.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#0#26#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/stores/index.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="198">
|
||||
<caret line="12" column="0" lean-forward="false" selection-start-line="12" selection-start-column="0" selection-end-line="12" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#0#36#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/containers/App.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#0#41#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/reducers/index.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="180">
|
||||
<caret line="10" column="0" lean-forward="false" selection-start-line="10" selection-start-column="0" selection-end-line="10" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#0#40#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/routes/app/routes/users/components/user.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="317">
|
||||
<caret line="835" column="46" lean-forward="false" selection-start-line="835" selection-start-column="46" selection-end-line="835" selection-end-column="46" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/routes/app/routes/pages/routes/services/components/Services.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="576">
|
||||
<caret line="95" column="20" lean-forward="false" selection-start-line="95" selection-start-column="20" selection-end-line="95" selection-end-column="20" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/components/Connection/index.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="342">
|
||||
<caret line="31" column="14" lean-forward="true" selection-start-line="31" selection-start-column="14" selection-end-line="31" selection-end-column="14" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</component>
|
||||
</project>
|
||||
3
README.MD
Normal file
3
README.MD
Normal file
@@ -0,0 +1,3 @@
|
||||
- Commands to run
|
||||
npm install -g yarn
|
||||
yarn && yarn start
|
||||
30
bitbucket-pipelines.yml
Normal file
30
bitbucket-pipelines.yml
Normal file
@@ -0,0 +1,30 @@
|
||||
image: node:8.3.0
|
||||
pipelines:
|
||||
branches:
|
||||
master:
|
||||
- step:
|
||||
script:
|
||||
- apt-get update -y && apt-get upgrade -y && apt-get dist-upgrade -y && apt-get -y autoremove && apt-get clean
|
||||
- apt-get install -y python-pip python-dev build-essential
|
||||
- python --version
|
||||
- pip install --upgrade pip
|
||||
- pip install awscli
|
||||
- npm rebuild node-sass --force
|
||||
- yarn install
|
||||
- NODE_ENV=production yarn build
|
||||
- find ./dist -exec chmod +r {} \;
|
||||
- echo "Prod Environment"
|
||||
- aws s3 --region "us-east-2" sync ./dist s3://portal.bcbsinstitute.com --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers
|
||||
development:
|
||||
- step:
|
||||
script:
|
||||
- apt-get update -y && apt-get upgrade -y && apt-get dist-upgrade -y && apt-get -y autoremove && apt-get clean
|
||||
- apt-get install -y python-pip python-dev build-essential
|
||||
- pip install --upgrade pip
|
||||
- pip install awscli
|
||||
- npm rebuild node-sass --force
|
||||
- yarn install
|
||||
- NODE_ENV=development yarn build
|
||||
- find ./dist -exec chmod +r {} \;
|
||||
- echo "Dev Environment"
|
||||
- aws s3 --region "us-east-2" sync ./dist s3://portal.dev.bcbsinstitute.com --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers
|
||||
207
config/webpack/Base.js
Normal file
207
config/webpack/Base.js
Normal file
@@ -0,0 +1,207 @@
|
||||
'use strict'; // eslint-disable-line
|
||||
|
||||
/**
|
||||
* Webpack configuration base class
|
||||
*/
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
const npmBase = path.join(__dirname, '../../node_modules');
|
||||
|
||||
class WebpackBaseConfig {
|
||||
|
||||
constructor() {
|
||||
this._config = {};
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of included packages
|
||||
* @return {Array} List of included packages
|
||||
*/
|
||||
get includedPackages() {
|
||||
return [].map((pkg) => fs.realpathSync(path.join(npmBase, pkg)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the config data.
|
||||
* This will always return a new config
|
||||
* @param {Object} data Keys to assign
|
||||
* @return {Object}
|
||||
*/
|
||||
set config(data) {
|
||||
this._config = Object.assign({}, this.defaultSettings, data);
|
||||
return this._config;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the global config
|
||||
* @return {Object} config Final webpack config
|
||||
*/
|
||||
get config() {
|
||||
return this._config;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the environment name
|
||||
* @return {String} The current environment
|
||||
*/
|
||||
get env() {
|
||||
return 'dev';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the absolute path to src directory
|
||||
* @return {String}
|
||||
*/
|
||||
get srcPathAbsolute() {
|
||||
return path.resolve('./src');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the absolute path to tests directory
|
||||
* @return {String}
|
||||
*/
|
||||
get testPathAbsolute() {
|
||||
return path.resolve('./test');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the default settings
|
||||
* @return {Object}
|
||||
*/
|
||||
get defaultSettings() {
|
||||
const cssModulesQuery = {
|
||||
modules: true,
|
||||
importLoaders: 1,
|
||||
localIdentName: '[name]-[local]-[hash:base64:5]'
|
||||
};
|
||||
|
||||
return {
|
||||
context: this.srcPathAbsolute,
|
||||
devtool: 'eval',
|
||||
devServer: {
|
||||
contentBase: ['./public/', './src/'],
|
||||
publicPath: '/assets/',
|
||||
historyApiFallback: true,
|
||||
hot: true,
|
||||
inline: true,
|
||||
port: 5000
|
||||
},
|
||||
entry: './index.js',
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
enforce: 'pre',
|
||||
test: /\.js?$/,
|
||||
include: this.srcPathAbsolute,
|
||||
loader: 'babel-loader',
|
||||
query: {
|
||||
presets: ['es2015', 'react', 'stage-2']
|
||||
}
|
||||
},
|
||||
{
|
||||
test: /^.((?!cssmodule).)*\.css$/,
|
||||
loaders: [
|
||||
{ loader: 'style-loader' },
|
||||
{ loader: 'css-loader' }
|
||||
]
|
||||
},
|
||||
{
|
||||
test: /\.(png|jpg|gif|mp4|ogg|svg|woff|woff2|ttf|eot|ico)$/,
|
||||
loader: 'file-loader'
|
||||
},
|
||||
{
|
||||
test: /^.((?!cssmodule).)*\.styl$/,
|
||||
loaders: [
|
||||
{ loader: 'style-loader' },
|
||||
{ loader: 'css-loader' },
|
||||
{ loader: 'stylus-loader' }
|
||||
]
|
||||
},
|
||||
{
|
||||
test: /\.json$/,
|
||||
loader: 'json-loader'
|
||||
},
|
||||
{
|
||||
test: /\.(js|jsx)$/,
|
||||
include: [].concat(
|
||||
this.includedPackages,
|
||||
[this.srcPathAbsolute]
|
||||
),
|
||||
loaders: [
|
||||
// Note: Moved this to .babelrc
|
||||
{ loader: 'babel-loader' }
|
||||
]
|
||||
},
|
||||
{
|
||||
test: /\.cssmodule\.(sass|scss)$/,
|
||||
loaders: [
|
||||
{ loader: 'style-loader' },
|
||||
{
|
||||
loader: 'css-loader',
|
||||
query: cssModulesQuery
|
||||
},
|
||||
{ loader: 'sass-loader' }
|
||||
]
|
||||
},
|
||||
{
|
||||
test: /\.cssmodule\.css$/,
|
||||
loaders: [
|
||||
{ loader: 'style-loader' },
|
||||
{
|
||||
loader: 'css-loader',
|
||||
query: cssModulesQuery
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
test: /\.cssmodule\.less$/,
|
||||
loaders: [
|
||||
{ loader: 'style-loader' },
|
||||
{
|
||||
loader: 'css-loader',
|
||||
query: cssModulesQuery
|
||||
},
|
||||
{ loader: 'less-loader' }
|
||||
]
|
||||
},
|
||||
{
|
||||
test: /\.cssmodule\.styl$/,
|
||||
loaders: [
|
||||
{ loader: 'style-loader' },
|
||||
{
|
||||
loader: 'css-loader',
|
||||
query: cssModulesQuery
|
||||
},
|
||||
{ loader: 'stylus-loader' }
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
output: {
|
||||
path: path.resolve('./dist/assets'),
|
||||
filename: 'app.js',
|
||||
publicPath: './assets/'
|
||||
},
|
||||
plugins: [],
|
||||
resolve: {
|
||||
alias: {
|
||||
actions: `${this.srcPathAbsolute}/actions/`,
|
||||
components: `${this.srcPathAbsolute}/components/`,
|
||||
config: `${this.srcPathAbsolute}/config/${this.env}.js`,
|
||||
images: `${this.srcPathAbsolute}/images/`,
|
||||
sources: `${this.srcPathAbsolute}/sources/`,
|
||||
stores: `${this.srcPathAbsolute}/stores/`,
|
||||
styles: `${this.srcPathAbsolute}/styles/`
|
||||
},
|
||||
extensions: ['.js', '.jsx'],
|
||||
modules: [
|
||||
this.srcPathAbsolute,
|
||||
'node_modules'
|
||||
]
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = WebpackBaseConfig;
|
||||
78
config/webpack/Dev.js
Normal file
78
config/webpack/Dev.js
Normal file
@@ -0,0 +1,78 @@
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* Default dev server configuration.
|
||||
*/
|
||||
const webpack = require('webpack');
|
||||
const WebpackBaseConfig = require('./Base');
|
||||
|
||||
class WebpackDevConfig extends WebpackBaseConfig {
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
this.config = {
|
||||
devtool: 'cheap-module-source-map',
|
||||
entry: [
|
||||
'webpack-dev-server/client?http://0.0.0.0:5000/',
|
||||
'webpack/hot/only-dev-server',
|
||||
'react-hot-loader/patch',
|
||||
'./client.js'
|
||||
],
|
||||
plugins: [
|
||||
new webpack.HotModuleReplacementPlugin(),
|
||||
new webpack.NoEmitOnErrorsPlugin(),
|
||||
new webpack.ProvidePlugin({
|
||||
$: "jquery",
|
||||
jQuery: "jquery",
|
||||
"window.jQuery": "jquery"
|
||||
}),
|
||||
new webpack.DefinePlugin({
|
||||
'process.env': {
|
||||
NODE_ENV: JSON.stringify(process.env.NODE_ENV),
|
||||
},
|
||||
}),
|
||||
]
|
||||
};
|
||||
|
||||
this.config.module.rules = this.config.module.rules.concat([
|
||||
{
|
||||
test: /^.((?!cssmodule).)*\.(sass|scss)$/,
|
||||
loaders: [
|
||||
{ loader: 'style-loader' },
|
||||
{
|
||||
loader: 'css-loader',
|
||||
options: {
|
||||
sourceMap: true
|
||||
}
|
||||
},
|
||||
{
|
||||
loader: 'sass-loader',
|
||||
options: {
|
||||
sourceMap: true
|
||||
}
|
||||
}
|
||||
]
|
||||
}, {
|
||||
test: /^.((?!cssmodule).)*\.less$/,
|
||||
use: [
|
||||
{ loader: "style-loader" },
|
||||
{
|
||||
loader: "css-loader",
|
||||
options: {
|
||||
sourceMap: true
|
||||
}
|
||||
}, {
|
||||
loader: "less-loader",
|
||||
options: {
|
||||
sourceMap: true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
])
|
||||
|
||||
// console.log(this.config.module.rules);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = WebpackDevConfig;
|
||||
88
config/webpack/Dist.js
Normal file
88
config/webpack/Dist.js
Normal file
@@ -0,0 +1,88 @@
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* Dist configuration. Used to build the
|
||||
* final output when running npm run dist.
|
||||
*/
|
||||
const webpack = require('webpack');
|
||||
const WebpackBaseConfig = require('./Base');
|
||||
const CopyWebpackPlugin = require('copy-webpack-plugin');
|
||||
|
||||
const path = require('path');
|
||||
const ROOT = path.resolve(__dirname, '../..');
|
||||
function root(args) {
|
||||
args = Array.prototype.slice.call(arguments, 0);
|
||||
return path.join.apply(path, [ROOT].concat(args));
|
||||
}
|
||||
|
||||
class WebpackDistConfig extends WebpackBaseConfig {
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
this.config = {
|
||||
cache: false,
|
||||
devtool: 'source-map',
|
||||
entry: [
|
||||
'./client.js'
|
||||
],
|
||||
output: {
|
||||
path: root('dist'),
|
||||
publicPath: '/',
|
||||
filename: 'assets/app.js',
|
||||
chunkFilename: 'assets/[id].[hash].chunk.js'
|
||||
},
|
||||
plugins: [
|
||||
new webpack.DefinePlugin({
|
||||
'process.env': {
|
||||
NODE_ENV: JSON.stringify(process.env.NODE_ENV),
|
||||
},
|
||||
}),
|
||||
new webpack.optimize.AggressiveMergingPlugin(),
|
||||
new webpack.NoEmitOnErrorsPlugin(),
|
||||
new webpack.ProvidePlugin({
|
||||
$: "jquery",
|
||||
jQuery: "jquery",
|
||||
"window.jQuery": "jquery"
|
||||
}),
|
||||
new CopyWebpackPlugin([
|
||||
{ from: root('public/'), to: root('dist/') },
|
||||
{ from: root('src/assets/images'), to: root('dist/assets/images') },
|
||||
//{ from: root('src/assets/images-demo'), to: root('dist/assets/images-demo') },
|
||||
]),
|
||||
]
|
||||
};
|
||||
|
||||
// Deactivate hot-reloading if we run dist build on the dev server
|
||||
this.config.devServer.hot = false;
|
||||
|
||||
this.config.module.rules = this.config.module.rules.concat([
|
||||
{
|
||||
test: /^.((?!cssmodule).)*\.(sass|scss)$/,
|
||||
loaders: [
|
||||
{ loader: 'style-loader' },
|
||||
{ loader: 'css-loader' },
|
||||
{ loader: 'postcss-loader' },
|
||||
{ loader: 'sass-loader' }
|
||||
]
|
||||
}, {
|
||||
test: /^.((?!cssmodule).)*\.less$/,
|
||||
loaders: [
|
||||
{ loader: 'style-loader' },
|
||||
{ loader: 'css-loader' },
|
||||
{ loader: 'postcss-loader' },
|
||||
{ loader: 'less-loader' }
|
||||
]
|
||||
}
|
||||
])
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the environment name
|
||||
* @return {String} The current environment
|
||||
*/
|
||||
get env() {
|
||||
return 'dist';
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = WebpackDistConfig;
|
||||
0
config/webpack/Server.js
Normal file
0
config/webpack/Server.js
Normal file
9
config/webpack/index.js
Normal file
9
config/webpack/index.js
Normal file
@@ -0,0 +1,9 @@
|
||||
'use strict';
|
||||
|
||||
const dev = require('./Dev');
|
||||
const dist = require('./Dist');
|
||||
|
||||
module.exports = {
|
||||
dev,
|
||||
dist
|
||||
};
|
||||
11219
package-lock.json
generated
Normal file
11219
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
121
package.json
Normal file
121
package.json
Normal file
@@ -0,0 +1,121 @@
|
||||
{
|
||||
"name": "chmhub",
|
||||
"private": true,
|
||||
"version": "1.0.0",
|
||||
"main": "",
|
||||
"scripts": {
|
||||
"clean": "rimraf dist/*",
|
||||
"build": "npm run clean && webpack --progress --bail --env dist -p",
|
||||
"lint": "eslint ./src",
|
||||
"lint-fix": "eslint ./src --fix",
|
||||
"lint-sass": "sass-lint -c .sass-lint.yml 'src/styles/**/*.scss' -v -q",
|
||||
"posttest": "npm run lint",
|
||||
"reinstall": "rimraf node_modules && rm -f package-lock.json && npm install",
|
||||
"serve:dev": "webpack-dev-server --open --env dev",
|
||||
"serve:dist": "webpack-dev-server --open --env dist -p --progress",
|
||||
"start": "npm run serve:dev",
|
||||
"sass": "node-sass --include-path ./node_modules --include-path ./public sass/main.scss src/main.css && blessc -f src/main.css"
|
||||
},
|
||||
"dependencies": {
|
||||
"@devexpress/dx-react-core": "^1.0.2",
|
||||
"@devexpress/dx-react-grid": "^1.0.2",
|
||||
"@sketchpixy/rubix": "^2.9.18",
|
||||
"axios": "^0.17.1",
|
||||
"bless": "^3.0.3",
|
||||
"classnames": "~2.2.5",
|
||||
"code-point-at": "^1.1.0",
|
||||
"cookies": "^0.7.1",
|
||||
"core-js": "~2.4.0",
|
||||
"datatables": "^1.10.13",
|
||||
"datatables.net": "^1.10.16",
|
||||
"datatables.net-responsive": "^2.2.1",
|
||||
"datatables.net-responsive-dt": "^2.1.1",
|
||||
"dateformat": "^3.0.2",
|
||||
"echarts": "^3.6.1",
|
||||
"element-resize-event": "^2.0.9",
|
||||
"express": "^4.15.3",
|
||||
"font-awesome": "~4.7.0",
|
||||
"formsy-material-ui": "^0.6.3",
|
||||
"formsy-react": "^0.18.0",
|
||||
"fs": "^0.0.1-security",
|
||||
"history": "^4.6.1",
|
||||
"intl-locales-supported": "^1.0.0",
|
||||
"jquery": "^3.2.1",
|
||||
"jquery-slimscroll": "~1.3.8",
|
||||
"material-ui": "0.18.5",
|
||||
"material-ui-autocomplete-google-places": "^2.2.0",
|
||||
"material-ui-datatables": "^0.18.1",
|
||||
"material-ui-geosuggest": "^0.7.1",
|
||||
"material-ui-places": "^1.1.7",
|
||||
"mime": "^1.3.6",
|
||||
"moment": "^2.19.4",
|
||||
"p-map": "^1.1.1",
|
||||
"prop-types": "^15.5.10",
|
||||
"qs": "^6.5.0",
|
||||
"ramda": "^0.25.0",
|
||||
"rc-queue-anim": "^1.0.4",
|
||||
"react": "^15.5.4",
|
||||
"react-cookie": "^2.1.2",
|
||||
"react-data-components": "^1.1.1",
|
||||
"react-dom": "^15.5.4",
|
||||
"react-draggable": "^3.0.5",
|
||||
"react-geosuggest": "^2.5.0",
|
||||
"react-geosuggest-sw": "^1.4.13",
|
||||
"react-google-maps": "^7.2.0",
|
||||
"react-helmet": "^5.1.3",
|
||||
"react-hot-loader": "^3.0.0-beta.6",
|
||||
"react-imgix": "^7.1.1",
|
||||
"react-jquery-datatables": "^0.7.1",
|
||||
"react-materialui-notifications": "^0.5.1",
|
||||
"react-places-autocomplete": "^5.4.2",
|
||||
"react-redux": "^5.0.5",
|
||||
"react-router": "^3.0.4",
|
||||
"react-router-redux": "^4.0.8",
|
||||
"react-tap-event-plugin": "^2.0.1",
|
||||
"react-websocket": "^2.0.0",
|
||||
"redux": "^3.7.1",
|
||||
"tablesaw": "^3.0.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"autoprefixer": "^7.1.1",
|
||||
"babel-core": "^6.24.1",
|
||||
"babel-eslint": "^7.2.3",
|
||||
"babel-loader": "^7.0.0",
|
||||
"babel-plugin-istanbul": "^4.1.4",
|
||||
"babel-plugin-transform-decorators-legacy": "^1.3.4",
|
||||
"babel-plugin-transform-object-rest-spread": "^6.23.0",
|
||||
"babel-polyfill": "^6.23.0",
|
||||
"babel-preset-airbnb": "^2.0.0",
|
||||
"babel-preset-es2015-native-modules": "^6.6.0",
|
||||
"babel-preset-react": "^6.24.1",
|
||||
"babel-preset-stage-0": "^6.24.1",
|
||||
"babel-preset-stage-1": "^6.24.1",
|
||||
"babel-preset-stage-2": "^6.24.1",
|
||||
"bootstrap": "~4.0.0-alpha.6",
|
||||
"copy-webpack-plugin": "^4.0.1",
|
||||
"css-loader": "^0.28.4",
|
||||
"eslint": "^3.19.0",
|
||||
"eslint-config-airbnb": "^15.0.2",
|
||||
"eslint-loader": "^1.7.1",
|
||||
"eslint-plugin-import": "^2.7.0",
|
||||
"eslint-plugin-jsx-a11y": "^5.1.1",
|
||||
"eslint-plugin-react": "^7.1.0",
|
||||
"file-loader": "^0.11.2",
|
||||
"glob": "^7.1.2",
|
||||
"node-sass": "^4.5.3",
|
||||
"null-loader": "^0.1.1",
|
||||
"phantomjs-prebuilt": "^2.1.7",
|
||||
"postcss-loader": "^2.0.5",
|
||||
"rimraf": "^2.6.1",
|
||||
"sass-lint": "^1.10.2",
|
||||
"sass-loader": "^6.0.5",
|
||||
"style-loader": "^0.18.2",
|
||||
"url-loader": "^0.5.8",
|
||||
"webpack": "^3.1.0",
|
||||
"webpack-dev-server": "^2.4.5"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0",
|
||||
"npm": ">= 3"
|
||||
}
|
||||
}
|
||||
7
postcss.config.js
Normal file
7
postcss.config.js
Normal file
@@ -0,0 +1,7 @@
|
||||
module.exports = {
|
||||
plugins: {
|
||||
'autoprefixer': {
|
||||
browsers: ['last 2 version']
|
||||
},
|
||||
}
|
||||
}
|
||||
3
public/.htpasswd
Normal file
3
public/.htpasswd
Normal file
@@ -0,0 +1,3 @@
|
||||
demo-test:LhJ/eoc1PDM2s
|
||||
michael:qupNb4K4t0s1k
|
||||
carlos:8fFCRXgcE1VSs
|
||||
21
public/bower_components/Chart.js/.bower.json
vendored
Executable file
21
public/bower_components/Chart.js/.bower.json
vendored
Executable file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"name": "Chart.js",
|
||||
"version": "1.0.2",
|
||||
"description": "Simple HTML5 Charts using the canvas element",
|
||||
"homepage": "https://github.com/nnnick/Chart.js",
|
||||
"author": "nnnick",
|
||||
"main": [
|
||||
"Chart.js"
|
||||
],
|
||||
"dependencies": {},
|
||||
"_release": "1.0.2",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "v1.0.2",
|
||||
"commit": "930b16a0af59201dcfcd1594b0e7540db4d04c9f"
|
||||
},
|
||||
"_source": "https://github.com/nnnick/Chart.js.git",
|
||||
"_target": "~1.0.2",
|
||||
"_originalSource": "chartjs",
|
||||
"_direct": true
|
||||
}
|
||||
13
public/bower_components/Chart.js/.travis.yml
vendored
Executable file
13
public/bower_components/Chart.js/.travis.yml
vendored
Executable file
@@ -0,0 +1,13 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- "0.11"
|
||||
- "0.10"
|
||||
|
||||
before_script:
|
||||
- npm install
|
||||
|
||||
script:
|
||||
- gulp test
|
||||
|
||||
notifications:
|
||||
slack: chartjs:pcfCZR6ugg5TEcaLtmIfQYuA
|
||||
55
public/bower_components/Chart.js/CONTRIBUTING.md
vendored
Executable file
55
public/bower_components/Chart.js/CONTRIBUTING.md
vendored
Executable file
@@ -0,0 +1,55 @@
|
||||
Contributing to Chart.js
|
||||
========================
|
||||
|
||||
Contributions to Chart.js are welcome and encouraged, but please have a look through the guidelines in this document before raising an issue, or writing code for the project.
|
||||
|
||||
|
||||
Using issues
|
||||
------------
|
||||
|
||||
The [issue tracker](https://github.com/nnnick/Chart.js/issues) is the preferred channel for reporting bugs, requesting new features and submitting pull requests.
|
||||
|
||||
If you're suggesting a new chart type, please take a look at [writing new chart types](https://github.com/nnnick/Chart.js/blob/master/docs/06-Advanced.md#writing-new-chart-types) in the documentation, and some of the [community extensions](https://github.com/nnnick/Chart.js/blob/master/docs/06-Advanced.md#community-extensions) that have been created already.
|
||||
|
||||
To keep the library lightweight for everyone, it's unlikely we'll add many more chart types to the core of Chart.js, but issues are a good medium to design and spec out how new chart types could work and look.
|
||||
|
||||
Please do not use issues for support requests. For help using Chart.js, please take a look at the [`chartjs`](http://stackoverflow.com/questions/tagged/chartjs) tag on Stack Overflow.
|
||||
|
||||
|
||||
Reporting bugs
|
||||
--------------
|
||||
|
||||
Well structured, detailed bug reports are hugely valuable for the project.
|
||||
|
||||
Guidlines for reporting bugs:
|
||||
|
||||
- Check the issue search to see if it has already been reported
|
||||
- Isolate the problem to a simple test case
|
||||
- Provide a demonstration of the problem on [JS Bin](http://jsbin.com) or similar
|
||||
|
||||
Please provide any additional details associated with the bug, if it's browser or screen density specific, or only happens with a certain configuration or data.
|
||||
|
||||
|
||||
Pull requests
|
||||
-------------
|
||||
|
||||
Clear, concise pull requests are excellent at continuing the project's community driven growth. But please review [these guidelines](https://github.com/blog/1943-how-to-write-the-perfect-pull-request) and the guidelines below before starting work on the project.
|
||||
|
||||
Guidlines:
|
||||
|
||||
- Please create an issue first:
|
||||
- For bugs, we can discuss the fixing approach
|
||||
- For enhancements, we can discuss if it is within the project scope and avoid duplicate effort
|
||||
- Please make changes to the files in [`/src`](https://github.com/nnnick/Chart.js/tree/master/src), not `Chart.js` or `Chart.min.js` in the repo root directory, this avoids merge conflicts
|
||||
- Tabs for indentation, not spaces please
|
||||
- If adding new functionality, please also update the relevant `.md` file in [`/docs`](https://github.com/nnnick/Chart.js/tree/master/docs)
|
||||
- Please make your commits in logical sections with clear commit messages
|
||||
|
||||
Joining the Project
|
||||
-------------
|
||||
- Active committers and contributors are invited to introduce yourself and request commit access to this project. Please send an email to hello@nickdownie.com or file an issue.
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
By contributing your code, you agree to license your contribution under the [MIT license](https://github.com/nnnick/Chart.js/blob/master/LICENSE.md).
|
||||
3477
public/bower_components/Chart.js/Chart.js
vendored
Executable file
3477
public/bower_components/Chart.js/Chart.js
vendored
Executable file
File diff suppressed because it is too large
Load Diff
11
public/bower_components/Chart.js/Chart.min.js
vendored
Executable file
11
public/bower_components/Chart.js/Chart.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
7
public/bower_components/Chart.js/LICENSE.md
vendored
Executable file
7
public/bower_components/Chart.js/LICENSE.md
vendored
Executable file
@@ -0,0 +1,7 @@
|
||||
Copyright (c) 2013-2015 Nick Downie
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
20
public/bower_components/Chart.js/README.md
vendored
Executable file
20
public/bower_components/Chart.js/README.md
vendored
Executable file
@@ -0,0 +1,20 @@
|
||||
# Chart.js
|
||||
|
||||
[](https://travis-ci.org/nnnick/Chart.js) [](https://codeclimate.com/github/nnnick/Chart.js)
|
||||
|
||||
|
||||
*Simple HTML5 Charts using the canvas element* [chartjs.org](http://www.chartjs.org)
|
||||
|
||||
## Documentation
|
||||
|
||||
You can find documentation at [chartjs.org/docs](http://www.chartjs.org/docs/). The markdown files that build the site are available under `/docs`. Please note - in some of the json examples of configuration you might notice some liquid tags - this is just for the generating the site html, please disregard.
|
||||
|
||||
## Bugs, issues and contributing
|
||||
|
||||
Before submitting an issue or a pull request to the project, please take a moment to look over the [contributing guidelines](https://github.com/nnnick/Chart.js/blob/master/CONTRIBUTING.md) first.
|
||||
|
||||
For support using Chart.js, please post questions with the [`chartjs` tag on Stack Overflow](http://stackoverflow.com/questions/tagged/chartjs).
|
||||
|
||||
## License
|
||||
|
||||
Chart.js is available under the [MIT license](http://opensource.org/licenses/MIT).
|
||||
11
public/bower_components/Chart.js/bower.json
vendored
Executable file
11
public/bower_components/Chart.js/bower.json
vendored
Executable file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Chart.js",
|
||||
"version": "1.0.2",
|
||||
"description": "Simple HTML5 Charts using the canvas element",
|
||||
"homepage": "https://github.com/nnnick/Chart.js",
|
||||
"author": "nnnick",
|
||||
"main": [
|
||||
"Chart.js"
|
||||
],
|
||||
"dependencies": {}
|
||||
}
|
||||
203
public/bower_components/Chart.js/docs/00-Getting-Started.md
vendored
Executable file
203
public/bower_components/Chart.js/docs/00-Getting-Started.md
vendored
Executable file
@@ -0,0 +1,203 @@
|
||||
---
|
||||
title: Getting started
|
||||
anchor: getting-started
|
||||
---
|
||||
|
||||
###Include Chart.js
|
||||
|
||||
First we need to include the Chart.js library on the page. The library occupies a global variable of `Chart`.
|
||||
|
||||
```html
|
||||
<script src="Chart.js"></script>
|
||||
```
|
||||
|
||||
Alternatively, if you're using an AMD loader for JavaScript modules, that is also supported in the Chart.js core. Please note: the library will still occupy a global variable of `Chart`, even if it detects `define` and `define.amd`. If this is a problem, you can call `noConflict` to restore the global Chart variable to it's previous owner.
|
||||
|
||||
```javascript
|
||||
// Using requirejs
|
||||
require(['path/to/Chartjs'], function(Chart){
|
||||
// Use Chart.js as normal here.
|
||||
|
||||
// Chart.noConflict restores the Chart global variable to it's previous owner
|
||||
// The function returns what was previously Chart, allowing you to reassign.
|
||||
var Chartjs = Chart.noConflict();
|
||||
|
||||
});
|
||||
```
|
||||
|
||||
You can also grab Chart.js using bower:
|
||||
|
||||
```bash
|
||||
bower install Chart.js --save
|
||||
```
|
||||
|
||||
###Creating a chart
|
||||
|
||||
To create a chart, we need to instantiate the `Chart` class. To do this, we need to pass in the 2d context of where we want to draw the chart. Here's an example.
|
||||
|
||||
```html
|
||||
<canvas id="myChart" width="400" height="400"></canvas>
|
||||
```
|
||||
|
||||
```javascript
|
||||
// Get the context of the canvas element we want to select
|
||||
var ctx = document.getElementById("myChart").getContext("2d");
|
||||
var myNewChart = new Chart(ctx).PolarArea(data);
|
||||
```
|
||||
|
||||
We can also get the context of our canvas with jQuery. To do this, we need to get the DOM node out of the jQuery collection, and call the `getContext("2d")` method on that.
|
||||
|
||||
```javascript
|
||||
// Get context with jQuery - using jQuery's .get() method.
|
||||
var ctx = $("#myChart").get(0).getContext("2d");
|
||||
// This will get the first returned node in the jQuery collection.
|
||||
var myNewChart = new Chart(ctx);
|
||||
```
|
||||
|
||||
After we've instantiated the Chart class on the canvas we want to draw on, Chart.js will handle the scaling for retina displays.
|
||||
|
||||
With the Chart class set up, we can go on to create one of the charts Chart.js has available. In the example below, we would be drawing a Polar area chart.
|
||||
|
||||
```javascript
|
||||
new Chart(ctx).PolarArea(data, options);
|
||||
```
|
||||
|
||||
We call a method of the name of the chart we want to create. We pass in the data for that chart type, and the options for that chart as parameters. Chart.js will merge the global defaults with chart type specific defaults, then merge any options passed in as a second argument after data.
|
||||
|
||||
###Global chart configuration
|
||||
|
||||
This concept was introduced in Chart.js 1.0 to keep configuration DRY, and allow for changing options globally across chart types, avoiding the need to specify options for each instance, or the default for a particular chart type.
|
||||
|
||||
```javascript
|
||||
Chart.defaults.global = {
|
||||
// Boolean - Whether to animate the chart
|
||||
animation: true,
|
||||
|
||||
// Number - Number of animation steps
|
||||
animationSteps: 60,
|
||||
|
||||
// String - Animation easing effect
|
||||
animationEasing: "easeOutQuart",
|
||||
|
||||
// Boolean - If we should show the scale at all
|
||||
showScale: true,
|
||||
|
||||
// Boolean - If we want to override with a hard coded scale
|
||||
scaleOverride: false,
|
||||
|
||||
// ** Required if scaleOverride is true **
|
||||
// Number - The number of steps in a hard coded scale
|
||||
scaleSteps: null,
|
||||
// Number - The value jump in the hard coded scale
|
||||
scaleStepWidth: null,
|
||||
// Number - The scale starting value
|
||||
scaleStartValue: null,
|
||||
|
||||
// String - Colour of the scale line
|
||||
scaleLineColor: "rgba(0,0,0,.1)",
|
||||
|
||||
// Number - Pixel width of the scale line
|
||||
scaleLineWidth: 1,
|
||||
|
||||
// Boolean - Whether to show labels on the scale
|
||||
scaleShowLabels: true,
|
||||
|
||||
// Interpolated JS string - can access value
|
||||
scaleLabel: "<%=value%>",
|
||||
|
||||
// Boolean - Whether the scale should stick to integers, not floats even if drawing space is there
|
||||
scaleIntegersOnly: true,
|
||||
|
||||
// Boolean - Whether the scale should start at zero, or an order of magnitude down from the lowest value
|
||||
scaleBeginAtZero: false,
|
||||
|
||||
// String - Scale label font declaration for the scale label
|
||||
scaleFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",
|
||||
|
||||
// Number - Scale label font size in pixels
|
||||
scaleFontSize: 12,
|
||||
|
||||
// String - Scale label font weight style
|
||||
scaleFontStyle: "normal",
|
||||
|
||||
// String - Scale label font colour
|
||||
scaleFontColor: "#666",
|
||||
|
||||
// Boolean - whether or not the chart should be responsive and resize when the browser does.
|
||||
responsive: false,
|
||||
|
||||
// Boolean - whether to maintain the starting aspect ratio or not when responsive, if set to false, will take up entire container
|
||||
maintainAspectRatio: true,
|
||||
|
||||
// Boolean - Determines whether to draw tooltips on the canvas or not
|
||||
showTooltips: true,
|
||||
|
||||
// Function - Determines whether to execute the customTooltips function instead of drawing the built in tooltips (See [Advanced - External Tooltips](#advanced-usage-custom-tooltips))
|
||||
customTooltips: false,
|
||||
|
||||
// Array - Array of string names to attach tooltip events
|
||||
tooltipEvents: ["mousemove", "touchstart", "touchmove"],
|
||||
|
||||
// String - Tooltip background colour
|
||||
tooltipFillColor: "rgba(0,0,0,0.8)",
|
||||
|
||||
// String - Tooltip label font declaration for the scale label
|
||||
tooltipFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",
|
||||
|
||||
// Number - Tooltip label font size in pixels
|
||||
tooltipFontSize: 14,
|
||||
|
||||
// String - Tooltip font weight style
|
||||
tooltipFontStyle: "normal",
|
||||
|
||||
// String - Tooltip label font colour
|
||||
tooltipFontColor: "#fff",
|
||||
|
||||
// String - Tooltip title font declaration for the scale label
|
||||
tooltipTitleFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",
|
||||
|
||||
// Number - Tooltip title font size in pixels
|
||||
tooltipTitleFontSize: 14,
|
||||
|
||||
// String - Tooltip title font weight style
|
||||
tooltipTitleFontStyle: "bold",
|
||||
|
||||
// String - Tooltip title font colour
|
||||
tooltipTitleFontColor: "#fff",
|
||||
|
||||
// Number - pixel width of padding around tooltip text
|
||||
tooltipYPadding: 6,
|
||||
|
||||
// Number - pixel width of padding around tooltip text
|
||||
tooltipXPadding: 6,
|
||||
|
||||
// Number - Size of the caret on the tooltip
|
||||
tooltipCaretSize: 8,
|
||||
|
||||
// Number - Pixel radius of the tooltip border
|
||||
tooltipCornerRadius: 6,
|
||||
|
||||
// Number - Pixel offset from point x to tooltip edge
|
||||
tooltipXOffset: 10,
|
||||
{% raw %}
|
||||
// String - Template string for single tooltips
|
||||
tooltipTemplate: "<%if (label){%><%=label%>: <%}%><%= value %>",
|
||||
{% endraw %}
|
||||
// String - Template string for multiple tooltips
|
||||
multiTooltipTemplate: "<%= value %>",
|
||||
|
||||
// Function - Will fire on animation progression.
|
||||
onAnimationProgress: function(){},
|
||||
|
||||
// Function - Will fire on animation completion.
|
||||
onAnimationComplete: function(){}
|
||||
}
|
||||
```
|
||||
|
||||
If for example, you wanted all charts created to be responsive, and resize when the browser window does, the following setting can be changed:
|
||||
|
||||
```javascript
|
||||
Chart.defaults.global.responsive = true;
|
||||
```
|
||||
|
||||
Now, every time we create a chart, `options.responsive` will be `true`.
|
||||
166
public/bower_components/Chart.js/docs/01-Line-Chart.md
vendored
Executable file
166
public/bower_components/Chart.js/docs/01-Line-Chart.md
vendored
Executable file
@@ -0,0 +1,166 @@
|
||||
---
|
||||
title: Line Chart
|
||||
anchor: line-chart
|
||||
---
|
||||
###Introduction
|
||||
A line chart is a way of plotting data points on a line.
|
||||
|
||||
Often, it is used to show trend data, and the comparison of two data sets.
|
||||
|
||||
<div class="canvas-holder">
|
||||
<canvas width="250" height="125"></canvas>
|
||||
</div>
|
||||
|
||||
###Example usage
|
||||
```javascript
|
||||
var myLineChart = new Chart(ctx).Line(data, options);
|
||||
```
|
||||
###Data structure
|
||||
|
||||
```javascript
|
||||
var data = {
|
||||
labels: ["January", "February", "March", "April", "May", "June", "July"],
|
||||
datasets: [
|
||||
{
|
||||
label: "My First dataset",
|
||||
fillColor: "rgba(220,220,220,0.2)",
|
||||
strokeColor: "rgba(220,220,220,1)",
|
||||
pointColor: "rgba(220,220,220,1)",
|
||||
pointStrokeColor: "#fff",
|
||||
pointHighlightFill: "#fff",
|
||||
pointHighlightStroke: "rgba(220,220,220,1)",
|
||||
data: [65, 59, 80, 81, 56, 55, 40]
|
||||
},
|
||||
{
|
||||
label: "My Second dataset",
|
||||
fillColor: "rgba(151,187,205,0.2)",
|
||||
strokeColor: "rgba(151,187,205,1)",
|
||||
pointColor: "rgba(151,187,205,1)",
|
||||
pointStrokeColor: "#fff",
|
||||
pointHighlightFill: "#fff",
|
||||
pointHighlightStroke: "rgba(151,187,205,1)",
|
||||
data: [28, 48, 40, 19, 86, 27, 90]
|
||||
}
|
||||
]
|
||||
};
|
||||
```
|
||||
|
||||
The line chart requires an array of labels for each of the data points. This is shown on the X axis.
|
||||
The data for line charts is broken up into an array of datasets. Each dataset has a colour for the fill, a colour for the line and colours for the points and strokes of the points. These colours are strings just like CSS. You can use RGBA, RGB, HEX or HSL notation.
|
||||
|
||||
The label key on each dataset is optional, and can be used when generating a scale for the chart.
|
||||
|
||||
### Chart options
|
||||
|
||||
These are the customisation options specific to Line charts. These options are merged with the [global chart configuration options](#getting-started-global-chart-configuration), and form the options of the chart.
|
||||
|
||||
```javascript
|
||||
{
|
||||
|
||||
///Boolean - Whether grid lines are shown across the chart
|
||||
scaleShowGridLines : true,
|
||||
|
||||
//String - Colour of the grid lines
|
||||
scaleGridLineColor : "rgba(0,0,0,.05)",
|
||||
|
||||
//Number - Width of the grid lines
|
||||
scaleGridLineWidth : 1,
|
||||
|
||||
//Boolean - Whether to show horizontal lines (except X axis)
|
||||
scaleShowHorizontalLines: true,
|
||||
|
||||
//Boolean - Whether to show vertical lines (except Y axis)
|
||||
scaleShowVerticalLines: true,
|
||||
|
||||
//Boolean - Whether the line is curved between points
|
||||
bezierCurve : true,
|
||||
|
||||
//Number - Tension of the bezier curve between points
|
||||
bezierCurveTension : 0.4,
|
||||
|
||||
//Boolean - Whether to show a dot for each point
|
||||
pointDot : true,
|
||||
|
||||
//Number - Radius of each point dot in pixels
|
||||
pointDotRadius : 4,
|
||||
|
||||
//Number - Pixel width of point dot stroke
|
||||
pointDotStrokeWidth : 1,
|
||||
|
||||
//Number - amount extra to add to the radius to cater for hit detection outside the drawn point
|
||||
pointHitDetectionRadius : 20,
|
||||
|
||||
//Boolean - Whether to show a stroke for datasets
|
||||
datasetStroke : true,
|
||||
|
||||
//Number - Pixel width of dataset stroke
|
||||
datasetStrokeWidth : 2,
|
||||
|
||||
//Boolean - Whether to fill the dataset with a colour
|
||||
datasetFill : true,
|
||||
{% raw %}
|
||||
//String - A legend template
|
||||
legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<datasets.length; i++){%><li><span style=\"background-color:<%=datasets[i].strokeColor%>\"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>"
|
||||
{% endraw %}
|
||||
};
|
||||
```
|
||||
|
||||
You can override these for your `Chart` instance by passing a second argument into the `Line` method as an object with the keys you want to override.
|
||||
|
||||
For example, we could have a line chart without bezier curves between points by doing the following:
|
||||
|
||||
```javascript
|
||||
new Chart(ctx).Line(data, {
|
||||
bezierCurve: false
|
||||
});
|
||||
// This will create a chart with all of the default options, merged from the global config,
|
||||
// and the Line chart defaults, but this particular instance will have `bezierCurve` set to false.
|
||||
```
|
||||
|
||||
We can also change these defaults values for each Line type that is created, this object is available at `Chart.defaults.Line`.
|
||||
|
||||
|
||||
### Prototype methods
|
||||
|
||||
#### .getPointsAtEvent( event )
|
||||
|
||||
Calling `getPointsAtEvent(event)` on your Chart instance passing an argument of an event, or jQuery event, will return the point elements that are at that the same position of that event.
|
||||
|
||||
```javascript
|
||||
canvas.onclick = function(evt){
|
||||
var activePoints = myLineChart.getPointsAtEvent(evt);
|
||||
// => activePoints is an array of points on the canvas that are at the same position as the click event.
|
||||
};
|
||||
```
|
||||
|
||||
This functionality may be useful for implementing DOM based tooltips, or triggering custom behaviour in your application.
|
||||
|
||||
#### .update( )
|
||||
|
||||
Calling `update()` on your Chart instance will re-render the chart with any updated values, allowing you to edit the value of multiple existing points, then render those in one animated render loop.
|
||||
|
||||
```javascript
|
||||
myLineChart.datasets[0].points[2].value = 50;
|
||||
// Would update the first dataset's value of 'March' to be 50
|
||||
myLineChart.update();
|
||||
// Calling update now animates the position of March from 90 to 50.
|
||||
```
|
||||
|
||||
#### .addData( valuesArray, label )
|
||||
|
||||
Calling `addData(valuesArray, label)` on your Chart instance passing an array of values for each dataset, along with a label for those points.
|
||||
|
||||
```javascript
|
||||
// The values array passed into addData should be one for each dataset in the chart
|
||||
myLineChart.addData([40, 60], "August");
|
||||
// This new data will now animate at the end of the chart.
|
||||
```
|
||||
|
||||
#### .removeData( )
|
||||
|
||||
Calling `removeData()` on your Chart instance will remove the first value for all datasets on the chart.
|
||||
|
||||
```javascript
|
||||
myLineChart.removeData();
|
||||
// The chart will remove the first point and animate other points into place
|
||||
```
|
||||
149
public/bower_components/Chart.js/docs/02-Bar-Chart.md
vendored
Executable file
149
public/bower_components/Chart.js/docs/02-Bar-Chart.md
vendored
Executable file
@@ -0,0 +1,149 @@
|
||||
---
|
||||
title: Bar Chart
|
||||
anchor: bar-chart
|
||||
---
|
||||
|
||||
### Introduction
|
||||
A bar chart is a way of showing data as bars.
|
||||
|
||||
It is sometimes used to show trend data, and the comparison of multiple data sets side by side.
|
||||
|
||||
<div class="canvas-holder">
|
||||
<canvas width="250" height="125"></canvas>
|
||||
</div>
|
||||
|
||||
### Example usage
|
||||
```javascript
|
||||
var myBarChart = new Chart(ctx).Bar(data, options);
|
||||
```
|
||||
|
||||
### Data structure
|
||||
|
||||
```javascript
|
||||
var data = {
|
||||
labels: ["January", "February", "March", "April", "May", "June", "July"],
|
||||
datasets: [
|
||||
{
|
||||
label: "My First dataset",
|
||||
fillColor: "rgba(220,220,220,0.5)",
|
||||
strokeColor: "rgba(220,220,220,0.8)",
|
||||
highlightFill: "rgba(220,220,220,0.75)",
|
||||
highlightStroke: "rgba(220,220,220,1)",
|
||||
data: [65, 59, 80, 81, 56, 55, 40]
|
||||
},
|
||||
{
|
||||
label: "My Second dataset",
|
||||
fillColor: "rgba(151,187,205,0.5)",
|
||||
strokeColor: "rgba(151,187,205,0.8)",
|
||||
highlightFill: "rgba(151,187,205,0.75)",
|
||||
highlightStroke: "rgba(151,187,205,1)",
|
||||
data: [28, 48, 40, 19, 86, 27, 90]
|
||||
}
|
||||
]
|
||||
};
|
||||
```
|
||||
The bar chart has the a very similar data structure to the line chart, and has an array of datasets, each with colours and an array of data. Again, colours are in CSS format.
|
||||
We have an array of labels too for display. In the example, we are showing the same data as the previous line chart example.
|
||||
|
||||
The label key on each dataset is optional, and can be used when generating a scale for the chart.
|
||||
|
||||
### Chart Options
|
||||
|
||||
These are the customisation options specific to Bar charts. These options are merged with the [global chart configuration options](#getting-started-global-chart-configuration), and form the options of the chart.
|
||||
|
||||
```javascript
|
||||
{
|
||||
//Boolean - Whether the scale should start at zero, or an order of magnitude down from the lowest value
|
||||
scaleBeginAtZero : true,
|
||||
|
||||
//Boolean - Whether grid lines are shown across the chart
|
||||
scaleShowGridLines : true,
|
||||
|
||||
//String - Colour of the grid lines
|
||||
scaleGridLineColor : "rgba(0,0,0,.05)",
|
||||
|
||||
//Number - Width of the grid lines
|
||||
scaleGridLineWidth : 1,
|
||||
|
||||
//Boolean - Whether to show horizontal lines (except X axis)
|
||||
scaleShowHorizontalLines: true,
|
||||
|
||||
//Boolean - Whether to show vertical lines (except Y axis)
|
||||
scaleShowVerticalLines: true,
|
||||
|
||||
//Boolean - If there is a stroke on each bar
|
||||
barShowStroke : true,
|
||||
|
||||
//Number - Pixel width of the bar stroke
|
||||
barStrokeWidth : 2,
|
||||
|
||||
//Number - Spacing between each of the X value sets
|
||||
barValueSpacing : 5,
|
||||
|
||||
//Number - Spacing between data sets within X values
|
||||
barDatasetSpacing : 1,
|
||||
{% raw %}
|
||||
//String - A legend template
|
||||
legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<datasets.length; i++){%><li><span style=\"background-color:<%=datasets[i].fillColor%>\"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>"
|
||||
{% endraw %}
|
||||
}
|
||||
```
|
||||
|
||||
You can override these for your `Chart` instance by passing a second argument into the `Bar` method as an object with the keys you want to override.
|
||||
|
||||
For example, we could have a bar chart without a stroke on each bar by doing the following:
|
||||
|
||||
```javascript
|
||||
new Chart(ctx).Bar(data, {
|
||||
barShowStroke: false
|
||||
});
|
||||
// This will create a chart with all of the default options, merged from the global config,
|
||||
// and the Bar chart defaults but this particular instance will have `barShowStroke` set to false.
|
||||
```
|
||||
|
||||
We can also change these defaults values for each Bar type that is created, this object is available at `Chart.defaults.Bar`.
|
||||
|
||||
### Prototype methods
|
||||
|
||||
#### .getBarsAtEvent( event )
|
||||
|
||||
Calling `getBarsAtEvent(event)` on your Chart instance passing an argument of an event, or jQuery event, will return the bar elements that are at that the same position of that event.
|
||||
|
||||
```javascript
|
||||
canvas.onclick = function(evt){
|
||||
var activeBars = myBarChart.getBarsAtEvent(evt);
|
||||
// => activeBars is an array of bars on the canvas that are at the same position as the click event.
|
||||
};
|
||||
```
|
||||
|
||||
This functionality may be useful for implementing DOM based tooltips, or triggering custom behaviour in your application.
|
||||
|
||||
#### .update( )
|
||||
|
||||
Calling `update()` on your Chart instance will re-render the chart with any updated values, allowing you to edit the value of multiple existing points, then render those in one animated render loop.
|
||||
|
||||
```javascript
|
||||
myBarChart.datasets[0].bars[2].value = 50;
|
||||
// Would update the first dataset's value of 'March' to be 50
|
||||
myBarChart.update();
|
||||
// Calling update now animates the position of March from 90 to 50.
|
||||
```
|
||||
|
||||
#### .addData( valuesArray, label )
|
||||
|
||||
Calling `addData(valuesArray, label)` on your Chart instance passing an array of values for each dataset, along with a label for those bars.
|
||||
|
||||
```javascript
|
||||
// The values array passed into addData should be one for each dataset in the chart
|
||||
myBarChart.addData([40, 60], "August");
|
||||
// The new data will now animate at the end of the chart.
|
||||
```
|
||||
|
||||
#### .removeData( )
|
||||
|
||||
Calling `removeData()` on your Chart instance will remove the first value for all datasets on the chart.
|
||||
|
||||
```javascript
|
||||
myBarChart.removeData();
|
||||
// The chart will now animate and remove the first bar
|
||||
```
|
||||
177
public/bower_components/Chart.js/docs/03-Radar-Chart.md
vendored
Executable file
177
public/bower_components/Chart.js/docs/03-Radar-Chart.md
vendored
Executable file
@@ -0,0 +1,177 @@
|
||||
---
|
||||
title: Radar Chart
|
||||
anchor: radar-chart
|
||||
---
|
||||
|
||||
###Introduction
|
||||
A radar chart is a way of showing multiple data points and the variation between them.
|
||||
|
||||
They are often useful for comparing the points of two or more different data sets.
|
||||
|
||||
<div class="canvas-holder">
|
||||
<canvas width="250" height="125"></canvas>
|
||||
</div>
|
||||
|
||||
###Example usage
|
||||
|
||||
```javascript
|
||||
var myRadarChart = new Chart(ctx).Radar(data, options);
|
||||
```
|
||||
|
||||
###Data structure
|
||||
```javascript
|
||||
var data = {
|
||||
labels: ["Eating", "Drinking", "Sleeping", "Designing", "Coding", "Cycling", "Running"],
|
||||
datasets: [
|
||||
{
|
||||
label: "My First dataset",
|
||||
fillColor: "rgba(220,220,220,0.2)",
|
||||
strokeColor: "rgba(220,220,220,1)",
|
||||
pointColor: "rgba(220,220,220,1)",
|
||||
pointStrokeColor: "#fff",
|
||||
pointHighlightFill: "#fff",
|
||||
pointHighlightStroke: "rgba(220,220,220,1)",
|
||||
data: [65, 59, 90, 81, 56, 55, 40]
|
||||
},
|
||||
{
|
||||
label: "My Second dataset",
|
||||
fillColor: "rgba(151,187,205,0.2)",
|
||||
strokeColor: "rgba(151,187,205,1)",
|
||||
pointColor: "rgba(151,187,205,1)",
|
||||
pointStrokeColor: "#fff",
|
||||
pointHighlightFill: "#fff",
|
||||
pointHighlightStroke: "rgba(151,187,205,1)",
|
||||
data: [28, 48, 40, 19, 96, 27, 100]
|
||||
}
|
||||
]
|
||||
};
|
||||
```
|
||||
For a radar chart, to provide context of what each point means, we include an array of strings that show around each point in the chart.
|
||||
For the radar chart data, we have an array of datasets. Each of these is an object, with a fill colour, a stroke colour, a colour for the fill of each point, and a colour for the stroke of each point. We also have an array of data values.
|
||||
|
||||
The label key on each dataset is optional, and can be used when generating a scale for the chart.
|
||||
|
||||
### Chart options
|
||||
|
||||
These are the customisation options specific to Radar charts. These options are merged with the [global chart configuration options](#getting-started-global-chart-configuration), and form the options of the chart.
|
||||
|
||||
|
||||
```javascript
|
||||
{
|
||||
//Boolean - Whether to show lines for each scale point
|
||||
scaleShowLine : true,
|
||||
|
||||
//Boolean - Whether we show the angle lines out of the radar
|
||||
angleShowLineOut : true,
|
||||
|
||||
//Boolean - Whether to show labels on the scale
|
||||
scaleShowLabels : false,
|
||||
|
||||
// Boolean - Whether the scale should begin at zero
|
||||
scaleBeginAtZero : true,
|
||||
|
||||
//String - Colour of the angle line
|
||||
angleLineColor : "rgba(0,0,0,.1)",
|
||||
|
||||
//Number - Pixel width of the angle line
|
||||
angleLineWidth : 1,
|
||||
|
||||
//String - Point label font declaration
|
||||
pointLabelFontFamily : "'Arial'",
|
||||
|
||||
//String - Point label font weight
|
||||
pointLabelFontStyle : "normal",
|
||||
|
||||
//Number - Point label font size in pixels
|
||||
pointLabelFontSize : 10,
|
||||
|
||||
//String - Point label font colour
|
||||
pointLabelFontColor : "#666",
|
||||
|
||||
//Boolean - Whether to show a dot for each point
|
||||
pointDot : true,
|
||||
|
||||
//Number - Radius of each point dot in pixels
|
||||
pointDotRadius : 3,
|
||||
|
||||
//Number - Pixel width of point dot stroke
|
||||
pointDotStrokeWidth : 1,
|
||||
|
||||
//Number - amount extra to add to the radius to cater for hit detection outside the drawn point
|
||||
pointHitDetectionRadius : 20,
|
||||
|
||||
//Boolean - Whether to show a stroke for datasets
|
||||
datasetStroke : true,
|
||||
|
||||
//Number - Pixel width of dataset stroke
|
||||
datasetStrokeWidth : 2,
|
||||
|
||||
//Boolean - Whether to fill the dataset with a colour
|
||||
datasetFill : true,
|
||||
{% raw %}
|
||||
//String - A legend template
|
||||
legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<datasets.length; i++){%><li><span style=\"background-color:<%=datasets[i].strokeColor%>\"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>"
|
||||
{% endraw %}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
You can override these for your `Chart` instance by passing a second argument into the `Radar` method as an object with the keys you want to override.
|
||||
|
||||
For example, we could have a radar chart without a point for each on piece of data by doing the following:
|
||||
|
||||
```javascript
|
||||
new Chart(ctx).Radar(data, {
|
||||
pointDot: false
|
||||
});
|
||||
// This will create a chart with all of the default options, merged from the global config,
|
||||
// and the Bar chart defaults but this particular instance will have `pointDot` set to false.
|
||||
```
|
||||
|
||||
We can also change these defaults values for each Radar type that is created, this object is available at `Chart.defaults.Radar`.
|
||||
|
||||
|
||||
### Prototype methods
|
||||
|
||||
#### .getPointsAtEvent( event )
|
||||
|
||||
Calling `getPointsAtEvent(event)` on your Chart instance passing an argument of an event, or jQuery event, will return the point elements that are at that the same position of that event.
|
||||
|
||||
```javascript
|
||||
canvas.onclick = function(evt){
|
||||
var activePoints = myRadarChart.getPointsAtEvent(evt);
|
||||
// => activePoints is an array of points on the canvas that are at the same position as the click event.
|
||||
};
|
||||
```
|
||||
|
||||
This functionality may be useful for implementing DOM based tooltips, or triggering custom behaviour in your application.
|
||||
|
||||
#### .update( )
|
||||
|
||||
Calling `update()` on your Chart instance will re-render the chart with any updated values, allowing you to edit the value of multiple existing points, then render those in one animated render loop.
|
||||
|
||||
```javascript
|
||||
myRadarChart.datasets[0].points[2].value = 50;
|
||||
// Would update the first dataset's value of 'Sleeping' to be 50
|
||||
myRadarChart.update();
|
||||
// Calling update now animates the position of Sleeping from 90 to 50.
|
||||
```
|
||||
|
||||
#### .addData( valuesArray, label )
|
||||
|
||||
Calling `addData(valuesArray, label)` on your Chart instance passing an array of values for each dataset, along with a label for those points.
|
||||
|
||||
```javascript
|
||||
// The values array passed into addData should be one for each dataset in the chart
|
||||
myRadarChart.addData([40, 60], "Dancing");
|
||||
// The new data will now animate at the end of the chart.
|
||||
```
|
||||
|
||||
#### .removeData( )
|
||||
|
||||
Calling `removeData()` on your Chart instance will remove the first value for all datasets on the chart.
|
||||
|
||||
```javascript
|
||||
myRadarChart.removeData();
|
||||
// Other points will now animate to their correct positions.
|
||||
```
|
||||
172
public/bower_components/Chart.js/docs/04-Polar-Area-Chart.md
vendored
Executable file
172
public/bower_components/Chart.js/docs/04-Polar-Area-Chart.md
vendored
Executable file
@@ -0,0 +1,172 @@
|
||||
---
|
||||
title: Polar Area Chart
|
||||
anchor: polar-area-chart
|
||||
---
|
||||
### Introduction
|
||||
Polar area charts are similar to pie charts, but each segment has the same angle - the radius of the segment differs depending on the value.
|
||||
|
||||
This type of chart is often useful when we want to show a comparison data similar to a pie chart, but also show a scale of values for context.
|
||||
|
||||
<div class="canvas-holder">
|
||||
<canvas width="250" height="125"></canvas>
|
||||
</div>
|
||||
|
||||
### Example usage
|
||||
|
||||
```javascript
|
||||
new Chart(ctx).PolarArea(data, options);
|
||||
```
|
||||
|
||||
### Data structure
|
||||
|
||||
```javascript
|
||||
var data = [
|
||||
{
|
||||
value: 300,
|
||||
color:"#F7464A",
|
||||
highlight: "#FF5A5E",
|
||||
label: "Red"
|
||||
},
|
||||
{
|
||||
value: 50,
|
||||
color: "#46BFBD",
|
||||
highlight: "#5AD3D1",
|
||||
label: "Green"
|
||||
},
|
||||
{
|
||||
value: 100,
|
||||
color: "#FDB45C",
|
||||
highlight: "#FFC870",
|
||||
label: "Yellow"
|
||||
},
|
||||
{
|
||||
value: 40,
|
||||
color: "#949FB1",
|
||||
highlight: "#A8B3C5",
|
||||
label: "Grey"
|
||||
},
|
||||
{
|
||||
value: 120,
|
||||
color: "#4D5360",
|
||||
highlight: "#616774",
|
||||
label: "Dark Grey"
|
||||
}
|
||||
|
||||
];
|
||||
```
|
||||
As you can see, for the chart data you pass in an array of objects, with a value and a colour. The value attribute should be a number, while the color attribute should be a string. Similar to CSS, for this string you can use HEX notation, RGB, RGBA or HSL.
|
||||
|
||||
### Chart options
|
||||
|
||||
These are the customisation options specific to Polar Area charts. These options are merged with the [global chart configuration options](#getting-started-global-chart-configuration), and form the options of the chart.
|
||||
|
||||
```javascript
|
||||
{
|
||||
//Boolean - Show a backdrop to the scale label
|
||||
scaleShowLabelBackdrop : true,
|
||||
|
||||
//String - The colour of the label backdrop
|
||||
scaleBackdropColor : "rgba(255,255,255,0.75)",
|
||||
|
||||
// Boolean - Whether the scale should begin at zero
|
||||
scaleBeginAtZero : true,
|
||||
|
||||
//Number - The backdrop padding above & below the label in pixels
|
||||
scaleBackdropPaddingY : 2,
|
||||
|
||||
//Number - The backdrop padding to the side of the label in pixels
|
||||
scaleBackdropPaddingX : 2,
|
||||
|
||||
//Boolean - Show line for each value in the scale
|
||||
scaleShowLine : true,
|
||||
|
||||
//Boolean - Stroke a line around each segment in the chart
|
||||
segmentShowStroke : true,
|
||||
|
||||
//String - The colour of the stroke on each segement.
|
||||
segmentStrokeColor : "#fff",
|
||||
|
||||
//Number - The width of the stroke value in pixels
|
||||
segmentStrokeWidth : 2,
|
||||
|
||||
//Number - Amount of animation steps
|
||||
animationSteps : 100,
|
||||
|
||||
//String - Animation easing effect.
|
||||
animationEasing : "easeOutBounce",
|
||||
|
||||
//Boolean - Whether to animate the rotation of the chart
|
||||
animateRotate : true,
|
||||
|
||||
//Boolean - Whether to animate scaling the chart from the centre
|
||||
animateScale : false,
|
||||
{% raw %}
|
||||
//String - A legend template
|
||||
legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<segments.length; i++){%><li><span style=\"background-color:<%=segments[i].fillColor%>\"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>"
|
||||
{% endraw %}
|
||||
}
|
||||
```
|
||||
|
||||
You can override these for your `Chart` instance by passing a second argument into the `PolarArea` method as an object with the keys you want to override.
|
||||
|
||||
For example, we could have a polar area chart with a black stroke on each segment like so:
|
||||
|
||||
```javascript
|
||||
new Chart(ctx).PolarArea(data, {
|
||||
segmentStrokeColor: "#000000"
|
||||
});
|
||||
// This will create a chart with all of the default options, merged from the global config,
|
||||
// and the PolarArea chart defaults but this particular instance will have `segmentStrokeColor` set to `"#000000"`.
|
||||
```
|
||||
|
||||
We can also change these defaults values for each PolarArea type that is created, this object is available at `Chart.defaults.PolarArea`.
|
||||
|
||||
### Prototype methods
|
||||
|
||||
#### .getSegmentsAtEvent( event )
|
||||
|
||||
Calling `getSegmentsAtEvent(event)` on your Chart instance passing an argument of an event, or jQuery event, will return the segment elements that are at that the same position of that event.
|
||||
|
||||
```javascript
|
||||
canvas.onclick = function(evt){
|
||||
var activePoints = myPolarAreaChart.getSegmentsAtEvent(evt);
|
||||
// => activePoints is an array of segments on the canvas that are at the same position as the click event.
|
||||
};
|
||||
```
|
||||
|
||||
This functionality may be useful for implementing DOM based tooltips, or triggering custom behaviour in your application.
|
||||
|
||||
#### .update( )
|
||||
|
||||
Calling `update()` on your Chart instance will re-render the chart with any updated values, allowing you to edit the value of multiple existing points, then render those in one animated render loop.
|
||||
|
||||
```javascript
|
||||
myPolarAreaChart.segments[1].value = 10;
|
||||
// Would update the first dataset's value of 'Green' to be 10
|
||||
myPolarAreaChart.update();
|
||||
// Calling update now animates the position of Green from 50 to 10.
|
||||
```
|
||||
|
||||
#### .addData( segmentData, index )
|
||||
|
||||
Calling `addData(segmentData, index)` on your Chart instance passing an object in the same format as in the constructor. There is an option second argument of 'index', this determines at what index the new segment should be inserted into the chart.
|
||||
|
||||
```javascript
|
||||
// An object in the same format as the original data source
|
||||
myPolarAreaChart.addData({
|
||||
value: 130,
|
||||
color: "#B48EAD",
|
||||
highlight: "#C69CBE",
|
||||
label: "Purple"
|
||||
});
|
||||
// The new segment will now animate in.
|
||||
```
|
||||
|
||||
#### .removeData( index )
|
||||
|
||||
Calling `removeData(index)` on your Chart instance will remove segment at that particular index. If none is provided, it will default to the last segment.
|
||||
|
||||
```javascript
|
||||
myPolarAreaChart.removeData();
|
||||
// Other segments will update to fill the empty space left.
|
||||
```
|
||||
158
public/bower_components/Chart.js/docs/05-Pie-Doughnut-Chart.md
vendored
Executable file
158
public/bower_components/Chart.js/docs/05-Pie-Doughnut-Chart.md
vendored
Executable file
@@ -0,0 +1,158 @@
|
||||
---
|
||||
title: Pie & Doughnut Charts
|
||||
anchor: doughnut-pie-chart
|
||||
---
|
||||
###Introduction
|
||||
Pie and doughnut charts are probably the most commonly used chart there are. They are divided into segments, the arc of each segment shows the proportional value of each piece of data.
|
||||
|
||||
They are excellent at showing the relational proportions between data.
|
||||
|
||||
Pie and doughnut charts are effectively the same class in Chart.js, but have one different default value - their `percentageInnerCutout`. This equates what percentage of the inner should be cut out. This defaults to `0` for pie charts, and `50` for doughnuts.
|
||||
|
||||
They are also registered under two aliases in the `Chart` core. Other than their different default value, and different alias, they are exactly the same.
|
||||
|
||||
<div class="canvas-holder half">
|
||||
<canvas width="250" height="125"></canvas>
|
||||
</div>
|
||||
|
||||
<div class="canvas-holder half">
|
||||
<canvas width="250" height="125"></canvas>
|
||||
</div>
|
||||
|
||||
|
||||
### Example usage
|
||||
|
||||
```javascript
|
||||
// For a pie chart
|
||||
var myPieChart = new Chart(ctx[0]).Pie(data,options);
|
||||
|
||||
// And for a doughnut chart
|
||||
var myDoughnutChart = new Chart(ctx[1]).Doughnut(data,options);
|
||||
```
|
||||
|
||||
### Data structure
|
||||
|
||||
```javascript
|
||||
var data = [
|
||||
{
|
||||
value: 300,
|
||||
color:"#F7464A",
|
||||
highlight: "#FF5A5E",
|
||||
label: "Red"
|
||||
},
|
||||
{
|
||||
value: 50,
|
||||
color: "#46BFBD",
|
||||
highlight: "#5AD3D1",
|
||||
label: "Green"
|
||||
},
|
||||
{
|
||||
value: 100,
|
||||
color: "#FDB45C",
|
||||
highlight: "#FFC870",
|
||||
label: "Yellow"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
For a pie chart, you must pass in an array of objects with a value and a color property. The value attribute should be a number, Chart.js will total all of the numbers and calculate the relative proportion of each. The color attribute should be a string. Similar to CSS, for this string you can use HEX notation, RGB, RGBA or HSL.
|
||||
|
||||
### Chart options
|
||||
|
||||
These are the customisation options specific to Pie & Doughnut charts. These options are merged with the [global chart configuration options](#getting-started-global-chart-configuration), and form the options of the chart.
|
||||
|
||||
```javascript
|
||||
{
|
||||
//Boolean - Whether we should show a stroke on each segment
|
||||
segmentShowStroke : true,
|
||||
|
||||
//String - The colour of each segment stroke
|
||||
segmentStrokeColor : "#fff",
|
||||
|
||||
//Number - The width of each segment stroke
|
||||
segmentStrokeWidth : 2,
|
||||
|
||||
//Number - The percentage of the chart that we cut out of the middle
|
||||
percentageInnerCutout : 50, // This is 0 for Pie charts
|
||||
|
||||
//Number - Amount of animation steps
|
||||
animationSteps : 100,
|
||||
|
||||
//String - Animation easing effect
|
||||
animationEasing : "easeOutBounce",
|
||||
|
||||
//Boolean - Whether we animate the rotation of the Doughnut
|
||||
animateRotate : true,
|
||||
|
||||
//Boolean - Whether we animate scaling the Doughnut from the centre
|
||||
animateScale : false,
|
||||
{% raw %}
|
||||
//String - A legend template
|
||||
legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<segments.length; i++){%><li><span style=\"background-color:<%=segments[i].fillColor%>\"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>"
|
||||
{% endraw %}
|
||||
}
|
||||
```
|
||||
You can override these for your `Chart` instance by passing a second argument into the `Doughnut` method as an object with the keys you want to override.
|
||||
|
||||
For example, we could have a doughnut chart that animates by scaling out from the centre like so:
|
||||
|
||||
```javascript
|
||||
new Chart(ctx).Doughnut(data, {
|
||||
animateScale: true
|
||||
});
|
||||
// This will create a chart with all of the default options, merged from the global config,
|
||||
// and the Doughnut chart defaults but this particular instance will have `animateScale` set to `true`.
|
||||
```
|
||||
|
||||
We can also change these default values for each Doughnut type that is created, this object is available at `Chart.defaults.Doughnut`. Pie charts also have a clone of these defaults available to change at `Chart.defaults.Pie`, with the only difference being `percentageInnerCutout` being set to 0.
|
||||
|
||||
### Prototype methods
|
||||
|
||||
#### .getSegmentsAtEvent( event )
|
||||
|
||||
Calling `getSegmentsAtEvent(event)` on your Chart instance passing an argument of an event, or jQuery event, will return the segment elements that are at the same position of that event.
|
||||
|
||||
```javascript
|
||||
canvas.onclick = function(evt){
|
||||
var activePoints = myDoughnutChart.getSegmentsAtEvent(evt);
|
||||
// => activePoints is an array of segments on the canvas that are at the same position as the click event.
|
||||
};
|
||||
```
|
||||
|
||||
This functionality may be useful for implementing DOM based tooltips, or triggering custom behaviour in your application.
|
||||
|
||||
#### .update( )
|
||||
|
||||
Calling `update()` on your Chart instance will re-render the chart with any updated values, allowing you to edit the value of multiple existing points, then render those in one animated render loop.
|
||||
|
||||
```javascript
|
||||
myDoughnutChart.segments[1].value = 10;
|
||||
// Would update the first dataset's value of 'Green' to be 10
|
||||
myDoughnutChart.update();
|
||||
// Calling update now animates the circumference of the segment 'Green' from 50 to 10.
|
||||
// and transitions other segment widths
|
||||
```
|
||||
|
||||
#### .addData( segmentData, index )
|
||||
|
||||
Calling `addData(segmentData, index)` on your Chart instance passing an object in the same format as in the constructor. There is an optional second argument of 'index', this determines at what index the new segment should be inserted into the chart.
|
||||
|
||||
```javascript
|
||||
// An object in the same format as the original data source
|
||||
myDoughnutChart.addData({
|
||||
value: 130,
|
||||
color: "#B48EAD",
|
||||
highlight: "#C69CBE",
|
||||
label: "Purple"
|
||||
});
|
||||
// The new segment will now animate in.
|
||||
```
|
||||
|
||||
#### .removeData( index )
|
||||
|
||||
Calling `removeData(index)` on your Chart instance will remove segment at that particular index. If none is provided, it will default to the last segment.
|
||||
|
||||
```javascript
|
||||
myDoughnutChart.removeData();
|
||||
// Other segments will update to fill the empty space left.
|
||||
```
|
||||
185
public/bower_components/Chart.js/docs/06-Advanced.md
vendored
Executable file
185
public/bower_components/Chart.js/docs/06-Advanced.md
vendored
Executable file
@@ -0,0 +1,185 @@
|
||||
---
|
||||
title: Advanced usage
|
||||
anchor: advanced-usage
|
||||
---
|
||||
|
||||
|
||||
### Prototype methods
|
||||
|
||||
For each chart, there are a set of global prototype methods on the shared `ChartType` which you may find useful. These are available on all charts created with Chart.js, but for the examples, let's use a line chart we've made.
|
||||
|
||||
```javascript
|
||||
// For example:
|
||||
var myLineChart = new Chart(ctx).Line(data);
|
||||
```
|
||||
|
||||
#### .clear()
|
||||
|
||||
Will clear the chart canvas. Used extensively internally between animation frames, but you might find it useful.
|
||||
|
||||
```javascript
|
||||
// Will clear the canvas that myLineChart is drawn on
|
||||
myLineChart.clear();
|
||||
// => returns 'this' for chainability
|
||||
```
|
||||
|
||||
#### .stop()
|
||||
|
||||
Use this to stop any current animation loop. This will pause the chart during any current animation frame. Call `.render()` to re-animate.
|
||||
|
||||
```javascript
|
||||
// Stops the charts animation loop at its current frame
|
||||
myLineChart.stop();
|
||||
// => returns 'this' for chainability
|
||||
```
|
||||
|
||||
#### .resize()
|
||||
|
||||
Use this to manually resize the canvas element. This is run each time the browser is resized, but you can call this method manually if you change the size of the canvas nodes container element.
|
||||
|
||||
```javascript
|
||||
// Resizes & redraws to fill its container element
|
||||
myLineChart.resize();
|
||||
// => returns 'this' for chainability
|
||||
```
|
||||
|
||||
#### .destroy()
|
||||
|
||||
Use this to destroy any chart instances that are created. This will clean up any references stored to the chart object within Chart.js, along with any associated event listeners attached by Chart.js.
|
||||
|
||||
```javascript
|
||||
// Destroys a specific chart instance
|
||||
myLineChart.destroy();
|
||||
```
|
||||
|
||||
#### .toBase64Image()
|
||||
|
||||
This returns a base 64 encoded string of the chart in it's current state.
|
||||
|
||||
```javascript
|
||||
myLineChart.toBase64Image();
|
||||
// => returns png data url of the image on the canvas
|
||||
```
|
||||
|
||||
#### .generateLegend()
|
||||
|
||||
Returns an HTML string of a legend for that chart. The template for this legend is at `legendTemplate` in the chart options.
|
||||
|
||||
```javascript
|
||||
myLineChart.generateLegend();
|
||||
// => returns HTML string of a legend for this chart
|
||||
```
|
||||
|
||||
### External Tooltips
|
||||
|
||||
You can enable custom tooltips in the global or chart configuration like so:
|
||||
|
||||
```javascript
|
||||
var myPieChart = new Chart(ctx).Pie(data, {
|
||||
customTooltips: function(tooltip) {
|
||||
|
||||
// tooltip will be false if tooltip is not visible or should be hidden
|
||||
if (!tooltip) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Otherwise, tooltip will be an object with all tooltip properties like:
|
||||
|
||||
// tooltip.caretHeight
|
||||
// tooltip.caretPadding
|
||||
// tooltip.chart
|
||||
// tooltip.cornerRadius
|
||||
// tooltip.fillColor
|
||||
// tooltip.font...
|
||||
// tooltip.text
|
||||
// tooltip.x
|
||||
// tooltip.y
|
||||
// etc...
|
||||
|
||||
};
|
||||
});
|
||||
```
|
||||
|
||||
See files `sample/pie-customTooltips.html` and `sample/line-customTooltips.html` for examples on how to get started.
|
||||
|
||||
|
||||
### Writing new chart types
|
||||
|
||||
Chart.js 1.0 has been rewritten to provide a platform for developers to create their own custom chart types, and be able to share and utilise them through the Chart.js API.
|
||||
|
||||
The format is relatively simple, there are a set of utility helper methods under `Chart.helpers`, including things such as looping over collections, requesting animation frames, and easing equations.
|
||||
|
||||
On top of this, there are also some simple base classes of Chart elements, these all extend from `Chart.Element`, and include things such as points, bars and scales.
|
||||
|
||||
```javascript
|
||||
Chart.Type.extend({
|
||||
// Passing in a name registers this chart in the Chart namespace
|
||||
name: "Scatter",
|
||||
// Providing a defaults will also register the deafults in the chart namespace
|
||||
defaults : {
|
||||
options: "Here",
|
||||
available: "at this.options"
|
||||
},
|
||||
// Initialize is fired when the chart is initialized - Data is passed in as a parameter
|
||||
// Config is automatically merged by the core of Chart.js, and is available at this.options
|
||||
initialize: function(data){
|
||||
this.chart.ctx // The drawing context for this chart
|
||||
this.chart.canvas // the canvas node for this chart
|
||||
},
|
||||
// Used to draw something on the canvas
|
||||
draw: function() {
|
||||
}
|
||||
});
|
||||
|
||||
// Now we can create a new instance of our chart, using the Chart.js API
|
||||
new Chart(ctx).Scatter(data);
|
||||
// initialize is now run
|
||||
```
|
||||
|
||||
### Extending existing chart types
|
||||
|
||||
We can also extend existing chart types, and expose them to the API in the same way. Let's say for example, we might want to run some more code when we initialize every Line chart.
|
||||
|
||||
```javascript
|
||||
// Notice now we're extending the particular Line chart type, rather than the base class.
|
||||
Chart.types.Line.extend({
|
||||
// Passing in a name registers this chart in the Chart namespace in the same way
|
||||
name: "LineAlt",
|
||||
initialize: function(data){
|
||||
console.log('My Line chart extension');
|
||||
Chart.types.Line.prototype.initialize.apply(this, arguments);
|
||||
}
|
||||
});
|
||||
|
||||
// Creates a line chart in the same way
|
||||
new Chart(ctx).LineAlt(data);
|
||||
// but this logs 'My Line chart extension' in the console.
|
||||
```
|
||||
|
||||
### Community extensions
|
||||
|
||||
- <a href="https://github.com/Regaddi/Chart.StackedBar.js" target"_blank">Stacked Bar Chart</a> by <a href="https://twitter.com/Regaddi" target="_blank">@Regaddi</a>
|
||||
- <a href="https://github.com/CAYdenberg/Chart.js" target"_blank">Error bars (bar and line charts)</a> by <a href="https://twitter.com/CAYdenberg" target="_blank">@CAYdenberg</a>
|
||||
|
||||
### Creating custom builds
|
||||
|
||||
Chart.js uses <a href="http://gulpjs.com/" target="_blank">gulp</a> to build the library into a single JavaScript file. We can use this same build script with custom parameters in order to build a custom version.
|
||||
|
||||
Firstly, we need to ensure development dependencies are installed. With node and npm installed, after cloning the Chart.js repo to a local directory, and navigating to that directory in the command line, we can run the following:
|
||||
|
||||
```bash
|
||||
npm install
|
||||
npm install -g gulp
|
||||
```
|
||||
|
||||
This will install the local development dependencies for Chart.js, along with a CLI for the JavaScript task runner <a href="http://gulpjs.com/" target="_blank">gulp</a>.
|
||||
|
||||
Now, we can run the `gulp build` task, and pass in a comma seperated list of types as an argument to build a custom version of Chart.js with only specified chart types.
|
||||
|
||||
Here we will create a version of Chart.js with only Line, Radar and Bar charts included:
|
||||
|
||||
```bash
|
||||
gulp build --types=Line,Radar,Bar
|
||||
```
|
||||
|
||||
This will output to the `/custom` directory, and write two files, Chart.js, and Chart.min.js with only those chart types included.
|
||||
42
public/bower_components/Chart.js/docs/07-Notes.md
vendored
Executable file
42
public/bower_components/Chart.js/docs/07-Notes.md
vendored
Executable file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: Notes
|
||||
anchor: notes
|
||||
---
|
||||
|
||||
### Browser support
|
||||
Browser support for the canvas element is available in all modern & major mobile browsers <a href="http://caniuse.com/canvas" target="_blank">(caniuse.com/canvas)</a>.
|
||||
|
||||
For IE8 & below, I would recommend using the polyfill ExplorerCanvas - available at <a href="https://code.google.com/p/explorercanvas/" target="_blank">https://code.google.com/p/explorercanvas/</a>. It falls back to Internet explorer's format VML when canvas support is not available. Example use:
|
||||
|
||||
```html
|
||||
<head>
|
||||
<!--[if lte IE 8]>
|
||||
<script src="excanvas.js"></script>
|
||||
<![endif]-->
|
||||
</head>
|
||||
```
|
||||
|
||||
Usually I would recommend feature detection to choose whether or not to load a polyfill, rather than IE conditional comments, however in this case, VML is a Microsoft proprietary format, so it will only work in IE.
|
||||
|
||||
Some important points to note in my experience using ExplorerCanvas as a fallback.
|
||||
|
||||
- Initialise charts on load rather than DOMContentReady when using the library, as sometimes a race condition will occur, and it will result in an error when trying to get the 2d context of a canvas.
|
||||
- New VML DOM elements are being created for each animation frame and there is no hardware acceleration. As a result animation is usually slow and jerky, with flashing text. It is a good idea to dynamically turn off animation based on canvas support. I recommend using the excellent <a href="http://modernizr.com/" target="_blank">Modernizr</a> to do this.
|
||||
- When declaring fonts, the library explorercanvas requires the font name to be in single quotes inside the string. For example, instead of your scaleFontFamily property being simply "Arial", explorercanvas support, use "'Arial'" instead. Chart.js does this for default values.
|
||||
|
||||
### Bugs & issues
|
||||
|
||||
Please report these on the GitHub page - at <a href="https://github.com/nnnick/Chart.js" target="_blank">github.com/nnnick/Chart.js</a>. If you could include a link to a simple <a href="http://jsbin.com/" target="_blank">jsbin</a> or similar to demonstrate the issue, that'd be really helpful.
|
||||
|
||||
|
||||
### Contributing
|
||||
New contributions to the library are welcome, just a couple of guidelines:
|
||||
|
||||
- Tabs for indentation, not spaces please.
|
||||
- Please ensure you're changing the individual files in `/src`, not the concatenated output in the `Chart.js` file in the root of the repo.
|
||||
- Please check that your code will pass `jshint` code standards, `gulp jshint` will run this for you.
|
||||
- Please keep pull requests concise, and document new functionality in the relevant `.md` file.
|
||||
- Consider whether your changes are useful for all users, or if creating a Chart.js extension would be more appropriate.
|
||||
|
||||
### License
|
||||
Chart.js is open source and available under the <a href="http://opensource.org/licenses/MIT" target="_blank">MIT license</a>.
|
||||
137
public/bower_components/Chart.js/gulpfile.js
vendored
Executable file
137
public/bower_components/Chart.js/gulpfile.js
vendored
Executable file
@@ -0,0 +1,137 @@
|
||||
var gulp = require('gulp'),
|
||||
concat = require('gulp-concat'),
|
||||
uglify = require('gulp-uglify'),
|
||||
util = require('gulp-util'),
|
||||
jshint = require('gulp-jshint'),
|
||||
size = require('gulp-size'),
|
||||
connect = require('gulp-connect'),
|
||||
replace = require('gulp-replace'),
|
||||
htmlv = require('gulp-html-validator'),
|
||||
inquirer = require('inquirer'),
|
||||
semver = require('semver'),
|
||||
exec = require('child_process').exec,
|
||||
fs = require('fs'),
|
||||
package = require('./package.json'),
|
||||
bower = require('./bower.json');
|
||||
|
||||
var srcDir = './src/';
|
||||
/*
|
||||
* Usage : gulp build --types=Bar,Line,Doughnut
|
||||
* Output: - A built Chart.js file with Core and types Bar, Line and Doughnut concatenated together
|
||||
* - A minified version of this code, in Chart.min.js
|
||||
*/
|
||||
|
||||
gulp.task('build', function(){
|
||||
|
||||
// Default to all of the chart types, with Chart.Core first
|
||||
var srcFiles = [FileName('Core')],
|
||||
isCustom = !!(util.env.types),
|
||||
outputDir = (isCustom) ? 'custom' : '.';
|
||||
if (isCustom){
|
||||
util.env.types.split(',').forEach(function(type){ return srcFiles.push(FileName(type))});
|
||||
}
|
||||
else{
|
||||
// Seems gulp-concat remove duplicates - nice!
|
||||
// So we can use this to sort out dependency order - aka include Core first!
|
||||
srcFiles.push(srcDir+'*');
|
||||
}
|
||||
|
||||
return gulp.src(srcFiles)
|
||||
.pipe(concat('Chart.js'))
|
||||
.pipe(replace('{{ version }}', package.version))
|
||||
.pipe(gulp.dest(outputDir))
|
||||
.pipe(uglify({preserveComments:'some'}))
|
||||
.pipe(concat('Chart.min.js'))
|
||||
.pipe(gulp.dest(outputDir));
|
||||
|
||||
function FileName(moduleName){
|
||||
return srcDir+'Chart.'+moduleName+'.js';
|
||||
};
|
||||
});
|
||||
|
||||
/*
|
||||
* Usage : gulp bump
|
||||
* Prompts: Version increment to bump
|
||||
* Output: - New version number written into package.json & bower.json
|
||||
*/
|
||||
|
||||
gulp.task('bump', function(complete){
|
||||
util.log('Current version:', util.colors.cyan(package.version));
|
||||
var choices = ['major', 'premajor', 'minor', 'preminor', 'patch', 'prepatch', 'prerelease'].map(function(versionType){
|
||||
return versionType + ' (v' + semver.inc(package.version, versionType) + ')';
|
||||
});
|
||||
inquirer.prompt({
|
||||
type: 'list',
|
||||
name: 'version',
|
||||
message: 'What version update would you like?',
|
||||
choices: choices
|
||||
}, function(res){
|
||||
var increment = res.version.split(' ')[0],
|
||||
newVersion = semver.inc(package.version, increment);
|
||||
|
||||
// Set the new versions into the bower/package object
|
||||
package.version = newVersion;
|
||||
bower.version = newVersion;
|
||||
|
||||
// Write these to their own files, then build the output
|
||||
fs.writeFileSync('package.json', JSON.stringify(package, null, 2));
|
||||
fs.writeFileSync('bower.json', JSON.stringify(bower, null, 2));
|
||||
|
||||
complete();
|
||||
});
|
||||
});
|
||||
|
||||
gulp.task('release', ['build'], function(){
|
||||
exec('git tag -a v' + package.version);
|
||||
});
|
||||
|
||||
gulp.task('jshint', function(){
|
||||
return gulp.src(srcDir + '*.js')
|
||||
.pipe(jshint())
|
||||
.pipe(jshint.reporter('default'));
|
||||
});
|
||||
|
||||
gulp.task('valid', function(){
|
||||
return gulp.src('samples/*.html')
|
||||
.pipe(htmlv());
|
||||
});
|
||||
|
||||
gulp.task('library-size', function(){
|
||||
return gulp.src('Chart.min.js')
|
||||
.pipe(size({
|
||||
gzip: true
|
||||
}));
|
||||
});
|
||||
|
||||
gulp.task('module-sizes', function(){
|
||||
return gulp.src(srcDir + '*.js')
|
||||
.pipe(uglify({preserveComments:'some'}))
|
||||
.pipe(size({
|
||||
showFiles: true,
|
||||
gzip: true
|
||||
}))
|
||||
});
|
||||
|
||||
gulp.task('watch', function(){
|
||||
gulp.watch('./src/*', ['build']);
|
||||
});
|
||||
|
||||
gulp.task('test', ['jshint', 'valid']);
|
||||
|
||||
gulp.task('size', ['library-size', 'module-sizes']);
|
||||
|
||||
gulp.task('default', ['build', 'watch']);
|
||||
|
||||
gulp.task('server', function(){
|
||||
connect.server({
|
||||
port: 8000
|
||||
});
|
||||
});
|
||||
|
||||
// Convenience task for opening the project straight from the command line
|
||||
gulp.task('_open', function(){
|
||||
exec('open http://localhost:8000');
|
||||
exec('subl .');
|
||||
});
|
||||
|
||||
gulp.task('dev', ['server', 'default']);
|
||||
28
public/bower_components/Chart.js/package.json
vendored
Executable file
28
public/bower_components/Chart.js/package.json
vendored
Executable file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"name": "chart.js",
|
||||
"homepage": "http://www.chartjs.org",
|
||||
"description": "Simple HTML5 charts using the canvas element.",
|
||||
"version": "1.0.2",
|
||||
"main": "Chart.js",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/nnnick/Chart.js.git"
|
||||
},
|
||||
"dependences": {},
|
||||
"devDependencies": {
|
||||
"gulp": "3.5.x",
|
||||
"gulp-concat": "~2.1.x",
|
||||
"gulp-connect": "~2.0.5",
|
||||
"gulp-jshint": "~1.5.1",
|
||||
"gulp-replace": "^0.4.0",
|
||||
"gulp-size": "~0.4.0",
|
||||
"gulp-uglify": "~0.2.x",
|
||||
"gulp-util": "~2.2.x",
|
||||
"gulp-html-validator": "^0.0.2",
|
||||
"inquirer": "^0.5.1",
|
||||
"semver": "^3.0.1"
|
||||
},
|
||||
"spm": {
|
||||
"main": "Chart.js"
|
||||
}
|
||||
}
|
||||
45
public/bower_components/Chart.js/samples/bar.html
vendored
Executable file
45
public/bower_components/Chart.js/samples/bar.html
vendored
Executable file
@@ -0,0 +1,45 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Bar Chart</title>
|
||||
<script src="../Chart.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div style="width: 50%">
|
||||
<canvas id="canvas" height="450" width="600"></canvas>
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
var randomScalingFactor = function(){ return Math.round(Math.random()*100)};
|
||||
|
||||
var barChartData = {
|
||||
labels : ["January","February","March","April","May","June","July"],
|
||||
datasets : [
|
||||
{
|
||||
fillColor : "rgba(220,220,220,0.5)",
|
||||
strokeColor : "rgba(220,220,220,0.8)",
|
||||
highlightFill: "rgba(220,220,220,0.75)",
|
||||
highlightStroke: "rgba(220,220,220,1)",
|
||||
data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()]
|
||||
},
|
||||
{
|
||||
fillColor : "rgba(151,187,205,0.5)",
|
||||
strokeColor : "rgba(151,187,205,0.8)",
|
||||
highlightFill : "rgba(151,187,205,0.75)",
|
||||
highlightStroke : "rgba(151,187,205,1)",
|
||||
data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()]
|
||||
}
|
||||
]
|
||||
|
||||
}
|
||||
window.onload = function(){
|
||||
var ctx = document.getElementById("canvas").getContext("2d");
|
||||
window.myBar = new Chart(ctx).Bar(barChartData, {
|
||||
responsive : true
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
67
public/bower_components/Chart.js/samples/doughnut.html
vendored
Executable file
67
public/bower_components/Chart.js/samples/doughnut.html
vendored
Executable file
@@ -0,0 +1,67 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Doughnut Chart</title>
|
||||
<script src="../Chart.js"></script>
|
||||
<style>
|
||||
body{
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
#canvas-holder{
|
||||
width:30%;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="canvas-holder">
|
||||
<canvas id="chart-area" width="500" height="500"/>
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
var doughnutData = [
|
||||
{
|
||||
value: 300,
|
||||
color:"#F7464A",
|
||||
highlight: "#FF5A5E",
|
||||
label: "Red"
|
||||
},
|
||||
{
|
||||
value: 50,
|
||||
color: "#46BFBD",
|
||||
highlight: "#5AD3D1",
|
||||
label: "Green"
|
||||
},
|
||||
{
|
||||
value: 100,
|
||||
color: "#FDB45C",
|
||||
highlight: "#FFC870",
|
||||
label: "Yellow"
|
||||
},
|
||||
{
|
||||
value: 40,
|
||||
color: "#949FB1",
|
||||
highlight: "#A8B3C5",
|
||||
label: "Grey"
|
||||
},
|
||||
{
|
||||
value: 120,
|
||||
color: "#4D5360",
|
||||
highlight: "#616774",
|
||||
label: "Dark Grey"
|
||||
}
|
||||
|
||||
];
|
||||
|
||||
window.onload = function(){
|
||||
var ctx = document.getElementById("chart-area").getContext("2d");
|
||||
window.myDoughnut = new Chart(ctx).Doughnut(doughnutData, {responsive : true});
|
||||
};
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
129
public/bower_components/Chart.js/samples/line-customTooltips.html
vendored
Executable file
129
public/bower_components/Chart.js/samples/line-customTooltips.html
vendored
Executable file
@@ -0,0 +1,129 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>Line Chart with Custom Tooltips</title>
|
||||
<script src="../Chart.js"></script>
|
||||
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
|
||||
|
||||
<style>
|
||||
#canvas-holder1 {
|
||||
width: 300px;
|
||||
margin: 20px auto;
|
||||
}
|
||||
#canvas-holder2 {
|
||||
width: 50%;
|
||||
margin: 20px 25%;
|
||||
}
|
||||
#chartjs-tooltip {
|
||||
opacity: 1;
|
||||
position: absolute;
|
||||
background: rgba(0, 0, 0, .7);
|
||||
color: white;
|
||||
padding: 3px;
|
||||
border-radius: 3px;
|
||||
-webkit-transition: all .1s ease;
|
||||
transition: all .1s ease;
|
||||
pointer-events: none;
|
||||
-webkit-transform: translate(-50%, 0);
|
||||
transform: translate(-50%, 0);
|
||||
}
|
||||
.chartjs-tooltip-key{
|
||||
display:inline-block;
|
||||
width:10px;
|
||||
height:10px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="canvas-holder1">
|
||||
<canvas id="chart1" width="300" height="30" />
|
||||
</div>
|
||||
<div id="canvas-holder2">
|
||||
<canvas id="chart2" width="450" height="600" />
|
||||
</div>
|
||||
|
||||
<div id="chartjs-tooltip"></div>
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
Chart.defaults.global.pointHitDetectionRadius = 1;
|
||||
Chart.defaults.global.customTooltips = function(tooltip) {
|
||||
|
||||
var tooltipEl = $('#chartjs-tooltip');
|
||||
|
||||
if (!tooltip) {
|
||||
tooltipEl.css({
|
||||
opacity: 0
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
tooltipEl.removeClass('above below');
|
||||
tooltipEl.addClass(tooltip.yAlign);
|
||||
|
||||
var innerHtml = '';
|
||||
for (var i = tooltip.labels.length - 1; i >= 0; i--) {
|
||||
innerHtml += [
|
||||
'<div class="chartjs-tooltip-section">',
|
||||
' <span class="chartjs-tooltip-key" style="background-color:' + tooltip.legendColors[i].fill + '"></span>',
|
||||
' <span class="chartjs-tooltip-value">' + tooltip.labels[i] + '</span>',
|
||||
'</div>'
|
||||
].join('');
|
||||
}
|
||||
tooltipEl.html(innerHtml);
|
||||
|
||||
tooltipEl.css({
|
||||
opacity: 1,
|
||||
left: tooltip.chart.canvas.offsetLeft + tooltip.x + 'px',
|
||||
top: tooltip.chart.canvas.offsetTop + tooltip.y + 'px',
|
||||
fontFamily: tooltip.fontFamily,
|
||||
fontSize: tooltip.fontSize,
|
||||
fontStyle: tooltip.fontStyle,
|
||||
});
|
||||
};
|
||||
var randomScalingFactor = function() {
|
||||
return Math.round(Math.random() * 100);
|
||||
};
|
||||
var lineChartData = {
|
||||
labels: ["January", "February", "March", "April", "May", "June", "July"],
|
||||
datasets: [{
|
||||
label: "My First dataset",
|
||||
fillColor: "rgba(220,220,220,0.2)",
|
||||
strokeColor: "rgba(220,220,220,1)",
|
||||
pointColor: "rgba(220,220,220,1)",
|
||||
pointStrokeColor: "#fff",
|
||||
pointHighlightFill: "#fff",
|
||||
pointHighlightStroke: "rgba(220,220,220,1)",
|
||||
data: [randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor()]
|
||||
}, {
|
||||
label: "My Second dataset",
|
||||
fillColor: "rgba(151,187,205,0.2)",
|
||||
strokeColor: "rgba(151,187,205,1)",
|
||||
pointColor: "rgba(151,187,205,1)",
|
||||
pointStrokeColor: "#fff",
|
||||
pointHighlightFill: "#fff",
|
||||
pointHighlightStroke: "rgba(151,187,205,1)",
|
||||
data: [randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor()]
|
||||
}]
|
||||
};
|
||||
|
||||
window.onload = function() {
|
||||
var ctx1 = document.getElementById("chart1").getContext("2d");
|
||||
window.myLine = new Chart(ctx1).Line(lineChartData, {
|
||||
showScale: false,
|
||||
pointDot : true,
|
||||
responsive: true
|
||||
});
|
||||
|
||||
var ctx2 = document.getElementById("chart2").getContext("2d");
|
||||
window.myLine = new Chart(ctx2).Line(lineChartData, {
|
||||
responsive: true
|
||||
});
|
||||
};
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
54
public/bower_components/Chart.js/samples/line.html
vendored
Executable file
54
public/bower_components/Chart.js/samples/line.html
vendored
Executable file
@@ -0,0 +1,54 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Line Chart</title>
|
||||
<script src="../Chart.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div style="width:30%">
|
||||
<div>
|
||||
<canvas id="canvas" height="450" width="600"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
var randomScalingFactor = function(){ return Math.round(Math.random()*100)};
|
||||
var lineChartData = {
|
||||
labels : ["January","February","March","April","May","June","July"],
|
||||
datasets : [
|
||||
{
|
||||
label: "My First dataset",
|
||||
fillColor : "rgba(220,220,220,0.2)",
|
||||
strokeColor : "rgba(220,220,220,1)",
|
||||
pointColor : "rgba(220,220,220,1)",
|
||||
pointStrokeColor : "#fff",
|
||||
pointHighlightFill : "#fff",
|
||||
pointHighlightStroke : "rgba(220,220,220,1)",
|
||||
data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()]
|
||||
},
|
||||
{
|
||||
label: "My Second dataset",
|
||||
fillColor : "rgba(151,187,205,0.2)",
|
||||
strokeColor : "rgba(151,187,205,1)",
|
||||
pointColor : "rgba(151,187,205,1)",
|
||||
pointStrokeColor : "#fff",
|
||||
pointHighlightFill : "#fff",
|
||||
pointHighlightStroke : "rgba(151,187,205,1)",
|
||||
data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()]
|
||||
}
|
||||
]
|
||||
|
||||
}
|
||||
|
||||
window.onload = function(){
|
||||
var ctx = document.getElementById("canvas").getContext("2d");
|
||||
window.myLine = new Chart(ctx).Line(lineChartData, {
|
||||
responsive: true
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
156
public/bower_components/Chart.js/samples/pie-customTooltips.html
vendored
Executable file
156
public/bower_components/Chart.js/samples/pie-customTooltips.html
vendored
Executable file
@@ -0,0 +1,156 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>Pie Chart with Custom Tooltips</title>
|
||||
<script src="../Chart.js"></script>
|
||||
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
|
||||
|
||||
<style>
|
||||
#canvas-holder {
|
||||
width: 100%;
|
||||
margin-top: 50px;
|
||||
text-align: center;
|
||||
}
|
||||
#chartjs-tooltip {
|
||||
opacity: 1;
|
||||
position: absolute;
|
||||
background: rgba(0, 0, 0, .7);
|
||||
color: white;
|
||||
padding: 3px;
|
||||
border-radius: 3px;
|
||||
-webkit-transition: all .1s ease;
|
||||
transition: all .1s ease;
|
||||
pointer-events: none;
|
||||
-webkit-transform: translate(-50%, 0);
|
||||
transform: translate(-50%, 0);
|
||||
}
|
||||
#chartjs-tooltip.below {
|
||||
-webkit-transform: translate(-50%, 0);
|
||||
transform: translate(-50%, 0);
|
||||
}
|
||||
#chartjs-tooltip.below:before {
|
||||
border: solid;
|
||||
border-color: #111 transparent;
|
||||
border-color: rgba(0, 0, 0, .8) transparent;
|
||||
border-width: 0 8px 8px 8px;
|
||||
bottom: 1em;
|
||||
content: "";
|
||||
display: block;
|
||||
left: 50%;
|
||||
position: absolute;
|
||||
z-index: 99;
|
||||
-webkit-transform: translate(-50%, -100%);
|
||||
transform: translate(-50%, -100%);
|
||||
}
|
||||
#chartjs-tooltip.above {
|
||||
-webkit-transform: translate(-50%, -100%);
|
||||
transform: translate(-50%, -100%);
|
||||
}
|
||||
#chartjs-tooltip.above:before {
|
||||
border: solid;
|
||||
border-color: #111 transparent;
|
||||
border-color: rgba(0, 0, 0, .8) transparent;
|
||||
border-width: 8px 8px 0 8px;
|
||||
bottom: 1em;
|
||||
content: "";
|
||||
display: block;
|
||||
left: 50%;
|
||||
top: 100%;
|
||||
position: absolute;
|
||||
z-index: 99;
|
||||
-webkit-transform: translate(-50%, 0);
|
||||
transform: translate(-50%, 0);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="canvas-holder">
|
||||
<canvas id="chart-area1" width="50" height="50" />
|
||||
</div>
|
||||
<div id="canvas-holder">
|
||||
<canvas id="chart-area2" width="300" height="300" />
|
||||
</div>
|
||||
|
||||
<div id="chartjs-tooltip"></div>
|
||||
|
||||
|
||||
<script>
|
||||
Chart.defaults.global.customTooltips = function(tooltip) {
|
||||
|
||||
// Tooltip Element
|
||||
var tooltipEl = $('#chartjs-tooltip');
|
||||
|
||||
// Hide if no tooltip
|
||||
if (!tooltip) {
|
||||
tooltipEl.css({
|
||||
opacity: 0
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Set caret Position
|
||||
tooltipEl.removeClass('above below');
|
||||
tooltipEl.addClass(tooltip.yAlign);
|
||||
|
||||
// Set Text
|
||||
tooltipEl.html(tooltip.text);
|
||||
|
||||
// Find Y Location on page
|
||||
var top;
|
||||
if (tooltip.yAlign == 'above') {
|
||||
top = tooltip.y - tooltip.caretHeight - tooltip.caretPadding;
|
||||
} else {
|
||||
top = tooltip.y + tooltip.caretHeight + tooltip.caretPadding;
|
||||
}
|
||||
|
||||
// Display, position, and set styles for font
|
||||
tooltipEl.css({
|
||||
opacity: 1,
|
||||
left: tooltip.chart.canvas.offsetLeft + tooltip.x + 'px',
|
||||
top: tooltip.chart.canvas.offsetTop + top + 'px',
|
||||
fontFamily: tooltip.fontFamily,
|
||||
fontSize: tooltip.fontSize,
|
||||
fontStyle: tooltip.fontStyle,
|
||||
});
|
||||
};
|
||||
|
||||
var pieData = [{
|
||||
value: 300,
|
||||
color: "#F7464A",
|
||||
highlight: "#FF5A5E",
|
||||
label: "Red"
|
||||
}, {
|
||||
value: 50,
|
||||
color: "#46BFBD",
|
||||
highlight: "#5AD3D1",
|
||||
label: "Green"
|
||||
}, {
|
||||
value: 100,
|
||||
color: "#FDB45C",
|
||||
highlight: "#FFC870",
|
||||
label: "Yellow"
|
||||
}, {
|
||||
value: 40,
|
||||
color: "#949FB1",
|
||||
highlight: "#A8B3C5",
|
||||
label: "Grey"
|
||||
}, {
|
||||
value: 120,
|
||||
color: "#4D5360",
|
||||
highlight: "#616774",
|
||||
label: "Dark Grey"
|
||||
}];
|
||||
|
||||
window.onload = function() {
|
||||
var ctx1 = document.getElementById("chart-area1").getContext("2d");
|
||||
window.myPie = new Chart(ctx1).Pie(pieData);
|
||||
|
||||
var ctx2 = document.getElementById("chart-area2").getContext("2d");
|
||||
window.myPie = new Chart(ctx2).Pie(pieData);
|
||||
};
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
58
public/bower_components/Chart.js/samples/pie.html
vendored
Executable file
58
public/bower_components/Chart.js/samples/pie.html
vendored
Executable file
@@ -0,0 +1,58 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Pie Chart</title>
|
||||
<script src="../Chart.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="canvas-holder">
|
||||
<canvas id="chart-area" width="300" height="300"/>
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
var pieData = [
|
||||
{
|
||||
value: 300,
|
||||
color:"#F7464A",
|
||||
highlight: "#FF5A5E",
|
||||
label: "Red"
|
||||
},
|
||||
{
|
||||
value: 50,
|
||||
color: "#46BFBD",
|
||||
highlight: "#5AD3D1",
|
||||
label: "Green"
|
||||
},
|
||||
{
|
||||
value: 100,
|
||||
color: "#FDB45C",
|
||||
highlight: "#FFC870",
|
||||
label: "Yellow"
|
||||
},
|
||||
{
|
||||
value: 40,
|
||||
color: "#949FB1",
|
||||
highlight: "#A8B3C5",
|
||||
label: "Grey"
|
||||
},
|
||||
{
|
||||
value: 120,
|
||||
color: "#4D5360",
|
||||
highlight: "#616774",
|
||||
label: "Dark Grey"
|
||||
}
|
||||
|
||||
];
|
||||
|
||||
window.onload = function(){
|
||||
var ctx = document.getElementById("chart-area").getContext("2d");
|
||||
window.myPie = new Chart(ctx).Pie(pieData);
|
||||
};
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
60
public/bower_components/Chart.js/samples/polar-area.html
vendored
Executable file
60
public/bower_components/Chart.js/samples/polar-area.html
vendored
Executable file
@@ -0,0 +1,60 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Polar Area Chart</title>
|
||||
<script src="../Chart.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="canvas-holder" style="width:30%">
|
||||
<canvas id="chart-area" width="300" height="300"/>
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
var polarData = [
|
||||
{
|
||||
value: 300,
|
||||
color:"#F7464A",
|
||||
highlight: "#FF5A5E",
|
||||
label: "Red"
|
||||
},
|
||||
{
|
||||
value: 50,
|
||||
color: "#46BFBD",
|
||||
highlight: "#5AD3D1",
|
||||
label: "Green"
|
||||
},
|
||||
{
|
||||
value: 100,
|
||||
color: "#FDB45C",
|
||||
highlight: "#FFC870",
|
||||
label: "Yellow"
|
||||
},
|
||||
{
|
||||
value: 40,
|
||||
color: "#949FB1",
|
||||
highlight: "#A8B3C5",
|
||||
label: "Grey"
|
||||
},
|
||||
{
|
||||
value: 120,
|
||||
color: "#4D5360",
|
||||
highlight: "#616774",
|
||||
label: "Dark Grey"
|
||||
}
|
||||
|
||||
];
|
||||
|
||||
window.onload = function(){
|
||||
var ctx = document.getElementById("chart-area").getContext("2d");
|
||||
window.myPolarArea = new Chart(ctx).PolarArea(polarData, {
|
||||
responsive:true
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
53
public/bower_components/Chart.js/samples/radar.html
vendored
Executable file
53
public/bower_components/Chart.js/samples/radar.html
vendored
Executable file
@@ -0,0 +1,53 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Radar Chart</title>
|
||||
<script src="../Chart.js"></script>
|
||||
<meta name = "viewport" content = "initial-scale = 1, user-scalable = no">
|
||||
<style>
|
||||
canvas{
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div style="width:30%">
|
||||
<canvas id="canvas" height="450" width="450"></canvas>
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
var radarChartData = {
|
||||
labels: ["Eating", "Drinking", "Sleeping", "Designing", "Coding", "Cycling", "Running"],
|
||||
datasets: [
|
||||
{
|
||||
label: "My First dataset",
|
||||
fillColor: "rgba(220,220,220,0.2)",
|
||||
strokeColor: "rgba(220,220,220,1)",
|
||||
pointColor: "rgba(220,220,220,1)",
|
||||
pointStrokeColor: "#fff",
|
||||
pointHighlightFill: "#fff",
|
||||
pointHighlightStroke: "rgba(220,220,220,1)",
|
||||
data: [65,59,90,81,56,55,40]
|
||||
},
|
||||
{
|
||||
label: "My Second dataset",
|
||||
fillColor: "rgba(151,187,205,0.2)",
|
||||
strokeColor: "rgba(151,187,205,1)",
|
||||
pointColor: "rgba(151,187,205,1)",
|
||||
pointStrokeColor: "#fff",
|
||||
pointHighlightFill: "#fff",
|
||||
pointHighlightStroke: "rgba(151,187,205,1)",
|
||||
data: [28,48,40,19,96,27,100]
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
window.onload = function(){
|
||||
window.myRadar = new Chart(document.getElementById("canvas").getContext("2d")).Radar(radarChartData, {
|
||||
responsive: true
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
302
public/bower_components/Chart.js/src/Chart.Bar.js
vendored
Executable file
302
public/bower_components/Chart.js/src/Chart.Bar.js
vendored
Executable file
@@ -0,0 +1,302 @@
|
||||
(function(){
|
||||
"use strict";
|
||||
|
||||
var root = this,
|
||||
Chart = root.Chart,
|
||||
helpers = Chart.helpers;
|
||||
|
||||
|
||||
var defaultConfig = {
|
||||
//Boolean - Whether the scale should start at zero, or an order of magnitude down from the lowest value
|
||||
scaleBeginAtZero : true,
|
||||
|
||||
//Boolean - Whether grid lines are shown across the chart
|
||||
scaleShowGridLines : true,
|
||||
|
||||
//String - Colour of the grid lines
|
||||
scaleGridLineColor : "rgba(0,0,0,.05)",
|
||||
|
||||
//Number - Width of the grid lines
|
||||
scaleGridLineWidth : 1,
|
||||
|
||||
//Boolean - Whether to show horizontal lines (except X axis)
|
||||
scaleShowHorizontalLines: true,
|
||||
|
||||
//Boolean - Whether to show vertical lines (except Y axis)
|
||||
scaleShowVerticalLines: true,
|
||||
|
||||
//Boolean - If there is a stroke on each bar
|
||||
barShowStroke : true,
|
||||
|
||||
//Number - Pixel width of the bar stroke
|
||||
barStrokeWidth : 2,
|
||||
|
||||
//Number - Spacing between each of the X value sets
|
||||
barValueSpacing : 5,
|
||||
|
||||
//Number - Spacing between data sets within X values
|
||||
barDatasetSpacing : 1,
|
||||
|
||||
//String - A legend template
|
||||
legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<datasets.length; i++){%><li><span style=\"background-color:<%=datasets[i].fillColor%>\"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>"
|
||||
|
||||
};
|
||||
|
||||
|
||||
Chart.Type.extend({
|
||||
name: "Bar",
|
||||
defaults : defaultConfig,
|
||||
initialize: function(data){
|
||||
|
||||
//Expose options as a scope variable here so we can access it in the ScaleClass
|
||||
var options = this.options;
|
||||
|
||||
this.ScaleClass = Chart.Scale.extend({
|
||||
offsetGridLines : true,
|
||||
calculateBarX : function(datasetCount, datasetIndex, barIndex){
|
||||
//Reusable method for calculating the xPosition of a given bar based on datasetIndex & width of the bar
|
||||
var xWidth = this.calculateBaseWidth(),
|
||||
xAbsolute = this.calculateX(barIndex) - (xWidth/2),
|
||||
barWidth = this.calculateBarWidth(datasetCount);
|
||||
|
||||
return xAbsolute + (barWidth * datasetIndex) + (datasetIndex * options.barDatasetSpacing) + barWidth/2;
|
||||
},
|
||||
calculateBaseWidth : function(){
|
||||
return (this.calculateX(1) - this.calculateX(0)) - (2*options.barValueSpacing);
|
||||
},
|
||||
calculateBarWidth : function(datasetCount){
|
||||
//The padding between datasets is to the right of each bar, providing that there are more than 1 dataset
|
||||
var baseWidth = this.calculateBaseWidth() - ((datasetCount - 1) * options.barDatasetSpacing);
|
||||
|
||||
return (baseWidth / datasetCount);
|
||||
}
|
||||
});
|
||||
|
||||
this.datasets = [];
|
||||
|
||||
//Set up tooltip events on the chart
|
||||
if (this.options.showTooltips){
|
||||
helpers.bindEvents(this, this.options.tooltipEvents, function(evt){
|
||||
var activeBars = (evt.type !== 'mouseout') ? this.getBarsAtEvent(evt) : [];
|
||||
|
||||
this.eachBars(function(bar){
|
||||
bar.restore(['fillColor', 'strokeColor']);
|
||||
});
|
||||
helpers.each(activeBars, function(activeBar){
|
||||
activeBar.fillColor = activeBar.highlightFill;
|
||||
activeBar.strokeColor = activeBar.highlightStroke;
|
||||
});
|
||||
this.showTooltip(activeBars);
|
||||
});
|
||||
}
|
||||
|
||||
//Declare the extension of the default point, to cater for the options passed in to the constructor
|
||||
this.BarClass = Chart.Rectangle.extend({
|
||||
strokeWidth : this.options.barStrokeWidth,
|
||||
showStroke : this.options.barShowStroke,
|
||||
ctx : this.chart.ctx
|
||||
});
|
||||
|
||||
//Iterate through each of the datasets, and build this into a property of the chart
|
||||
helpers.each(data.datasets,function(dataset,datasetIndex){
|
||||
|
||||
var datasetObject = {
|
||||
label : dataset.label || null,
|
||||
fillColor : dataset.fillColor,
|
||||
strokeColor : dataset.strokeColor,
|
||||
bars : []
|
||||
};
|
||||
|
||||
this.datasets.push(datasetObject);
|
||||
|
||||
helpers.each(dataset.data,function(dataPoint,index){
|
||||
//Add a new point for each piece of data, passing any required data to draw.
|
||||
datasetObject.bars.push(new this.BarClass({
|
||||
value : dataPoint,
|
||||
label : data.labels[index],
|
||||
datasetLabel: dataset.label,
|
||||
strokeColor : dataset.strokeColor,
|
||||
fillColor : dataset.fillColor,
|
||||
highlightFill : dataset.highlightFill || dataset.fillColor,
|
||||
highlightStroke : dataset.highlightStroke || dataset.strokeColor
|
||||
}));
|
||||
},this);
|
||||
|
||||
},this);
|
||||
|
||||
this.buildScale(data.labels);
|
||||
|
||||
this.BarClass.prototype.base = this.scale.endPoint;
|
||||
|
||||
this.eachBars(function(bar, index, datasetIndex){
|
||||
helpers.extend(bar, {
|
||||
width : this.scale.calculateBarWidth(this.datasets.length),
|
||||
x: this.scale.calculateBarX(this.datasets.length, datasetIndex, index),
|
||||
y: this.scale.endPoint
|
||||
});
|
||||
bar.save();
|
||||
}, this);
|
||||
|
||||
this.render();
|
||||
},
|
||||
update : function(){
|
||||
this.scale.update();
|
||||
// Reset any highlight colours before updating.
|
||||
helpers.each(this.activeElements, function(activeElement){
|
||||
activeElement.restore(['fillColor', 'strokeColor']);
|
||||
});
|
||||
|
||||
this.eachBars(function(bar){
|
||||
bar.save();
|
||||
});
|
||||
this.render();
|
||||
},
|
||||
eachBars : function(callback){
|
||||
helpers.each(this.datasets,function(dataset, datasetIndex){
|
||||
helpers.each(dataset.bars, callback, this, datasetIndex);
|
||||
},this);
|
||||
},
|
||||
getBarsAtEvent : function(e){
|
||||
var barsArray = [],
|
||||
eventPosition = helpers.getRelativePosition(e),
|
||||
datasetIterator = function(dataset){
|
||||
barsArray.push(dataset.bars[barIndex]);
|
||||
},
|
||||
barIndex;
|
||||
|
||||
for (var datasetIndex = 0; datasetIndex < this.datasets.length; datasetIndex++) {
|
||||
for (barIndex = 0; barIndex < this.datasets[datasetIndex].bars.length; barIndex++) {
|
||||
if (this.datasets[datasetIndex].bars[barIndex].inRange(eventPosition.x,eventPosition.y)){
|
||||
helpers.each(this.datasets, datasetIterator);
|
||||
return barsArray;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return barsArray;
|
||||
},
|
||||
buildScale : function(labels){
|
||||
var self = this;
|
||||
|
||||
var dataTotal = function(){
|
||||
var values = [];
|
||||
self.eachBars(function(bar){
|
||||
values.push(bar.value);
|
||||
});
|
||||
return values;
|
||||
};
|
||||
|
||||
var scaleOptions = {
|
||||
templateString : this.options.scaleLabel,
|
||||
height : this.chart.height,
|
||||
width : this.chart.width,
|
||||
ctx : this.chart.ctx,
|
||||
textColor : this.options.scaleFontColor,
|
||||
fontSize : this.options.scaleFontSize,
|
||||
fontStyle : this.options.scaleFontStyle,
|
||||
fontFamily : this.options.scaleFontFamily,
|
||||
valuesCount : labels.length,
|
||||
beginAtZero : this.options.scaleBeginAtZero,
|
||||
integersOnly : this.options.scaleIntegersOnly,
|
||||
calculateYRange: function(currentHeight){
|
||||
var updatedRanges = helpers.calculateScaleRange(
|
||||
dataTotal(),
|
||||
currentHeight,
|
||||
this.fontSize,
|
||||
this.beginAtZero,
|
||||
this.integersOnly
|
||||
);
|
||||
helpers.extend(this, updatedRanges);
|
||||
},
|
||||
xLabels : labels,
|
||||
font : helpers.fontString(this.options.scaleFontSize, this.options.scaleFontStyle, this.options.scaleFontFamily),
|
||||
lineWidth : this.options.scaleLineWidth,
|
||||
lineColor : this.options.scaleLineColor,
|
||||
showHorizontalLines : this.options.scaleShowHorizontalLines,
|
||||
showVerticalLines : this.options.scaleShowVerticalLines,
|
||||
gridLineWidth : (this.options.scaleShowGridLines) ? this.options.scaleGridLineWidth : 0,
|
||||
gridLineColor : (this.options.scaleShowGridLines) ? this.options.scaleGridLineColor : "rgba(0,0,0,0)",
|
||||
padding : (this.options.showScale) ? 0 : (this.options.barShowStroke) ? this.options.barStrokeWidth : 0,
|
||||
showLabels : this.options.scaleShowLabels,
|
||||
display : this.options.showScale
|
||||
};
|
||||
|
||||
if (this.options.scaleOverride){
|
||||
helpers.extend(scaleOptions, {
|
||||
calculateYRange: helpers.noop,
|
||||
steps: this.options.scaleSteps,
|
||||
stepValue: this.options.scaleStepWidth,
|
||||
min: this.options.scaleStartValue,
|
||||
max: this.options.scaleStartValue + (this.options.scaleSteps * this.options.scaleStepWidth)
|
||||
});
|
||||
}
|
||||
|
||||
this.scale = new this.ScaleClass(scaleOptions);
|
||||
},
|
||||
addData : function(valuesArray,label){
|
||||
//Map the values array for each of the datasets
|
||||
helpers.each(valuesArray,function(value,datasetIndex){
|
||||
//Add a new point for each piece of data, passing any required data to draw.
|
||||
this.datasets[datasetIndex].bars.push(new this.BarClass({
|
||||
value : value,
|
||||
label : label,
|
||||
x: this.scale.calculateBarX(this.datasets.length, datasetIndex, this.scale.valuesCount+1),
|
||||
y: this.scale.endPoint,
|
||||
width : this.scale.calculateBarWidth(this.datasets.length),
|
||||
base : this.scale.endPoint,
|
||||
strokeColor : this.datasets[datasetIndex].strokeColor,
|
||||
fillColor : this.datasets[datasetIndex].fillColor
|
||||
}));
|
||||
},this);
|
||||
|
||||
this.scale.addXLabel(label);
|
||||
//Then re-render the chart.
|
||||
this.update();
|
||||
},
|
||||
removeData : function(){
|
||||
this.scale.removeXLabel();
|
||||
//Then re-render the chart.
|
||||
helpers.each(this.datasets,function(dataset){
|
||||
dataset.bars.shift();
|
||||
},this);
|
||||
this.update();
|
||||
},
|
||||
reflow : function(){
|
||||
helpers.extend(this.BarClass.prototype,{
|
||||
y: this.scale.endPoint,
|
||||
base : this.scale.endPoint
|
||||
});
|
||||
var newScaleProps = helpers.extend({
|
||||
height : this.chart.height,
|
||||
width : this.chart.width
|
||||
});
|
||||
this.scale.update(newScaleProps);
|
||||
},
|
||||
draw : function(ease){
|
||||
var easingDecimal = ease || 1;
|
||||
this.clear();
|
||||
|
||||
var ctx = this.chart.ctx;
|
||||
|
||||
this.scale.draw(easingDecimal);
|
||||
|
||||
//Draw all the bars for each dataset
|
||||
helpers.each(this.datasets,function(dataset,datasetIndex){
|
||||
helpers.each(dataset.bars,function(bar,index){
|
||||
if (bar.hasValue()){
|
||||
bar.base = this.scale.endPoint;
|
||||
//Transition then draw
|
||||
bar.transition({
|
||||
x : this.scale.calculateBarX(this.datasets.length, datasetIndex, index),
|
||||
y : this.scale.calculateY(bar.value),
|
||||
width : this.scale.calculateBarWidth(this.datasets.length)
|
||||
}, easingDecimal).draw();
|
||||
}
|
||||
},this);
|
||||
|
||||
},this);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}).call(this);
|
||||
2021
public/bower_components/Chart.js/src/Chart.Core.js
vendored
Executable file
2021
public/bower_components/Chart.js/src/Chart.Core.js
vendored
Executable file
File diff suppressed because it is too large
Load Diff
184
public/bower_components/Chart.js/src/Chart.Doughnut.js
vendored
Executable file
184
public/bower_components/Chart.js/src/Chart.Doughnut.js
vendored
Executable file
@@ -0,0 +1,184 @@
|
||||
(function(){
|
||||
"use strict";
|
||||
|
||||
var root = this,
|
||||
Chart = root.Chart,
|
||||
//Cache a local reference to Chart.helpers
|
||||
helpers = Chart.helpers;
|
||||
|
||||
var defaultConfig = {
|
||||
//Boolean - Whether we should show a stroke on each segment
|
||||
segmentShowStroke : true,
|
||||
|
||||
//String - The colour of each segment stroke
|
||||
segmentStrokeColor : "#fff",
|
||||
|
||||
//Number - The width of each segment stroke
|
||||
segmentStrokeWidth : 2,
|
||||
|
||||
//The percentage of the chart that we cut out of the middle.
|
||||
percentageInnerCutout : 50,
|
||||
|
||||
//Number - Amount of animation steps
|
||||
animationSteps : 100,
|
||||
|
||||
//String - Animation easing effect
|
||||
animationEasing : "easeOutBounce",
|
||||
|
||||
//Boolean - Whether we animate the rotation of the Doughnut
|
||||
animateRotate : true,
|
||||
|
||||
//Boolean - Whether we animate scaling the Doughnut from the centre
|
||||
animateScale : false,
|
||||
|
||||
//String - A legend template
|
||||
legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<segments.length; i++){%><li><span style=\"background-color:<%=segments[i].fillColor%>\"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>"
|
||||
|
||||
};
|
||||
|
||||
|
||||
Chart.Type.extend({
|
||||
//Passing in a name registers this chart in the Chart namespace
|
||||
name: "Doughnut",
|
||||
//Providing a defaults will also register the deafults in the chart namespace
|
||||
defaults : defaultConfig,
|
||||
//Initialize is fired when the chart is initialized - Data is passed in as a parameter
|
||||
//Config is automatically merged by the core of Chart.js, and is available at this.options
|
||||
initialize: function(data){
|
||||
|
||||
//Declare segments as a static property to prevent inheriting across the Chart type prototype
|
||||
this.segments = [];
|
||||
this.outerRadius = (helpers.min([this.chart.width,this.chart.height]) - this.options.segmentStrokeWidth/2)/2;
|
||||
|
||||
this.SegmentArc = Chart.Arc.extend({
|
||||
ctx : this.chart.ctx,
|
||||
x : this.chart.width/2,
|
||||
y : this.chart.height/2
|
||||
});
|
||||
|
||||
//Set up tooltip events on the chart
|
||||
if (this.options.showTooltips){
|
||||
helpers.bindEvents(this, this.options.tooltipEvents, function(evt){
|
||||
var activeSegments = (evt.type !== 'mouseout') ? this.getSegmentsAtEvent(evt) : [];
|
||||
|
||||
helpers.each(this.segments,function(segment){
|
||||
segment.restore(["fillColor"]);
|
||||
});
|
||||
helpers.each(activeSegments,function(activeSegment){
|
||||
activeSegment.fillColor = activeSegment.highlightColor;
|
||||
});
|
||||
this.showTooltip(activeSegments);
|
||||
});
|
||||
}
|
||||
this.calculateTotal(data);
|
||||
|
||||
helpers.each(data,function(datapoint, index){
|
||||
this.addData(datapoint, index, true);
|
||||
},this);
|
||||
|
||||
this.render();
|
||||
},
|
||||
getSegmentsAtEvent : function(e){
|
||||
var segmentsArray = [];
|
||||
|
||||
var location = helpers.getRelativePosition(e);
|
||||
|
||||
helpers.each(this.segments,function(segment){
|
||||
if (segment.inRange(location.x,location.y)) segmentsArray.push(segment);
|
||||
},this);
|
||||
return segmentsArray;
|
||||
},
|
||||
addData : function(segment, atIndex, silent){
|
||||
var index = atIndex || this.segments.length;
|
||||
this.segments.splice(index, 0, new this.SegmentArc({
|
||||
value : segment.value,
|
||||
outerRadius : (this.options.animateScale) ? 0 : this.outerRadius,
|
||||
innerRadius : (this.options.animateScale) ? 0 : (this.outerRadius/100) * this.options.percentageInnerCutout,
|
||||
fillColor : segment.color,
|
||||
highlightColor : segment.highlight || segment.color,
|
||||
showStroke : this.options.segmentShowStroke,
|
||||
strokeWidth : this.options.segmentStrokeWidth,
|
||||
strokeColor : this.options.segmentStrokeColor,
|
||||
startAngle : Math.PI * 1.5,
|
||||
circumference : (this.options.animateRotate) ? 0 : this.calculateCircumference(segment.value),
|
||||
label : segment.label
|
||||
}));
|
||||
if (!silent){
|
||||
this.reflow();
|
||||
this.update();
|
||||
}
|
||||
},
|
||||
calculateCircumference : function(value){
|
||||
return (Math.PI*2)*(Math.abs(value) / this.total);
|
||||
},
|
||||
calculateTotal : function(data){
|
||||
this.total = 0;
|
||||
helpers.each(data,function(segment){
|
||||
this.total += Math.abs(segment.value);
|
||||
},this);
|
||||
},
|
||||
update : function(){
|
||||
this.calculateTotal(this.segments);
|
||||
|
||||
// Reset any highlight colours before updating.
|
||||
helpers.each(this.activeElements, function(activeElement){
|
||||
activeElement.restore(['fillColor']);
|
||||
});
|
||||
|
||||
helpers.each(this.segments,function(segment){
|
||||
segment.save();
|
||||
});
|
||||
this.render();
|
||||
},
|
||||
|
||||
removeData: function(atIndex){
|
||||
var indexToDelete = (helpers.isNumber(atIndex)) ? atIndex : this.segments.length-1;
|
||||
this.segments.splice(indexToDelete, 1);
|
||||
this.reflow();
|
||||
this.update();
|
||||
},
|
||||
|
||||
reflow : function(){
|
||||
helpers.extend(this.SegmentArc.prototype,{
|
||||
x : this.chart.width/2,
|
||||
y : this.chart.height/2
|
||||
});
|
||||
this.outerRadius = (helpers.min([this.chart.width,this.chart.height]) - this.options.segmentStrokeWidth/2)/2;
|
||||
helpers.each(this.segments, function(segment){
|
||||
segment.update({
|
||||
outerRadius : this.outerRadius,
|
||||
innerRadius : (this.outerRadius/100) * this.options.percentageInnerCutout
|
||||
});
|
||||
}, this);
|
||||
},
|
||||
draw : function(easeDecimal){
|
||||
var animDecimal = (easeDecimal) ? easeDecimal : 1;
|
||||
this.clear();
|
||||
helpers.each(this.segments,function(segment,index){
|
||||
segment.transition({
|
||||
circumference : this.calculateCircumference(segment.value),
|
||||
outerRadius : this.outerRadius,
|
||||
innerRadius : (this.outerRadius/100) * this.options.percentageInnerCutout
|
||||
},animDecimal);
|
||||
|
||||
segment.endAngle = segment.startAngle + segment.circumference;
|
||||
|
||||
segment.draw();
|
||||
if (index === 0){
|
||||
segment.startAngle = Math.PI * 1.5;
|
||||
}
|
||||
//Check to see if it's the last segment, if not get the next and update the start angle
|
||||
if (index < this.segments.length-1){
|
||||
this.segments[index+1].startAngle = segment.endAngle;
|
||||
}
|
||||
},this);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
Chart.types.Doughnut.extend({
|
||||
name : "Pie",
|
||||
defaults : helpers.merge(defaultConfig,{percentageInnerCutout : 0})
|
||||
});
|
||||
|
||||
}).call(this);
|
||||
374
public/bower_components/Chart.js/src/Chart.Line.js
vendored
Executable file
374
public/bower_components/Chart.js/src/Chart.Line.js
vendored
Executable file
@@ -0,0 +1,374 @@
|
||||
(function(){
|
||||
"use strict";
|
||||
|
||||
var root = this,
|
||||
Chart = root.Chart,
|
||||
helpers = Chart.helpers;
|
||||
|
||||
var defaultConfig = {
|
||||
|
||||
///Boolean - Whether grid lines are shown across the chart
|
||||
scaleShowGridLines : true,
|
||||
|
||||
//String - Colour of the grid lines
|
||||
scaleGridLineColor : "rgba(0,0,0,.05)",
|
||||
|
||||
//Number - Width of the grid lines
|
||||
scaleGridLineWidth : 1,
|
||||
|
||||
//Boolean - Whether to show horizontal lines (except X axis)
|
||||
scaleShowHorizontalLines: true,
|
||||
|
||||
//Boolean - Whether to show vertical lines (except Y axis)
|
||||
scaleShowVerticalLines: true,
|
||||
|
||||
//Boolean - Whether the line is curved between points
|
||||
bezierCurve : true,
|
||||
|
||||
//Number - Tension of the bezier curve between points
|
||||
bezierCurveTension : 0.4,
|
||||
|
||||
//Boolean - Whether to show a dot for each point
|
||||
pointDot : true,
|
||||
|
||||
//Number - Radius of each point dot in pixels
|
||||
pointDotRadius : 4,
|
||||
|
||||
//Number - Pixel width of point dot stroke
|
||||
pointDotStrokeWidth : 1,
|
||||
|
||||
//Number - amount extra to add to the radius to cater for hit detection outside the drawn point
|
||||
pointHitDetectionRadius : 20,
|
||||
|
||||
//Boolean - Whether to show a stroke for datasets
|
||||
datasetStroke : true,
|
||||
|
||||
//Number - Pixel width of dataset stroke
|
||||
datasetStrokeWidth : 2,
|
||||
|
||||
//Boolean - Whether to fill the dataset with a colour
|
||||
datasetFill : true,
|
||||
|
||||
//String - A legend template
|
||||
legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<datasets.length; i++){%><li><span style=\"background-color:<%=datasets[i].strokeColor%>\"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>"
|
||||
|
||||
};
|
||||
|
||||
|
||||
Chart.Type.extend({
|
||||
name: "Line",
|
||||
defaults : defaultConfig,
|
||||
initialize: function(data){
|
||||
//Declare the extension of the default point, to cater for the options passed in to the constructor
|
||||
this.PointClass = Chart.Point.extend({
|
||||
strokeWidth : this.options.pointDotStrokeWidth,
|
||||
radius : this.options.pointDotRadius,
|
||||
display: this.options.pointDot,
|
||||
hitDetectionRadius : this.options.pointHitDetectionRadius,
|
||||
ctx : this.chart.ctx,
|
||||
inRange : function(mouseX){
|
||||
return (Math.pow(mouseX-this.x, 2) < Math.pow(this.radius + this.hitDetectionRadius,2));
|
||||
}
|
||||
});
|
||||
|
||||
this.datasets = [];
|
||||
|
||||
//Set up tooltip events on the chart
|
||||
if (this.options.showTooltips){
|
||||
helpers.bindEvents(this, this.options.tooltipEvents, function(evt){
|
||||
var activePoints = (evt.type !== 'mouseout') ? this.getPointsAtEvent(evt) : [];
|
||||
this.eachPoints(function(point){
|
||||
point.restore(['fillColor', 'strokeColor']);
|
||||
});
|
||||
helpers.each(activePoints, function(activePoint){
|
||||
activePoint.fillColor = activePoint.highlightFill;
|
||||
activePoint.strokeColor = activePoint.highlightStroke;
|
||||
});
|
||||
this.showTooltip(activePoints);
|
||||
});
|
||||
}
|
||||
|
||||
//Iterate through each of the datasets, and build this into a property of the chart
|
||||
helpers.each(data.datasets,function(dataset){
|
||||
|
||||
var datasetObject = {
|
||||
label : dataset.label || null,
|
||||
fillColor : dataset.fillColor,
|
||||
strokeColor : dataset.strokeColor,
|
||||
pointColor : dataset.pointColor,
|
||||
pointStrokeColor : dataset.pointStrokeColor,
|
||||
points : []
|
||||
};
|
||||
|
||||
this.datasets.push(datasetObject);
|
||||
|
||||
|
||||
helpers.each(dataset.data,function(dataPoint,index){
|
||||
//Add a new point for each piece of data, passing any required data to draw.
|
||||
datasetObject.points.push(new this.PointClass({
|
||||
value : dataPoint,
|
||||
label : data.labels[index],
|
||||
datasetLabel: dataset.label,
|
||||
strokeColor : dataset.pointStrokeColor,
|
||||
fillColor : dataset.pointColor,
|
||||
highlightFill : dataset.pointHighlightFill || dataset.pointColor,
|
||||
highlightStroke : dataset.pointHighlightStroke || dataset.pointStrokeColor
|
||||
}));
|
||||
},this);
|
||||
|
||||
this.buildScale(data.labels);
|
||||
|
||||
|
||||
this.eachPoints(function(point, index){
|
||||
helpers.extend(point, {
|
||||
x: this.scale.calculateX(index),
|
||||
y: this.scale.endPoint
|
||||
});
|
||||
point.save();
|
||||
}, this);
|
||||
|
||||
},this);
|
||||
|
||||
|
||||
this.render();
|
||||
},
|
||||
update : function(){
|
||||
this.scale.update();
|
||||
// Reset any highlight colours before updating.
|
||||
helpers.each(this.activeElements, function(activeElement){
|
||||
activeElement.restore(['fillColor', 'strokeColor']);
|
||||
});
|
||||
this.eachPoints(function(point){
|
||||
point.save();
|
||||
});
|
||||
this.render();
|
||||
},
|
||||
eachPoints : function(callback){
|
||||
helpers.each(this.datasets,function(dataset){
|
||||
helpers.each(dataset.points,callback,this);
|
||||
},this);
|
||||
},
|
||||
getPointsAtEvent : function(e){
|
||||
var pointsArray = [],
|
||||
eventPosition = helpers.getRelativePosition(e);
|
||||
helpers.each(this.datasets,function(dataset){
|
||||
helpers.each(dataset.points,function(point){
|
||||
if (point.inRange(eventPosition.x,eventPosition.y)) pointsArray.push(point);
|
||||
});
|
||||
},this);
|
||||
return pointsArray;
|
||||
},
|
||||
buildScale : function(labels){
|
||||
var self = this;
|
||||
|
||||
var dataTotal = function(){
|
||||
var values = [];
|
||||
self.eachPoints(function(point){
|
||||
values.push(point.value);
|
||||
});
|
||||
|
||||
return values;
|
||||
};
|
||||
|
||||
var scaleOptions = {
|
||||
templateString : this.options.scaleLabel,
|
||||
height : this.chart.height,
|
||||
width : this.chart.width,
|
||||
ctx : this.chart.ctx,
|
||||
textColor : this.options.scaleFontColor,
|
||||
fontSize : this.options.scaleFontSize,
|
||||
fontStyle : this.options.scaleFontStyle,
|
||||
fontFamily : this.options.scaleFontFamily,
|
||||
valuesCount : labels.length,
|
||||
beginAtZero : this.options.scaleBeginAtZero,
|
||||
integersOnly : this.options.scaleIntegersOnly,
|
||||
calculateYRange : function(currentHeight){
|
||||
var updatedRanges = helpers.calculateScaleRange(
|
||||
dataTotal(),
|
||||
currentHeight,
|
||||
this.fontSize,
|
||||
this.beginAtZero,
|
||||
this.integersOnly
|
||||
);
|
||||
helpers.extend(this, updatedRanges);
|
||||
},
|
||||
xLabels : labels,
|
||||
font : helpers.fontString(this.options.scaleFontSize, this.options.scaleFontStyle, this.options.scaleFontFamily),
|
||||
lineWidth : this.options.scaleLineWidth,
|
||||
lineColor : this.options.scaleLineColor,
|
||||
showHorizontalLines : this.options.scaleShowHorizontalLines,
|
||||
showVerticalLines : this.options.scaleShowVerticalLines,
|
||||
gridLineWidth : (this.options.scaleShowGridLines) ? this.options.scaleGridLineWidth : 0,
|
||||
gridLineColor : (this.options.scaleShowGridLines) ? this.options.scaleGridLineColor : "rgba(0,0,0,0)",
|
||||
padding: (this.options.showScale) ? 0 : this.options.pointDotRadius + this.options.pointDotStrokeWidth,
|
||||
showLabels : this.options.scaleShowLabels,
|
||||
display : this.options.showScale
|
||||
};
|
||||
|
||||
if (this.options.scaleOverride){
|
||||
helpers.extend(scaleOptions, {
|
||||
calculateYRange: helpers.noop,
|
||||
steps: this.options.scaleSteps,
|
||||
stepValue: this.options.scaleStepWidth,
|
||||
min: this.options.scaleStartValue,
|
||||
max: this.options.scaleStartValue + (this.options.scaleSteps * this.options.scaleStepWidth)
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
this.scale = new Chart.Scale(scaleOptions);
|
||||
},
|
||||
addData : function(valuesArray,label){
|
||||
//Map the values array for each of the datasets
|
||||
|
||||
helpers.each(valuesArray,function(value,datasetIndex){
|
||||
//Add a new point for each piece of data, passing any required data to draw.
|
||||
this.datasets[datasetIndex].points.push(new this.PointClass({
|
||||
value : value,
|
||||
label : label,
|
||||
x: this.scale.calculateX(this.scale.valuesCount+1),
|
||||
y: this.scale.endPoint,
|
||||
strokeColor : this.datasets[datasetIndex].pointStrokeColor,
|
||||
fillColor : this.datasets[datasetIndex].pointColor
|
||||
}));
|
||||
},this);
|
||||
|
||||
this.scale.addXLabel(label);
|
||||
//Then re-render the chart.
|
||||
this.update();
|
||||
},
|
||||
removeData : function(){
|
||||
this.scale.removeXLabel();
|
||||
//Then re-render the chart.
|
||||
helpers.each(this.datasets,function(dataset){
|
||||
dataset.points.shift();
|
||||
},this);
|
||||
this.update();
|
||||
},
|
||||
reflow : function(){
|
||||
var newScaleProps = helpers.extend({
|
||||
height : this.chart.height,
|
||||
width : this.chart.width
|
||||
});
|
||||
this.scale.update(newScaleProps);
|
||||
},
|
||||
draw : function(ease){
|
||||
var easingDecimal = ease || 1;
|
||||
this.clear();
|
||||
|
||||
var ctx = this.chart.ctx;
|
||||
|
||||
// Some helper methods for getting the next/prev points
|
||||
var hasValue = function(item){
|
||||
return item.value !== null;
|
||||
},
|
||||
nextPoint = function(point, collection, index){
|
||||
return helpers.findNextWhere(collection, hasValue, index) || point;
|
||||
},
|
||||
previousPoint = function(point, collection, index){
|
||||
return helpers.findPreviousWhere(collection, hasValue, index) || point;
|
||||
};
|
||||
|
||||
this.scale.draw(easingDecimal);
|
||||
|
||||
|
||||
helpers.each(this.datasets,function(dataset){
|
||||
var pointsWithValues = helpers.where(dataset.points, hasValue);
|
||||
|
||||
//Transition each point first so that the line and point drawing isn't out of sync
|
||||
//We can use this extra loop to calculate the control points of this dataset also in this loop
|
||||
|
||||
helpers.each(dataset.points, function(point, index){
|
||||
if (point.hasValue()){
|
||||
point.transition({
|
||||
y : this.scale.calculateY(point.value),
|
||||
x : this.scale.calculateX(index)
|
||||
}, easingDecimal);
|
||||
}
|
||||
},this);
|
||||
|
||||
|
||||
// Control points need to be calculated in a seperate loop, because we need to know the current x/y of the point
|
||||
// This would cause issues when there is no animation, because the y of the next point would be 0, so beziers would be skewed
|
||||
if (this.options.bezierCurve){
|
||||
helpers.each(pointsWithValues, function(point, index){
|
||||
var tension = (index > 0 && index < pointsWithValues.length - 1) ? this.options.bezierCurveTension : 0;
|
||||
point.controlPoints = helpers.splineCurve(
|
||||
previousPoint(point, pointsWithValues, index),
|
||||
point,
|
||||
nextPoint(point, pointsWithValues, index),
|
||||
tension
|
||||
);
|
||||
|
||||
// Prevent the bezier going outside of the bounds of the graph
|
||||
|
||||
// Cap puter bezier handles to the upper/lower scale bounds
|
||||
if (point.controlPoints.outer.y > this.scale.endPoint){
|
||||
point.controlPoints.outer.y = this.scale.endPoint;
|
||||
}
|
||||
else if (point.controlPoints.outer.y < this.scale.startPoint){
|
||||
point.controlPoints.outer.y = this.scale.startPoint;
|
||||
}
|
||||
|
||||
// Cap inner bezier handles to the upper/lower scale bounds
|
||||
if (point.controlPoints.inner.y > this.scale.endPoint){
|
||||
point.controlPoints.inner.y = this.scale.endPoint;
|
||||
}
|
||||
else if (point.controlPoints.inner.y < this.scale.startPoint){
|
||||
point.controlPoints.inner.y = this.scale.startPoint;
|
||||
}
|
||||
},this);
|
||||
}
|
||||
|
||||
|
||||
//Draw the line between all the points
|
||||
ctx.lineWidth = this.options.datasetStrokeWidth;
|
||||
ctx.strokeStyle = dataset.strokeColor;
|
||||
ctx.beginPath();
|
||||
|
||||
helpers.each(pointsWithValues, function(point, index){
|
||||
if (index === 0){
|
||||
ctx.moveTo(point.x, point.y);
|
||||
}
|
||||
else{
|
||||
if(this.options.bezierCurve){
|
||||
var previous = previousPoint(point, pointsWithValues, index);
|
||||
|
||||
ctx.bezierCurveTo(
|
||||
previous.controlPoints.outer.x,
|
||||
previous.controlPoints.outer.y,
|
||||
point.controlPoints.inner.x,
|
||||
point.controlPoints.inner.y,
|
||||
point.x,
|
||||
point.y
|
||||
);
|
||||
}
|
||||
else{
|
||||
ctx.lineTo(point.x,point.y);
|
||||
}
|
||||
}
|
||||
}, this);
|
||||
|
||||
ctx.stroke();
|
||||
|
||||
if (this.options.datasetFill && pointsWithValues.length > 0){
|
||||
//Round off the line by going to the base of the chart, back to the start, then fill.
|
||||
ctx.lineTo(pointsWithValues[pointsWithValues.length - 1].x, this.scale.endPoint);
|
||||
ctx.lineTo(pointsWithValues[0].x, this.scale.endPoint);
|
||||
ctx.fillStyle = dataset.fillColor;
|
||||
ctx.closePath();
|
||||
ctx.fill();
|
||||
}
|
||||
|
||||
//Now draw the points over the line
|
||||
//A little inefficient double looping, but better than the line
|
||||
//lagging behind the point positions
|
||||
helpers.each(pointsWithValues,function(point){
|
||||
point.draw();
|
||||
});
|
||||
},this);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}).call(this);
|
||||
250
public/bower_components/Chart.js/src/Chart.PolarArea.js
vendored
Executable file
250
public/bower_components/Chart.js/src/Chart.PolarArea.js
vendored
Executable file
@@ -0,0 +1,250 @@
|
||||
(function(){
|
||||
"use strict";
|
||||
|
||||
var root = this,
|
||||
Chart = root.Chart,
|
||||
//Cache a local reference to Chart.helpers
|
||||
helpers = Chart.helpers;
|
||||
|
||||
var defaultConfig = {
|
||||
//Boolean - Show a backdrop to the scale label
|
||||
scaleShowLabelBackdrop : true,
|
||||
|
||||
//String - The colour of the label backdrop
|
||||
scaleBackdropColor : "rgba(255,255,255,0.75)",
|
||||
|
||||
// Boolean - Whether the scale should begin at zero
|
||||
scaleBeginAtZero : true,
|
||||
|
||||
//Number - The backdrop padding above & below the label in pixels
|
||||
scaleBackdropPaddingY : 2,
|
||||
|
||||
//Number - The backdrop padding to the side of the label in pixels
|
||||
scaleBackdropPaddingX : 2,
|
||||
|
||||
//Boolean - Show line for each value in the scale
|
||||
scaleShowLine : true,
|
||||
|
||||
//Boolean - Stroke a line around each segment in the chart
|
||||
segmentShowStroke : true,
|
||||
|
||||
//String - The colour of the stroke on each segement.
|
||||
segmentStrokeColor : "#fff",
|
||||
|
||||
//Number - The width of the stroke value in pixels
|
||||
segmentStrokeWidth : 2,
|
||||
|
||||
//Number - Amount of animation steps
|
||||
animationSteps : 100,
|
||||
|
||||
//String - Animation easing effect.
|
||||
animationEasing : "easeOutBounce",
|
||||
|
||||
//Boolean - Whether to animate the rotation of the chart
|
||||
animateRotate : true,
|
||||
|
||||
//Boolean - Whether to animate scaling the chart from the centre
|
||||
animateScale : false,
|
||||
|
||||
//String - A legend template
|
||||
legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<segments.length; i++){%><li><span style=\"background-color:<%=segments[i].fillColor%>\"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>"
|
||||
};
|
||||
|
||||
|
||||
Chart.Type.extend({
|
||||
//Passing in a name registers this chart in the Chart namespace
|
||||
name: "PolarArea",
|
||||
//Providing a defaults will also register the deafults in the chart namespace
|
||||
defaults : defaultConfig,
|
||||
//Initialize is fired when the chart is initialized - Data is passed in as a parameter
|
||||
//Config is automatically merged by the core of Chart.js, and is available at this.options
|
||||
initialize: function(data){
|
||||
this.segments = [];
|
||||
//Declare segment class as a chart instance specific class, so it can share props for this instance
|
||||
this.SegmentArc = Chart.Arc.extend({
|
||||
showStroke : this.options.segmentShowStroke,
|
||||
strokeWidth : this.options.segmentStrokeWidth,
|
||||
strokeColor : this.options.segmentStrokeColor,
|
||||
ctx : this.chart.ctx,
|
||||
innerRadius : 0,
|
||||
x : this.chart.width/2,
|
||||
y : this.chart.height/2
|
||||
});
|
||||
this.scale = new Chart.RadialScale({
|
||||
display: this.options.showScale,
|
||||
fontStyle: this.options.scaleFontStyle,
|
||||
fontSize: this.options.scaleFontSize,
|
||||
fontFamily: this.options.scaleFontFamily,
|
||||
fontColor: this.options.scaleFontColor,
|
||||
showLabels: this.options.scaleShowLabels,
|
||||
showLabelBackdrop: this.options.scaleShowLabelBackdrop,
|
||||
backdropColor: this.options.scaleBackdropColor,
|
||||
backdropPaddingY : this.options.scaleBackdropPaddingY,
|
||||
backdropPaddingX: this.options.scaleBackdropPaddingX,
|
||||
lineWidth: (this.options.scaleShowLine) ? this.options.scaleLineWidth : 0,
|
||||
lineColor: this.options.scaleLineColor,
|
||||
lineArc: true,
|
||||
width: this.chart.width,
|
||||
height: this.chart.height,
|
||||
xCenter: this.chart.width/2,
|
||||
yCenter: this.chart.height/2,
|
||||
ctx : this.chart.ctx,
|
||||
templateString: this.options.scaleLabel,
|
||||
valuesCount: data.length
|
||||
});
|
||||
|
||||
this.updateScaleRange(data);
|
||||
|
||||
this.scale.update();
|
||||
|
||||
helpers.each(data,function(segment,index){
|
||||
this.addData(segment,index,true);
|
||||
},this);
|
||||
|
||||
//Set up tooltip events on the chart
|
||||
if (this.options.showTooltips){
|
||||
helpers.bindEvents(this, this.options.tooltipEvents, function(evt){
|
||||
var activeSegments = (evt.type !== 'mouseout') ? this.getSegmentsAtEvent(evt) : [];
|
||||
helpers.each(this.segments,function(segment){
|
||||
segment.restore(["fillColor"]);
|
||||
});
|
||||
helpers.each(activeSegments,function(activeSegment){
|
||||
activeSegment.fillColor = activeSegment.highlightColor;
|
||||
});
|
||||
this.showTooltip(activeSegments);
|
||||
});
|
||||
}
|
||||
|
||||
this.render();
|
||||
},
|
||||
getSegmentsAtEvent : function(e){
|
||||
var segmentsArray = [];
|
||||
|
||||
var location = helpers.getRelativePosition(e);
|
||||
|
||||
helpers.each(this.segments,function(segment){
|
||||
if (segment.inRange(location.x,location.y)) segmentsArray.push(segment);
|
||||
},this);
|
||||
return segmentsArray;
|
||||
},
|
||||
addData : function(segment, atIndex, silent){
|
||||
var index = atIndex || this.segments.length;
|
||||
|
||||
this.segments.splice(index, 0, new this.SegmentArc({
|
||||
fillColor: segment.color,
|
||||
highlightColor: segment.highlight || segment.color,
|
||||
label: segment.label,
|
||||
value: segment.value,
|
||||
outerRadius: (this.options.animateScale) ? 0 : this.scale.calculateCenterOffset(segment.value),
|
||||
circumference: (this.options.animateRotate) ? 0 : this.scale.getCircumference(),
|
||||
startAngle: Math.PI * 1.5
|
||||
}));
|
||||
if (!silent){
|
||||
this.reflow();
|
||||
this.update();
|
||||
}
|
||||
},
|
||||
removeData: function(atIndex){
|
||||
var indexToDelete = (helpers.isNumber(atIndex)) ? atIndex : this.segments.length-1;
|
||||
this.segments.splice(indexToDelete, 1);
|
||||
this.reflow();
|
||||
this.update();
|
||||
},
|
||||
calculateTotal: function(data){
|
||||
this.total = 0;
|
||||
helpers.each(data,function(segment){
|
||||
this.total += segment.value;
|
||||
},this);
|
||||
this.scale.valuesCount = this.segments.length;
|
||||
},
|
||||
updateScaleRange: function(datapoints){
|
||||
var valuesArray = [];
|
||||
helpers.each(datapoints,function(segment){
|
||||
valuesArray.push(segment.value);
|
||||
});
|
||||
|
||||
var scaleSizes = (this.options.scaleOverride) ?
|
||||
{
|
||||
steps: this.options.scaleSteps,
|
||||
stepValue: this.options.scaleStepWidth,
|
||||
min: this.options.scaleStartValue,
|
||||
max: this.options.scaleStartValue + (this.options.scaleSteps * this.options.scaleStepWidth)
|
||||
} :
|
||||
helpers.calculateScaleRange(
|
||||
valuesArray,
|
||||
helpers.min([this.chart.width, this.chart.height])/2,
|
||||
this.options.scaleFontSize,
|
||||
this.options.scaleBeginAtZero,
|
||||
this.options.scaleIntegersOnly
|
||||
);
|
||||
|
||||
helpers.extend(
|
||||
this.scale,
|
||||
scaleSizes,
|
||||
{
|
||||
size: helpers.min([this.chart.width, this.chart.height]),
|
||||
xCenter: this.chart.width/2,
|
||||
yCenter: this.chart.height/2
|
||||
}
|
||||
);
|
||||
|
||||
},
|
||||
update : function(){
|
||||
this.calculateTotal(this.segments);
|
||||
|
||||
helpers.each(this.segments,function(segment){
|
||||
segment.save();
|
||||
});
|
||||
|
||||
this.reflow();
|
||||
this.render();
|
||||
},
|
||||
reflow : function(){
|
||||
helpers.extend(this.SegmentArc.prototype,{
|
||||
x : this.chart.width/2,
|
||||
y : this.chart.height/2
|
||||
});
|
||||
this.updateScaleRange(this.segments);
|
||||
this.scale.update();
|
||||
|
||||
helpers.extend(this.scale,{
|
||||
xCenter: this.chart.width/2,
|
||||
yCenter: this.chart.height/2
|
||||
});
|
||||
|
||||
helpers.each(this.segments, function(segment){
|
||||
segment.update({
|
||||
outerRadius : this.scale.calculateCenterOffset(segment.value)
|
||||
});
|
||||
}, this);
|
||||
|
||||
},
|
||||
draw : function(ease){
|
||||
var easingDecimal = ease || 1;
|
||||
//Clear & draw the canvas
|
||||
this.clear();
|
||||
helpers.each(this.segments,function(segment, index){
|
||||
segment.transition({
|
||||
circumference : this.scale.getCircumference(),
|
||||
outerRadius : this.scale.calculateCenterOffset(segment.value)
|
||||
},easingDecimal);
|
||||
|
||||
segment.endAngle = segment.startAngle + segment.circumference;
|
||||
|
||||
// If we've removed the first segment we need to set the first one to
|
||||
// start at the top.
|
||||
if (index === 0){
|
||||
segment.startAngle = Math.PI * 1.5;
|
||||
}
|
||||
|
||||
//Check to see if it's the last segment, if not get the next and update the start angle
|
||||
if (index < this.segments.length - 1){
|
||||
this.segments[index+1].startAngle = segment.endAngle;
|
||||
}
|
||||
segment.draw();
|
||||
}, this);
|
||||
this.scale.draw();
|
||||
}
|
||||
});
|
||||
|
||||
}).call(this);
|
||||
343
public/bower_components/Chart.js/src/Chart.Radar.js
vendored
Executable file
343
public/bower_components/Chart.js/src/Chart.Radar.js
vendored
Executable file
@@ -0,0 +1,343 @@
|
||||
(function(){
|
||||
"use strict";
|
||||
|
||||
var root = this,
|
||||
Chart = root.Chart,
|
||||
helpers = Chart.helpers;
|
||||
|
||||
|
||||
|
||||
Chart.Type.extend({
|
||||
name: "Radar",
|
||||
defaults:{
|
||||
//Boolean - Whether to show lines for each scale point
|
||||
scaleShowLine : true,
|
||||
|
||||
//Boolean - Whether we show the angle lines out of the radar
|
||||
angleShowLineOut : true,
|
||||
|
||||
//Boolean - Whether to show labels on the scale
|
||||
scaleShowLabels : false,
|
||||
|
||||
// Boolean - Whether the scale should begin at zero
|
||||
scaleBeginAtZero : true,
|
||||
|
||||
//String - Colour of the angle line
|
||||
angleLineColor : "rgba(0,0,0,.1)",
|
||||
|
||||
//Number - Pixel width of the angle line
|
||||
angleLineWidth : 1,
|
||||
|
||||
//String - Point label font declaration
|
||||
pointLabelFontFamily : "'Arial'",
|
||||
|
||||
//String - Point label font weight
|
||||
pointLabelFontStyle : "normal",
|
||||
|
||||
//Number - Point label font size in pixels
|
||||
pointLabelFontSize : 10,
|
||||
|
||||
//String - Point label font colour
|
||||
pointLabelFontColor : "#666",
|
||||
|
||||
//Boolean - Whether to show a dot for each point
|
||||
pointDot : true,
|
||||
|
||||
//Number - Radius of each point dot in pixels
|
||||
pointDotRadius : 3,
|
||||
|
||||
//Number - Pixel width of point dot stroke
|
||||
pointDotStrokeWidth : 1,
|
||||
|
||||
//Number - amount extra to add to the radius to cater for hit detection outside the drawn point
|
||||
pointHitDetectionRadius : 20,
|
||||
|
||||
//Boolean - Whether to show a stroke for datasets
|
||||
datasetStroke : true,
|
||||
|
||||
//Number - Pixel width of dataset stroke
|
||||
datasetStrokeWidth : 2,
|
||||
|
||||
//Boolean - Whether to fill the dataset with a colour
|
||||
datasetFill : true,
|
||||
|
||||
//String - A legend template
|
||||
legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<datasets.length; i++){%><li><span style=\"background-color:<%=datasets[i].strokeColor%>\"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>"
|
||||
|
||||
},
|
||||
|
||||
initialize: function(data){
|
||||
this.PointClass = Chart.Point.extend({
|
||||
strokeWidth : this.options.pointDotStrokeWidth,
|
||||
radius : this.options.pointDotRadius,
|
||||
display: this.options.pointDot,
|
||||
hitDetectionRadius : this.options.pointHitDetectionRadius,
|
||||
ctx : this.chart.ctx
|
||||
});
|
||||
|
||||
this.datasets = [];
|
||||
|
||||
this.buildScale(data);
|
||||
|
||||
//Set up tooltip events on the chart
|
||||
if (this.options.showTooltips){
|
||||
helpers.bindEvents(this, this.options.tooltipEvents, function(evt){
|
||||
var activePointsCollection = (evt.type !== 'mouseout') ? this.getPointsAtEvent(evt) : [];
|
||||
|
||||
this.eachPoints(function(point){
|
||||
point.restore(['fillColor', 'strokeColor']);
|
||||
});
|
||||
helpers.each(activePointsCollection, function(activePoint){
|
||||
activePoint.fillColor = activePoint.highlightFill;
|
||||
activePoint.strokeColor = activePoint.highlightStroke;
|
||||
});
|
||||
|
||||
this.showTooltip(activePointsCollection);
|
||||
});
|
||||
}
|
||||
|
||||
//Iterate through each of the datasets, and build this into a property of the chart
|
||||
helpers.each(data.datasets,function(dataset){
|
||||
|
||||
var datasetObject = {
|
||||
label: dataset.label || null,
|
||||
fillColor : dataset.fillColor,
|
||||
strokeColor : dataset.strokeColor,
|
||||
pointColor : dataset.pointColor,
|
||||
pointStrokeColor : dataset.pointStrokeColor,
|
||||
points : []
|
||||
};
|
||||
|
||||
this.datasets.push(datasetObject);
|
||||
|
||||
helpers.each(dataset.data,function(dataPoint,index){
|
||||
//Add a new point for each piece of data, passing any required data to draw.
|
||||
var pointPosition;
|
||||
if (!this.scale.animation){
|
||||
pointPosition = this.scale.getPointPosition(index, this.scale.calculateCenterOffset(dataPoint));
|
||||
}
|
||||
datasetObject.points.push(new this.PointClass({
|
||||
value : dataPoint,
|
||||
label : data.labels[index],
|
||||
datasetLabel: dataset.label,
|
||||
x: (this.options.animation) ? this.scale.xCenter : pointPosition.x,
|
||||
y: (this.options.animation) ? this.scale.yCenter : pointPosition.y,
|
||||
strokeColor : dataset.pointStrokeColor,
|
||||
fillColor : dataset.pointColor,
|
||||
highlightFill : dataset.pointHighlightFill || dataset.pointColor,
|
||||
highlightStroke : dataset.pointHighlightStroke || dataset.pointStrokeColor
|
||||
}));
|
||||
},this);
|
||||
|
||||
},this);
|
||||
|
||||
this.render();
|
||||
},
|
||||
eachPoints : function(callback){
|
||||
helpers.each(this.datasets,function(dataset){
|
||||
helpers.each(dataset.points,callback,this);
|
||||
},this);
|
||||
},
|
||||
|
||||
getPointsAtEvent : function(evt){
|
||||
var mousePosition = helpers.getRelativePosition(evt),
|
||||
fromCenter = helpers.getAngleFromPoint({
|
||||
x: this.scale.xCenter,
|
||||
y: this.scale.yCenter
|
||||
}, mousePosition);
|
||||
|
||||
var anglePerIndex = (Math.PI * 2) /this.scale.valuesCount,
|
||||
pointIndex = Math.round((fromCenter.angle - Math.PI * 1.5) / anglePerIndex),
|
||||
activePointsCollection = [];
|
||||
|
||||
// If we're at the top, make the pointIndex 0 to get the first of the array.
|
||||
if (pointIndex >= this.scale.valuesCount || pointIndex < 0){
|
||||
pointIndex = 0;
|
||||
}
|
||||
|
||||
if (fromCenter.distance <= this.scale.drawingArea){
|
||||
helpers.each(this.datasets, function(dataset){
|
||||
activePointsCollection.push(dataset.points[pointIndex]);
|
||||
});
|
||||
}
|
||||
|
||||
return activePointsCollection;
|
||||
},
|
||||
|
||||
buildScale : function(data){
|
||||
this.scale = new Chart.RadialScale({
|
||||
display: this.options.showScale,
|
||||
fontStyle: this.options.scaleFontStyle,
|
||||
fontSize: this.options.scaleFontSize,
|
||||
fontFamily: this.options.scaleFontFamily,
|
||||
fontColor: this.options.scaleFontColor,
|
||||
showLabels: this.options.scaleShowLabels,
|
||||
showLabelBackdrop: this.options.scaleShowLabelBackdrop,
|
||||
backdropColor: this.options.scaleBackdropColor,
|
||||
backdropPaddingY : this.options.scaleBackdropPaddingY,
|
||||
backdropPaddingX: this.options.scaleBackdropPaddingX,
|
||||
lineWidth: (this.options.scaleShowLine) ? this.options.scaleLineWidth : 0,
|
||||
lineColor: this.options.scaleLineColor,
|
||||
angleLineColor : this.options.angleLineColor,
|
||||
angleLineWidth : (this.options.angleShowLineOut) ? this.options.angleLineWidth : 0,
|
||||
// Point labels at the edge of each line
|
||||
pointLabelFontColor : this.options.pointLabelFontColor,
|
||||
pointLabelFontSize : this.options.pointLabelFontSize,
|
||||
pointLabelFontFamily : this.options.pointLabelFontFamily,
|
||||
pointLabelFontStyle : this.options.pointLabelFontStyle,
|
||||
height : this.chart.height,
|
||||
width: this.chart.width,
|
||||
xCenter: this.chart.width/2,
|
||||
yCenter: this.chart.height/2,
|
||||
ctx : this.chart.ctx,
|
||||
templateString: this.options.scaleLabel,
|
||||
labels: data.labels,
|
||||
valuesCount: data.datasets[0].data.length
|
||||
});
|
||||
|
||||
this.scale.setScaleSize();
|
||||
this.updateScaleRange(data.datasets);
|
||||
this.scale.buildYLabels();
|
||||
},
|
||||
updateScaleRange: function(datasets){
|
||||
var valuesArray = (function(){
|
||||
var totalDataArray = [];
|
||||
helpers.each(datasets,function(dataset){
|
||||
if (dataset.data){
|
||||
totalDataArray = totalDataArray.concat(dataset.data);
|
||||
}
|
||||
else {
|
||||
helpers.each(dataset.points, function(point){
|
||||
totalDataArray.push(point.value);
|
||||
});
|
||||
}
|
||||
});
|
||||
return totalDataArray;
|
||||
})();
|
||||
|
||||
|
||||
var scaleSizes = (this.options.scaleOverride) ?
|
||||
{
|
||||
steps: this.options.scaleSteps,
|
||||
stepValue: this.options.scaleStepWidth,
|
||||
min: this.options.scaleStartValue,
|
||||
max: this.options.scaleStartValue + (this.options.scaleSteps * this.options.scaleStepWidth)
|
||||
} :
|
||||
helpers.calculateScaleRange(
|
||||
valuesArray,
|
||||
helpers.min([this.chart.width, this.chart.height])/2,
|
||||
this.options.scaleFontSize,
|
||||
this.options.scaleBeginAtZero,
|
||||
this.options.scaleIntegersOnly
|
||||
);
|
||||
|
||||
helpers.extend(
|
||||
this.scale,
|
||||
scaleSizes
|
||||
);
|
||||
|
||||
},
|
||||
addData : function(valuesArray,label){
|
||||
//Map the values array for each of the datasets
|
||||
this.scale.valuesCount++;
|
||||
helpers.each(valuesArray,function(value,datasetIndex){
|
||||
var pointPosition = this.scale.getPointPosition(this.scale.valuesCount, this.scale.calculateCenterOffset(value));
|
||||
this.datasets[datasetIndex].points.push(new this.PointClass({
|
||||
value : value,
|
||||
label : label,
|
||||
x: pointPosition.x,
|
||||
y: pointPosition.y,
|
||||
strokeColor : this.datasets[datasetIndex].pointStrokeColor,
|
||||
fillColor : this.datasets[datasetIndex].pointColor
|
||||
}));
|
||||
},this);
|
||||
|
||||
this.scale.labels.push(label);
|
||||
|
||||
this.reflow();
|
||||
|
||||
this.update();
|
||||
},
|
||||
removeData : function(){
|
||||
this.scale.valuesCount--;
|
||||
this.scale.labels.shift();
|
||||
helpers.each(this.datasets,function(dataset){
|
||||
dataset.points.shift();
|
||||
},this);
|
||||
this.reflow();
|
||||
this.update();
|
||||
},
|
||||
update : function(){
|
||||
this.eachPoints(function(point){
|
||||
point.save();
|
||||
});
|
||||
this.reflow();
|
||||
this.render();
|
||||
},
|
||||
reflow: function(){
|
||||
helpers.extend(this.scale, {
|
||||
width : this.chart.width,
|
||||
height: this.chart.height,
|
||||
size : helpers.min([this.chart.width, this.chart.height]),
|
||||
xCenter: this.chart.width/2,
|
||||
yCenter: this.chart.height/2
|
||||
});
|
||||
this.updateScaleRange(this.datasets);
|
||||
this.scale.setScaleSize();
|
||||
this.scale.buildYLabels();
|
||||
},
|
||||
draw : function(ease){
|
||||
var easeDecimal = ease || 1,
|
||||
ctx = this.chart.ctx;
|
||||
this.clear();
|
||||
this.scale.draw();
|
||||
|
||||
helpers.each(this.datasets,function(dataset){
|
||||
|
||||
//Transition each point first so that the line and point drawing isn't out of sync
|
||||
helpers.each(dataset.points,function(point,index){
|
||||
if (point.hasValue()){
|
||||
point.transition(this.scale.getPointPosition(index, this.scale.calculateCenterOffset(point.value)), easeDecimal);
|
||||
}
|
||||
},this);
|
||||
|
||||
|
||||
|
||||
//Draw the line between all the points
|
||||
ctx.lineWidth = this.options.datasetStrokeWidth;
|
||||
ctx.strokeStyle = dataset.strokeColor;
|
||||
ctx.beginPath();
|
||||
helpers.each(dataset.points,function(point,index){
|
||||
if (index === 0){
|
||||
ctx.moveTo(point.x,point.y);
|
||||
}
|
||||
else{
|
||||
ctx.lineTo(point.x,point.y);
|
||||
}
|
||||
},this);
|
||||
ctx.closePath();
|
||||
ctx.stroke();
|
||||
|
||||
ctx.fillStyle = dataset.fillColor;
|
||||
ctx.fill();
|
||||
|
||||
//Now draw the points over the line
|
||||
//A little inefficient double looping, but better than the line
|
||||
//lagging behind the point positions
|
||||
helpers.each(dataset.points,function(point){
|
||||
if (point.hasValue()){
|
||||
point.draw();
|
||||
}
|
||||
});
|
||||
|
||||
},this);
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}).call(this);
|
||||
45
public/bower_components/PACE/.bower.json
vendored
Executable file
45
public/bower_components/PACE/.bower.json
vendored
Executable file
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"name": "PACE",
|
||||
"main": "pace.js",
|
||||
"version": "1.0.2",
|
||||
"homepage": "http://github.hubspot.com/pace/docs/welcome",
|
||||
"authors": [
|
||||
"Zack Bloom <zackbloom@gmail.com>",
|
||||
"Adam Schwartz <adam.flynn.schwartz@gmail.com>"
|
||||
],
|
||||
"description": "Automatic page load progress bar",
|
||||
"keywords": [
|
||||
"loading",
|
||||
"load",
|
||||
"pageload",
|
||||
"progress",
|
||||
"activity",
|
||||
"ajax",
|
||||
"spinner",
|
||||
"progress",
|
||||
"bar",
|
||||
"automatic",
|
||||
"client-side"
|
||||
],
|
||||
"license": "MIT",
|
||||
"ignore": [
|
||||
".*",
|
||||
"Gruntfile.coffee",
|
||||
"bower_components",
|
||||
"docs",
|
||||
"node_modules",
|
||||
"package.json",
|
||||
"templates",
|
||||
"tests"
|
||||
],
|
||||
"_release": "1.0.2",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "v1.0.2",
|
||||
"commit": "c6846cbf6b928e9903b569269fa9fbf32f2554f4"
|
||||
},
|
||||
"_source": "https://github.com/HubSpot/pace.git",
|
||||
"_target": "~1.0.2",
|
||||
"_originalSource": "pace",
|
||||
"_direct": true
|
||||
}
|
||||
8
public/bower_components/PACE/LICENSE
vendored
Executable file
8
public/bower_components/PACE/LICENSE
vendored
Executable file
@@ -0,0 +1,8 @@
|
||||
Copyright (c) 2013 HubSpot, Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
27
public/bower_components/PACE/README.md
vendored
Executable file
27
public/bower_components/PACE/README.md
vendored
Executable file
@@ -0,0 +1,27 @@
|
||||
pace
|
||||
====
|
||||
|
||||
<a href="https://eager.io/app/kYKTiQjoVjQk/install?source=button">
|
||||
<img src="https://install.eager.io/install-button.png" border="0" width="126">
|
||||
</a>
|
||||
|
||||
An automatic web page progress bar.
|
||||
|
||||
Include [pace.js](https://raw.github.com/HubSpot/pace/v1.0.2/pace.min.js) and a [theme](http://github.hubspot.com/pace/docs/welcome/) of your choice to your page and you are done!
|
||||
|
||||
Pace will automatically monitor your Ajax requests, event loop lag, document ready state and elements on your page to decide on the progress.
|
||||
|
||||
If you use AMD or Browserify, require pace.js and call `pace.start()` as early in the loading process as is possible.
|
||||
|
||||
### [Demo](http://github.hubspot.com/pace/docs/welcome/)
|
||||
|
||||
### [Documentation](http://github.hubspot.com/pace/)
|
||||
|
||||
### Example
|
||||
|
||||
```html
|
||||
<head>
|
||||
<script src="/pace/pace.js"></script>
|
||||
<link href="/pace/themes/pace-theme-barber-shop.css" rel="stylesheet" />
|
||||
</head>
|
||||
```
|
||||
35
public/bower_components/PACE/bower.json
vendored
Executable file
35
public/bower_components/PACE/bower.json
vendored
Executable file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"name": "PACE",
|
||||
"main": "pace.js",
|
||||
"version": "1.0.2",
|
||||
"homepage": "http://github.hubspot.com/pace/docs/welcome",
|
||||
"authors": [
|
||||
"Zack Bloom <zackbloom@gmail.com>",
|
||||
"Adam Schwartz <adam.flynn.schwartz@gmail.com>"
|
||||
],
|
||||
"description": "Automatic page load progress bar",
|
||||
"keywords": [
|
||||
"loading",
|
||||
"load",
|
||||
"pageload",
|
||||
"progress",
|
||||
"activity",
|
||||
"ajax",
|
||||
"spinner",
|
||||
"progress",
|
||||
"bar",
|
||||
"automatic",
|
||||
"client-side"
|
||||
],
|
||||
"license": "MIT",
|
||||
"ignore": [
|
||||
".*",
|
||||
"Gruntfile.coffee",
|
||||
"bower_components",
|
||||
"docs",
|
||||
"node_modules",
|
||||
"package.json",
|
||||
"templates",
|
||||
"tests"
|
||||
]
|
||||
}
|
||||
86
public/bower_components/PACE/install.json
vendored
Executable file
86
public/bower_components/PACE/install.json
vendored
Executable file
@@ -0,0 +1,86 @@
|
||||
{
|
||||
"resources": {
|
||||
"head": [
|
||||
{
|
||||
"type": "script",
|
||||
"src": "./pace.js",
|
||||
"moduleType": "global",
|
||||
"exports": ["Pace"]
|
||||
},
|
||||
{
|
||||
"type": "style",
|
||||
"src": "./themes/{{ options.color }}/pace-theme-{{ options.theme }}.css"
|
||||
}
|
||||
]
|
||||
},
|
||||
"options": {
|
||||
"properties": {
|
||||
"color": {
|
||||
"title": "Color",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"black",
|
||||
"white",
|
||||
"silver",
|
||||
"red",
|
||||
"orange",
|
||||
"yellow",
|
||||
"green",
|
||||
"blue",
|
||||
"pink",
|
||||
"purple"
|
||||
],
|
||||
"enumNames": {
|
||||
"black": "Black",
|
||||
"white": "White",
|
||||
"silver": "Silver",
|
||||
"red": "Red",
|
||||
"orange": "Orange",
|
||||
"yellow": "Yellow",
|
||||
"green": "Green",
|
||||
"blue": "Blue",
|
||||
"pink": "Pink",
|
||||
"purple": "Purple"
|
||||
},
|
||||
"default": "blue"
|
||||
},
|
||||
"theme": {
|
||||
"title": "Theme",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"barber-shop",
|
||||
"big-counter",
|
||||
"bounce",
|
||||
"center-atom",
|
||||
"center-circle",
|
||||
"center-radar",
|
||||
"center-simple",
|
||||
"corner-indicator",
|
||||
"fill-left",
|
||||
"flash",
|
||||
"flat-top",
|
||||
"loading-bar",
|
||||
"mac-osx",
|
||||
"minimal"
|
||||
],
|
||||
"enumNames": {
|
||||
"barber-shop": "Barber Shop",
|
||||
"big-counter": "Big Counter",
|
||||
"bounce": "Bounce",
|
||||
"center-atom": "Center Atom",
|
||||
"center-circle": "Center Circle",
|
||||
"center-radar": "Center Radar",
|
||||
"center-simple": "Center Simple",
|
||||
"corner-indicator": "Corner Indicator",
|
||||
"fill-left": "Fill Left",
|
||||
"flash": "Flash",
|
||||
"flat-top": "Flat Top",
|
||||
"loading-bar": "Loading Bar",
|
||||
"mac-osx": "Mac OS X",
|
||||
"minimal": "Minimal"
|
||||
},
|
||||
"default": "barber-shop"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
755
public/bower_components/PACE/pace.coffee
vendored
Executable file
755
public/bower_components/PACE/pace.coffee
vendored
Executable file
@@ -0,0 +1,755 @@
|
||||
defaultOptions =
|
||||
# How long should it take for the bar to animate to a new
|
||||
# point after receiving it
|
||||
catchupTime: 100
|
||||
|
||||
# How quickly should the bar be moving before it has any progress
|
||||
# info from a new source in %/ms
|
||||
initialRate: .03
|
||||
|
||||
# What is the minimum amount of time the bar should be on the
|
||||
# screen. Irrespective of this number, the bar will always be on screen for
|
||||
# 33 * (100 / maxProgressPerFrame) + ghostTime ms.
|
||||
minTime: 250
|
||||
|
||||
# What is the minimum amount of time the bar should sit after the last
|
||||
# update before disappearing
|
||||
ghostTime: 100
|
||||
|
||||
# Its easy for a bunch of the bar to be eaten in the first few frames
|
||||
# before we know how much there is to load. This limits how much of
|
||||
# the bar can be used per frame
|
||||
maxProgressPerFrame: 20
|
||||
|
||||
# This tweaks the animation easing
|
||||
easeFactor: 1.25
|
||||
|
||||
# Should pace automatically start when the page is loaded, or should it wait for `start` to
|
||||
# be called? Always false if pace is loaded with AMD or CommonJS.
|
||||
startOnPageLoad: true
|
||||
|
||||
# Should we restart the browser when pushState or replaceState is called? (Generally
|
||||
# means ajax navigation has occured)
|
||||
restartOnPushState: true
|
||||
|
||||
# Should we show the progress bar for every ajax request (not just regular or ajax-y page
|
||||
# navigation)? Set to false to disable.
|
||||
#
|
||||
# If so, how many ms does the request have to be running for before we show the progress?
|
||||
restartOnRequestAfter: 500
|
||||
|
||||
# What element should the pace element be appended to on the page?
|
||||
target: 'body'
|
||||
|
||||
elements:
|
||||
# How frequently in ms should we check for the elements being tested for
|
||||
# using the element monitor?
|
||||
checkInterval: 100
|
||||
|
||||
# What elements should we wait for before deciding the page is fully loaded (not required)
|
||||
selectors: ['body']
|
||||
|
||||
eventLag:
|
||||
# When we first start measuring event lag, not much is going on in the browser yet, so it's
|
||||
# not uncommon for the numbers to be abnormally low for the first few samples. This configures
|
||||
# how many samples we need before we consider a low number to mean completion.
|
||||
minSamples: 10
|
||||
|
||||
# How many samples should we average to decide what the current lag is?
|
||||
sampleCount: 3
|
||||
|
||||
# Above how many ms of lag is the CPU considered busy?
|
||||
lagThreshold: 3
|
||||
|
||||
ajax:
|
||||
# Which HTTP methods should we track?
|
||||
trackMethods: ['GET']
|
||||
|
||||
# Should we track web socket connections?
|
||||
trackWebSockets: true
|
||||
|
||||
# A list of regular expressions or substrings of URLS we should ignore (for both tracking and restarting)
|
||||
ignoreURLs: []
|
||||
|
||||
now = ->
|
||||
performance?.now?() ? +new Date
|
||||
|
||||
requestAnimationFrame = window.requestAnimationFrame or window.mozRequestAnimationFrame or
|
||||
window.webkitRequestAnimationFrame or window.msRequestAnimationFrame
|
||||
|
||||
cancelAnimationFrame = window.cancelAnimationFrame or window.mozCancelAnimationFrame
|
||||
|
||||
if not requestAnimationFrame?
|
||||
requestAnimationFrame = (fn) ->
|
||||
setTimeout fn, 50
|
||||
|
||||
cancelAnimationFrame = (id) ->
|
||||
clearTimeout id
|
||||
|
||||
runAnimation = (fn) ->
|
||||
last = now()
|
||||
tick = ->
|
||||
diff = now() - last
|
||||
|
||||
if diff >= 33
|
||||
# Don't run faster than 30 fps
|
||||
|
||||
last = now()
|
||||
fn diff, ->
|
||||
requestAnimationFrame tick
|
||||
else
|
||||
setTimeout tick, (33 - diff)
|
||||
|
||||
tick()
|
||||
|
||||
result = (obj, key, args...) ->
|
||||
if typeof obj[key] is 'function'
|
||||
obj[key](args...)
|
||||
else
|
||||
obj[key]
|
||||
|
||||
extend = (out, sources...) ->
|
||||
for source in sources when source
|
||||
for own key, val of source
|
||||
if out[key]? and typeof out[key] is 'object' and val? and typeof val is 'object'
|
||||
extend(out[key], val)
|
||||
else
|
||||
out[key] = val
|
||||
out
|
||||
|
||||
avgAmplitude = (arr) ->
|
||||
sum = count = 0
|
||||
for v in arr
|
||||
sum += Math.abs(v)
|
||||
count++
|
||||
|
||||
sum / count
|
||||
|
||||
getFromDOM = (key='options', json=true) ->
|
||||
el = document.querySelector "[data-pace-#{ key }]"
|
||||
|
||||
return unless el
|
||||
|
||||
data = el.getAttribute "data-pace-#{ key }"
|
||||
|
||||
return data if not json
|
||||
|
||||
try
|
||||
return JSON.parse data
|
||||
catch e
|
||||
console?.error "Error parsing inline pace options", e
|
||||
|
||||
class Evented
|
||||
on: (event, handler, ctx, once=false) ->
|
||||
@bindings ?= {}
|
||||
@bindings[event] ?= []
|
||||
@bindings[event].push {handler, ctx, once}
|
||||
|
||||
once: (event, handler, ctx) ->
|
||||
@on(event, handler, ctx, true)
|
||||
|
||||
off: (event, handler) ->
|
||||
return unless @bindings?[event]?
|
||||
|
||||
if not handler?
|
||||
delete @bindings[event]
|
||||
else
|
||||
i = 0
|
||||
while i < @bindings[event].length
|
||||
if @bindings[event][i].handler is handler
|
||||
@bindings[event].splice i, 1
|
||||
else
|
||||
i++
|
||||
|
||||
trigger: (event, args...) ->
|
||||
if @bindings?[event]
|
||||
i = 0
|
||||
while i < @bindings[event].length
|
||||
{handler, ctx, once} = @bindings[event][i]
|
||||
|
||||
handler.apply(ctx ? @, args)
|
||||
|
||||
if once
|
||||
@bindings[event].splice i, 1
|
||||
else
|
||||
i++
|
||||
|
||||
Pace = window.Pace or {}
|
||||
window.Pace = Pace
|
||||
|
||||
extend Pace, Evented::
|
||||
|
||||
options = Pace.options = extend {}, defaultOptions, window.paceOptions, getFromDOM()
|
||||
|
||||
for source in ['ajax', 'document', 'eventLag', 'elements']
|
||||
# true enables them without configuration, so we grab the config from the defaults
|
||||
if options[source] is true
|
||||
options[source] = defaultOptions[source]
|
||||
|
||||
class NoTargetError extends Error
|
||||
|
||||
class Bar
|
||||
constructor: ->
|
||||
@progress = 0
|
||||
|
||||
getElement: ->
|
||||
if not @el?
|
||||
targetElement = document.querySelector options.target
|
||||
|
||||
if not targetElement
|
||||
throw new NoTargetError
|
||||
|
||||
@el = document.createElement 'div'
|
||||
@el.className = "pace pace-active"
|
||||
|
||||
document.body.className = document.body.className.replace /pace-done/g, ''
|
||||
document.body.className += ' pace-running'
|
||||
|
||||
@el.innerHTML = '''
|
||||
<div class="pace-progress">
|
||||
<div class="pace-progress-inner"></div>
|
||||
</div>
|
||||
<div class="pace-activity"></div>
|
||||
'''
|
||||
if targetElement.firstChild?
|
||||
targetElement.insertBefore @el, targetElement.firstChild
|
||||
else
|
||||
targetElement.appendChild @el
|
||||
|
||||
@el
|
||||
|
||||
finish: ->
|
||||
el = @getElement()
|
||||
|
||||
el.className = el.className.replace 'pace-active', ''
|
||||
el.className += ' pace-inactive'
|
||||
|
||||
document.body.className = document.body.className.replace 'pace-running', ''
|
||||
document.body.className += ' pace-done'
|
||||
|
||||
update: (prog) ->
|
||||
@progress = prog
|
||||
|
||||
do @render
|
||||
|
||||
destroy: ->
|
||||
try
|
||||
@getElement().parentNode.removeChild(@getElement())
|
||||
catch NoTargetError
|
||||
|
||||
@el = undefined
|
||||
|
||||
render: ->
|
||||
if not document.querySelector(options.target)?
|
||||
return false
|
||||
|
||||
el = @getElement()
|
||||
|
||||
transform = "translate3d(#{ @progress }%, 0, 0)"
|
||||
for key in ['webkitTransform', 'msTransform', 'transform']
|
||||
el.children[0].style[key] = transform
|
||||
|
||||
if not @lastRenderedProgress or @lastRenderedProgress|0 != @progress|0
|
||||
# The whole-part of the number has changed
|
||||
|
||||
el.children[0].setAttribute 'data-progress-text', "#{ @progress|0 }%"
|
||||
|
||||
if @progress >= 100
|
||||
# We cap it at 99 so we can use prefix-based attribute selectors
|
||||
progressStr = '99'
|
||||
else
|
||||
progressStr = if @progress < 10 then "0" else ""
|
||||
progressStr += @progress|0
|
||||
|
||||
el.children[0].setAttribute 'data-progress', "#{ progressStr }"
|
||||
|
||||
@lastRenderedProgress = @progress
|
||||
|
||||
done: ->
|
||||
@progress >= 100
|
||||
|
||||
class Events
|
||||
constructor: ->
|
||||
@bindings = {}
|
||||
|
||||
trigger: (name, val) ->
|
||||
if @bindings[name]?
|
||||
for binding in @bindings[name]
|
||||
binding.call @, val
|
||||
|
||||
on: (name, fn) ->
|
||||
@bindings[name] ?= []
|
||||
@bindings[name].push fn
|
||||
|
||||
_XMLHttpRequest = window.XMLHttpRequest
|
||||
_XDomainRequest = window.XDomainRequest
|
||||
_WebSocket = window.WebSocket
|
||||
|
||||
extendNative = (to, from) ->
|
||||
for key of from::
|
||||
try
|
||||
if not to[key]? and typeof from[key] isnt 'function'
|
||||
if typeof Object.defineProperty is 'function'
|
||||
Object.defineProperty(to, key, {
|
||||
get: ->
|
||||
return from::[key];
|
||||
,
|
||||
configurable: true,
|
||||
enumerable: true })
|
||||
else
|
||||
to[key] = from::[key]
|
||||
catch e
|
||||
|
||||
ignoreStack = []
|
||||
|
||||
Pace.ignore = (fn, args...) ->
|
||||
ignoreStack.unshift 'ignore'
|
||||
ret = fn(args...)
|
||||
ignoreStack.shift()
|
||||
ret
|
||||
|
||||
Pace.track = (fn, args...) ->
|
||||
ignoreStack.unshift 'track'
|
||||
ret = fn(args...)
|
||||
ignoreStack.shift()
|
||||
ret
|
||||
|
||||
shouldTrack = (method='GET') ->
|
||||
if ignoreStack[0] is 'track'
|
||||
return 'force'
|
||||
|
||||
if not ignoreStack.length and options.ajax
|
||||
if method is 'socket' and options.ajax.trackWebSockets
|
||||
return true
|
||||
else if method.toUpperCase() in options.ajax.trackMethods
|
||||
return true
|
||||
|
||||
return false
|
||||
|
||||
# We should only ever instantiate one of these
|
||||
class RequestIntercept extends Events
|
||||
constructor: ->
|
||||
super
|
||||
|
||||
monitorXHR = (req) =>
|
||||
_open = req.open
|
||||
req.open = (type, url, async) =>
|
||||
if shouldTrack(type)
|
||||
@trigger 'request', {type, url, request: req}
|
||||
|
||||
_open.apply req, arguments
|
||||
|
||||
window.XMLHttpRequest = (flags) ->
|
||||
req = new _XMLHttpRequest(flags)
|
||||
|
||||
monitorXHR req
|
||||
|
||||
req
|
||||
|
||||
try
|
||||
extendNative window.XMLHttpRequest, _XMLHttpRequest
|
||||
|
||||
if _XDomainRequest?
|
||||
window.XDomainRequest = ->
|
||||
req = new _XDomainRequest
|
||||
|
||||
monitorXHR req
|
||||
|
||||
req
|
||||
|
||||
try
|
||||
extendNative window.XDomainRequest, _XDomainRequest
|
||||
|
||||
if _WebSocket? and options.ajax.trackWebSockets
|
||||
window.WebSocket = (url, protocols) =>
|
||||
if protocols?
|
||||
req = new _WebSocket(url, protocols)
|
||||
else
|
||||
req = new _WebSocket(url)
|
||||
|
||||
if shouldTrack('socket')
|
||||
@trigger 'request', {type: 'socket', url, protocols, request: req}
|
||||
|
||||
req
|
||||
|
||||
try
|
||||
extendNative window.WebSocket, _WebSocket
|
||||
|
||||
_intercept = null
|
||||
getIntercept = ->
|
||||
if not _intercept?
|
||||
_intercept = new RequestIntercept
|
||||
_intercept
|
||||
|
||||
shouldIgnoreURL = (url) ->
|
||||
for pattern in options.ajax.ignoreURLs
|
||||
if typeof pattern is 'string'
|
||||
if url.indexOf(pattern) isnt -1
|
||||
return true
|
||||
|
||||
else
|
||||
if pattern.test(url)
|
||||
return true
|
||||
|
||||
return false
|
||||
|
||||
# If we want to start the progress bar
|
||||
# on every request, we need to hear the request
|
||||
# and then inject it into the new ajax monitor
|
||||
# start will have created.
|
||||
|
||||
getIntercept().on 'request', ({type, request, url}) ->
|
||||
return if shouldIgnoreURL(url)
|
||||
|
||||
if not Pace.running and (options.restartOnRequestAfter isnt false or shouldTrack(type) is 'force')
|
||||
args = arguments
|
||||
|
||||
after = options.restartOnRequestAfter or 0
|
||||
if typeof after is 'boolean'
|
||||
after = 0
|
||||
|
||||
setTimeout ->
|
||||
if type is 'socket'
|
||||
stillActive = request.readyState < 2
|
||||
else
|
||||
stillActive = 0 < request.readyState < 4
|
||||
|
||||
if stillActive
|
||||
Pace.restart()
|
||||
|
||||
for source in Pace.sources
|
||||
if source instanceof AjaxMonitor
|
||||
source.watch args...
|
||||
break
|
||||
, after
|
||||
|
||||
class AjaxMonitor
|
||||
constructor: ->
|
||||
@elements = []
|
||||
|
||||
getIntercept().on 'request', => @watch arguments...
|
||||
|
||||
watch: ({type, request, url}) ->
|
||||
return if shouldIgnoreURL(url)
|
||||
|
||||
if type is 'socket'
|
||||
tracker = new SocketRequestTracker(request)
|
||||
else
|
||||
tracker = new XHRRequestTracker(request)
|
||||
|
||||
@elements.push tracker
|
||||
|
||||
class XHRRequestTracker
|
||||
constructor: (request) ->
|
||||
@progress = 0
|
||||
|
||||
if window.ProgressEvent?
|
||||
# We're dealing with a modern browser with progress event support
|
||||
|
||||
size = null
|
||||
request.addEventListener 'progress', (evt) =>
|
||||
if evt.lengthComputable
|
||||
@progress = 100 * evt.loaded / evt.total
|
||||
else
|
||||
# If it's chunked encoding, we have no way of knowing the total length of the
|
||||
# response, all we can do is increment the progress with backoff such that we
|
||||
# never hit 100% until it's done.
|
||||
@progress = @progress + (100 - @progress) / 2
|
||||
, false
|
||||
|
||||
for event in ['load', 'abort', 'timeout', 'error']
|
||||
request.addEventListener event, =>
|
||||
@progress = 100
|
||||
, false
|
||||
|
||||
else
|
||||
_onreadystatechange = request.onreadystatechange
|
||||
request.onreadystatechange = =>
|
||||
if request.readyState in [0, 4]
|
||||
@progress = 100
|
||||
else if request.readyState is 3
|
||||
@progress = 50
|
||||
|
||||
_onreadystatechange?(arguments...)
|
||||
|
||||
class SocketRequestTracker
|
||||
constructor: (request) ->
|
||||
@progress = 0
|
||||
|
||||
for event in ['error', 'open']
|
||||
request.addEventListener event, =>
|
||||
@progress = 100
|
||||
, false
|
||||
|
||||
class ElementMonitor
|
||||
constructor: (options={}) ->
|
||||
@elements = []
|
||||
|
||||
options.selectors ?= []
|
||||
for selector in options.selectors
|
||||
@elements.push new ElementTracker selector
|
||||
|
||||
class ElementTracker
|
||||
constructor: (@selector) ->
|
||||
@progress = 0
|
||||
|
||||
@check()
|
||||
|
||||
check: ->
|
||||
if document.querySelector(@selector)
|
||||
@done()
|
||||
else
|
||||
setTimeout (=> @check()),
|
||||
options.elements.checkInterval
|
||||
|
||||
done: ->
|
||||
@progress = 100
|
||||
|
||||
class DocumentMonitor
|
||||
states:
|
||||
loading: 0
|
||||
interactive: 50
|
||||
complete: 100
|
||||
|
||||
constructor: ->
|
||||
@progress = @states[document.readyState] ? 100
|
||||
|
||||
_onreadystatechange = document.onreadystatechange
|
||||
document.onreadystatechange = =>
|
||||
if @states[document.readyState]?
|
||||
@progress = @states[document.readyState]
|
||||
|
||||
_onreadystatechange?(arguments...)
|
||||
|
||||
class EventLagMonitor
|
||||
constructor: ->
|
||||
@progress = 0
|
||||
|
||||
avg = 0
|
||||
|
||||
samples = []
|
||||
|
||||
points = 0
|
||||
last = now()
|
||||
interval = setInterval =>
|
||||
diff = now() - last - 50
|
||||
last = now()
|
||||
|
||||
samples.push diff
|
||||
|
||||
if samples.length > options.eventLag.sampleCount
|
||||
samples.shift()
|
||||
|
||||
avg = avgAmplitude samples
|
||||
|
||||
if ++points >= options.eventLag.minSamples and avg < options.eventLag.lagThreshold
|
||||
@progress = 100
|
||||
|
||||
clearInterval interval
|
||||
else
|
||||
@progress = 100 * (3 / (avg + 3))
|
||||
|
||||
, 50
|
||||
|
||||
class Scaler
|
||||
constructor: (@source) ->
|
||||
@last = @sinceLastUpdate = 0
|
||||
@rate = options.initialRate
|
||||
@catchup = 0
|
||||
@progress = @lastProgress = 0
|
||||
|
||||
if @source?
|
||||
@progress = result(@source, 'progress')
|
||||
|
||||
tick: (frameTime, val) ->
|
||||
val ?= result(@source, 'progress')
|
||||
|
||||
if val >= 100
|
||||
@done = true
|
||||
|
||||
if val == @last
|
||||
@sinceLastUpdate += frameTime
|
||||
else
|
||||
if @sinceLastUpdate
|
||||
@rate = (val - @last) / @sinceLastUpdate
|
||||
|
||||
@catchup = (val - @progress) / options.catchupTime
|
||||
|
||||
@sinceLastUpdate = 0
|
||||
@last = val
|
||||
|
||||
if val > @progress
|
||||
# After we've got a datapoint, we have catchupTime to
|
||||
# get the progress bar to reflect that new data
|
||||
@progress += @catchup * frameTime
|
||||
|
||||
scaling = (1 - Math.pow(@progress / 100, options.easeFactor))
|
||||
|
||||
# Based on the rate of the last update, we preemptively update
|
||||
# the progress bar, scaling it so it can never hit 100% until we
|
||||
# know it's done.
|
||||
@progress += scaling * @rate * frameTime
|
||||
|
||||
@progress = Math.min(@lastProgress + options.maxProgressPerFrame, @progress)
|
||||
|
||||
@progress = Math.max(0, @progress)
|
||||
@progress = Math.min(100, @progress)
|
||||
|
||||
@lastProgress = @progress
|
||||
|
||||
@progress
|
||||
|
||||
sources = null
|
||||
scalers = null
|
||||
bar = null
|
||||
uniScaler = null
|
||||
animation = null
|
||||
cancelAnimation = null
|
||||
Pace.running = false
|
||||
|
||||
handlePushState = ->
|
||||
if options.restartOnPushState
|
||||
Pace.restart()
|
||||
|
||||
# We reset the bar whenever it looks like an ajax navigation has occured.
|
||||
if window.history.pushState?
|
||||
_pushState = window.history.pushState
|
||||
window.history.pushState = ->
|
||||
handlePushState()
|
||||
|
||||
_pushState.apply window.history, arguments
|
||||
|
||||
if window.history.replaceState?
|
||||
_replaceState = window.history.replaceState
|
||||
window.history.replaceState = ->
|
||||
handlePushState()
|
||||
|
||||
_replaceState.apply window.history, arguments
|
||||
|
||||
SOURCE_KEYS =
|
||||
ajax: AjaxMonitor
|
||||
elements: ElementMonitor
|
||||
document: DocumentMonitor
|
||||
eventLag: EventLagMonitor
|
||||
|
||||
do init = ->
|
||||
Pace.sources = sources = []
|
||||
|
||||
for type in ['ajax', 'elements', 'document', 'eventLag']
|
||||
if options[type] isnt false
|
||||
sources.push new SOURCE_KEYS[type](options[type])
|
||||
|
||||
for source in options.extraSources ? []
|
||||
sources.push new source(options)
|
||||
|
||||
Pace.bar = bar = new Bar
|
||||
|
||||
# Each source of progress data has it's own scaler to smooth its output
|
||||
scalers = []
|
||||
|
||||
# We have an extra scaler for the final output to keep things looking nice as we add and
|
||||
# remove sources
|
||||
uniScaler = new Scaler
|
||||
|
||||
Pace.stop = ->
|
||||
Pace.trigger 'stop'
|
||||
Pace.running = false
|
||||
|
||||
bar.destroy()
|
||||
|
||||
# Not all browsers support cancelAnimationFrame
|
||||
cancelAnimation = true
|
||||
|
||||
if animation?
|
||||
cancelAnimationFrame? animation
|
||||
animation = null
|
||||
|
||||
init()
|
||||
|
||||
Pace.restart = ->
|
||||
Pace.trigger 'restart'
|
||||
Pace.stop()
|
||||
Pace.start()
|
||||
|
||||
Pace.go = ->
|
||||
Pace.running = true
|
||||
|
||||
bar.render()
|
||||
|
||||
start = now()
|
||||
|
||||
cancelAnimation = false
|
||||
animation = runAnimation (frameTime, enqueueNextFrame) ->
|
||||
# Every source gives us a progress number from 0 - 100
|
||||
# It's up to us to figure out how to turn that into a smoothly moving bar
|
||||
#
|
||||
# Their progress numbers can only increment. We try to interpolate
|
||||
# between the numbers.
|
||||
|
||||
remaining = 100 - bar.progress
|
||||
|
||||
count = sum = 0
|
||||
done = true
|
||||
# A source is composed of a bunch of elements, each with a raw, unscaled progress
|
||||
for source, i in sources
|
||||
scalerList = scalers[i] ?= []
|
||||
|
||||
elements = source.elements ? [source]
|
||||
|
||||
# Each element is given it's own scaler, which turns its value into something
|
||||
# smoothed for display
|
||||
for element, j in elements
|
||||
scaler = scalerList[j] ?= new Scaler element
|
||||
|
||||
done &= scaler.done
|
||||
|
||||
continue if scaler.done
|
||||
|
||||
count++
|
||||
sum += scaler.tick(frameTime)
|
||||
|
||||
avg = sum / count
|
||||
|
||||
bar.update uniScaler.tick(frameTime, avg)
|
||||
|
||||
if bar.done() or done or cancelAnimation
|
||||
bar.update 100
|
||||
|
||||
Pace.trigger 'done'
|
||||
|
||||
setTimeout ->
|
||||
bar.finish()
|
||||
|
||||
Pace.running = false
|
||||
|
||||
Pace.trigger 'hide'
|
||||
, Math.max(options.ghostTime, Math.max(options.minTime - (now() - start), 0))
|
||||
else
|
||||
enqueueNextFrame()
|
||||
|
||||
Pace.start = (_options) ->
|
||||
extend options, _options
|
||||
|
||||
Pace.running = true
|
||||
|
||||
try
|
||||
bar.render()
|
||||
catch NoTargetError
|
||||
|
||||
# It's usually possible to render a bit before the document declares itself ready
|
||||
if not document.querySelector('.pace')
|
||||
setTimeout Pace.start, 50
|
||||
else
|
||||
Pace.trigger 'start'
|
||||
Pace.go()
|
||||
|
||||
if typeof define is 'function' and define.amd
|
||||
# AMD
|
||||
define ['pace'], -> Pace
|
||||
else if typeof exports is 'object'
|
||||
# CommonJS
|
||||
module.exports = Pace
|
||||
else
|
||||
# Global
|
||||
if options.startOnPageLoad
|
||||
Pace.start()
|
||||
935
public/bower_components/PACE/pace.js
vendored
Executable file
935
public/bower_components/PACE/pace.js
vendored
Executable file
@@ -0,0 +1,935 @@
|
||||
(function() {
|
||||
var AjaxMonitor, Bar, DocumentMonitor, ElementMonitor, ElementTracker, EventLagMonitor, Evented, Events, NoTargetError, Pace, RequestIntercept, SOURCE_KEYS, Scaler, SocketRequestTracker, XHRRequestTracker, animation, avgAmplitude, bar, cancelAnimation, cancelAnimationFrame, defaultOptions, extend, extendNative, getFromDOM, getIntercept, handlePushState, ignoreStack, init, now, options, requestAnimationFrame, result, runAnimation, scalers, shouldIgnoreURL, shouldTrack, source, sources, uniScaler, _WebSocket, _XDomainRequest, _XMLHttpRequest, _i, _intercept, _len, _pushState, _ref, _ref1, _replaceState,
|
||||
__slice = [].slice,
|
||||
__hasProp = {}.hasOwnProperty,
|
||||
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||
__indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
|
||||
|
||||
defaultOptions = {
|
||||
catchupTime: 100,
|
||||
initialRate: .03,
|
||||
minTime: 250,
|
||||
ghostTime: 100,
|
||||
maxProgressPerFrame: 20,
|
||||
easeFactor: 1.25,
|
||||
startOnPageLoad: true,
|
||||
restartOnPushState: true,
|
||||
restartOnRequestAfter: 500,
|
||||
target: 'body',
|
||||
elements: {
|
||||
checkInterval: 100,
|
||||
selectors: ['body']
|
||||
},
|
||||
eventLag: {
|
||||
minSamples: 10,
|
||||
sampleCount: 3,
|
||||
lagThreshold: 3
|
||||
},
|
||||
ajax: {
|
||||
trackMethods: ['GET'],
|
||||
trackWebSockets: true,
|
||||
ignoreURLs: []
|
||||
}
|
||||
};
|
||||
|
||||
now = function() {
|
||||
var _ref;
|
||||
return (_ref = typeof performance !== "undefined" && performance !== null ? typeof performance.now === "function" ? performance.now() : void 0 : void 0) != null ? _ref : +(new Date);
|
||||
};
|
||||
|
||||
requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;
|
||||
|
||||
cancelAnimationFrame = window.cancelAnimationFrame || window.mozCancelAnimationFrame;
|
||||
|
||||
if (requestAnimationFrame == null) {
|
||||
requestAnimationFrame = function(fn) {
|
||||
return setTimeout(fn, 50);
|
||||
};
|
||||
cancelAnimationFrame = function(id) {
|
||||
return clearTimeout(id);
|
||||
};
|
||||
}
|
||||
|
||||
runAnimation = function(fn) {
|
||||
var last, tick;
|
||||
last = now();
|
||||
tick = function() {
|
||||
var diff;
|
||||
diff = now() - last;
|
||||
if (diff >= 33) {
|
||||
last = now();
|
||||
return fn(diff, function() {
|
||||
return requestAnimationFrame(tick);
|
||||
});
|
||||
} else {
|
||||
return setTimeout(tick, 33 - diff);
|
||||
}
|
||||
};
|
||||
return tick();
|
||||
};
|
||||
|
||||
result = function() {
|
||||
var args, key, obj;
|
||||
obj = arguments[0], key = arguments[1], args = 3 <= arguments.length ? __slice.call(arguments, 2) : [];
|
||||
if (typeof obj[key] === 'function') {
|
||||
return obj[key].apply(obj, args);
|
||||
} else {
|
||||
return obj[key];
|
||||
}
|
||||
};
|
||||
|
||||
extend = function() {
|
||||
var key, out, source, sources, val, _i, _len;
|
||||
out = arguments[0], sources = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
|
||||
for (_i = 0, _len = sources.length; _i < _len; _i++) {
|
||||
source = sources[_i];
|
||||
if (source) {
|
||||
for (key in source) {
|
||||
if (!__hasProp.call(source, key)) continue;
|
||||
val = source[key];
|
||||
if ((out[key] != null) && typeof out[key] === 'object' && (val != null) && typeof val === 'object') {
|
||||
extend(out[key], val);
|
||||
} else {
|
||||
out[key] = val;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return out;
|
||||
};
|
||||
|
||||
avgAmplitude = function(arr) {
|
||||
var count, sum, v, _i, _len;
|
||||
sum = count = 0;
|
||||
for (_i = 0, _len = arr.length; _i < _len; _i++) {
|
||||
v = arr[_i];
|
||||
sum += Math.abs(v);
|
||||
count++;
|
||||
}
|
||||
return sum / count;
|
||||
};
|
||||
|
||||
getFromDOM = function(key, json) {
|
||||
var data, e, el;
|
||||
if (key == null) {
|
||||
key = 'options';
|
||||
}
|
||||
if (json == null) {
|
||||
json = true;
|
||||
}
|
||||
el = document.querySelector("[data-pace-" + key + "]");
|
||||
if (!el) {
|
||||
return;
|
||||
}
|
||||
data = el.getAttribute("data-pace-" + key);
|
||||
if (!json) {
|
||||
return data;
|
||||
}
|
||||
try {
|
||||
return JSON.parse(data);
|
||||
} catch (_error) {
|
||||
e = _error;
|
||||
return typeof console !== "undefined" && console !== null ? console.error("Error parsing inline pace options", e) : void 0;
|
||||
}
|
||||
};
|
||||
|
||||
Evented = (function() {
|
||||
function Evented() {}
|
||||
|
||||
Evented.prototype.on = function(event, handler, ctx, once) {
|
||||
var _base;
|
||||
if (once == null) {
|
||||
once = false;
|
||||
}
|
||||
if (this.bindings == null) {
|
||||
this.bindings = {};
|
||||
}
|
||||
if ((_base = this.bindings)[event] == null) {
|
||||
_base[event] = [];
|
||||
}
|
||||
return this.bindings[event].push({
|
||||
handler: handler,
|
||||
ctx: ctx,
|
||||
once: once
|
||||
});
|
||||
};
|
||||
|
||||
Evented.prototype.once = function(event, handler, ctx) {
|
||||
return this.on(event, handler, ctx, true);
|
||||
};
|
||||
|
||||
Evented.prototype.off = function(event, handler) {
|
||||
var i, _ref, _results;
|
||||
if (((_ref = this.bindings) != null ? _ref[event] : void 0) == null) {
|
||||
return;
|
||||
}
|
||||
if (handler == null) {
|
||||
return delete this.bindings[event];
|
||||
} else {
|
||||
i = 0;
|
||||
_results = [];
|
||||
while (i < this.bindings[event].length) {
|
||||
if (this.bindings[event][i].handler === handler) {
|
||||
_results.push(this.bindings[event].splice(i, 1));
|
||||
} else {
|
||||
_results.push(i++);
|
||||
}
|
||||
}
|
||||
return _results;
|
||||
}
|
||||
};
|
||||
|
||||
Evented.prototype.trigger = function() {
|
||||
var args, ctx, event, handler, i, once, _ref, _ref1, _results;
|
||||
event = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
|
||||
if ((_ref = this.bindings) != null ? _ref[event] : void 0) {
|
||||
i = 0;
|
||||
_results = [];
|
||||
while (i < this.bindings[event].length) {
|
||||
_ref1 = this.bindings[event][i], handler = _ref1.handler, ctx = _ref1.ctx, once = _ref1.once;
|
||||
handler.apply(ctx != null ? ctx : this, args);
|
||||
if (once) {
|
||||
_results.push(this.bindings[event].splice(i, 1));
|
||||
} else {
|
||||
_results.push(i++);
|
||||
}
|
||||
}
|
||||
return _results;
|
||||
}
|
||||
};
|
||||
|
||||
return Evented;
|
||||
|
||||
})();
|
||||
|
||||
Pace = window.Pace || {};
|
||||
|
||||
window.Pace = Pace;
|
||||
|
||||
extend(Pace, Evented.prototype);
|
||||
|
||||
options = Pace.options = extend({}, defaultOptions, window.paceOptions, getFromDOM());
|
||||
|
||||
_ref = ['ajax', 'document', 'eventLag', 'elements'];
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
source = _ref[_i];
|
||||
if (options[source] === true) {
|
||||
options[source] = defaultOptions[source];
|
||||
}
|
||||
}
|
||||
|
||||
NoTargetError = (function(_super) {
|
||||
__extends(NoTargetError, _super);
|
||||
|
||||
function NoTargetError() {
|
||||
_ref1 = NoTargetError.__super__.constructor.apply(this, arguments);
|
||||
return _ref1;
|
||||
}
|
||||
|
||||
return NoTargetError;
|
||||
|
||||
})(Error);
|
||||
|
||||
Bar = (function() {
|
||||
function Bar() {
|
||||
this.progress = 0;
|
||||
}
|
||||
|
||||
Bar.prototype.getElement = function() {
|
||||
var targetElement;
|
||||
if (this.el == null) {
|
||||
targetElement = document.querySelector(options.target);
|
||||
if (!targetElement) {
|
||||
throw new NoTargetError;
|
||||
}
|
||||
this.el = document.createElement('div');
|
||||
this.el.className = "pace pace-active";
|
||||
document.body.className = document.body.className.replace(/pace-done/g, '');
|
||||
document.body.className += ' pace-running';
|
||||
this.el.innerHTML = '<div class="pace-progress">\n <div class="pace-progress-inner"></div>\n</div>\n<div class="pace-activity"></div>';
|
||||
if (targetElement.firstChild != null) {
|
||||
targetElement.insertBefore(this.el, targetElement.firstChild);
|
||||
} else {
|
||||
targetElement.appendChild(this.el);
|
||||
}
|
||||
}
|
||||
return this.el;
|
||||
};
|
||||
|
||||
Bar.prototype.finish = function() {
|
||||
var el;
|
||||
el = this.getElement();
|
||||
el.className = el.className.replace('pace-active', '');
|
||||
el.className += ' pace-inactive';
|
||||
document.body.className = document.body.className.replace('pace-running', '');
|
||||
return document.body.className += ' pace-done';
|
||||
};
|
||||
|
||||
Bar.prototype.update = function(prog) {
|
||||
this.progress = prog;
|
||||
return this.render();
|
||||
};
|
||||
|
||||
Bar.prototype.destroy = function() {
|
||||
try {
|
||||
this.getElement().parentNode.removeChild(this.getElement());
|
||||
} catch (_error) {
|
||||
NoTargetError = _error;
|
||||
}
|
||||
return this.el = void 0;
|
||||
};
|
||||
|
||||
Bar.prototype.render = function() {
|
||||
var el, key, progressStr, transform, _j, _len1, _ref2;
|
||||
if (document.querySelector(options.target) == null) {
|
||||
return false;
|
||||
}
|
||||
el = this.getElement();
|
||||
transform = "translate3d(" + this.progress + "%, 0, 0)";
|
||||
_ref2 = ['webkitTransform', 'msTransform', 'transform'];
|
||||
for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
|
||||
key = _ref2[_j];
|
||||
el.children[0].style[key] = transform;
|
||||
}
|
||||
if (!this.lastRenderedProgress || this.lastRenderedProgress | 0 !== this.progress | 0) {
|
||||
el.children[0].setAttribute('data-progress-text', "" + (this.progress | 0) + "%");
|
||||
if (this.progress >= 100) {
|
||||
progressStr = '99';
|
||||
} else {
|
||||
progressStr = this.progress < 10 ? "0" : "";
|
||||
progressStr += this.progress | 0;
|
||||
}
|
||||
el.children[0].setAttribute('data-progress', "" + progressStr);
|
||||
}
|
||||
return this.lastRenderedProgress = this.progress;
|
||||
};
|
||||
|
||||
Bar.prototype.done = function() {
|
||||
return this.progress >= 100;
|
||||
};
|
||||
|
||||
return Bar;
|
||||
|
||||
})();
|
||||
|
||||
Events = (function() {
|
||||
function Events() {
|
||||
this.bindings = {};
|
||||
}
|
||||
|
||||
Events.prototype.trigger = function(name, val) {
|
||||
var binding, _j, _len1, _ref2, _results;
|
||||
if (this.bindings[name] != null) {
|
||||
_ref2 = this.bindings[name];
|
||||
_results = [];
|
||||
for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
|
||||
binding = _ref2[_j];
|
||||
_results.push(binding.call(this, val));
|
||||
}
|
||||
return _results;
|
||||
}
|
||||
};
|
||||
|
||||
Events.prototype.on = function(name, fn) {
|
||||
var _base;
|
||||
if ((_base = this.bindings)[name] == null) {
|
||||
_base[name] = [];
|
||||
}
|
||||
return this.bindings[name].push(fn);
|
||||
};
|
||||
|
||||
return Events;
|
||||
|
||||
})();
|
||||
|
||||
_XMLHttpRequest = window.XMLHttpRequest;
|
||||
|
||||
_XDomainRequest = window.XDomainRequest;
|
||||
|
||||
_WebSocket = window.WebSocket;
|
||||
|
||||
extendNative = function(to, from) {
|
||||
var e, key, _results;
|
||||
_results = [];
|
||||
for (key in from.prototype) {
|
||||
try {
|
||||
if ((to[key] == null) && typeof from[key] !== 'function') {
|
||||
if (typeof Object.defineProperty === 'function') {
|
||||
_results.push(Object.defineProperty(to, key, {
|
||||
get: function() {
|
||||
return from.prototype[key];
|
||||
},
|
||||
configurable: true,
|
||||
enumerable: true
|
||||
}));
|
||||
} else {
|
||||
_results.push(to[key] = from.prototype[key]);
|
||||
}
|
||||
} else {
|
||||
_results.push(void 0);
|
||||
}
|
||||
} catch (_error) {
|
||||
e = _error;
|
||||
}
|
||||
}
|
||||
return _results;
|
||||
};
|
||||
|
||||
ignoreStack = [];
|
||||
|
||||
Pace.ignore = function() {
|
||||
var args, fn, ret;
|
||||
fn = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
|
||||
ignoreStack.unshift('ignore');
|
||||
ret = fn.apply(null, args);
|
||||
ignoreStack.shift();
|
||||
return ret;
|
||||
};
|
||||
|
||||
Pace.track = function() {
|
||||
var args, fn, ret;
|
||||
fn = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
|
||||
ignoreStack.unshift('track');
|
||||
ret = fn.apply(null, args);
|
||||
ignoreStack.shift();
|
||||
return ret;
|
||||
};
|
||||
|
||||
shouldTrack = function(method) {
|
||||
var _ref2;
|
||||
if (method == null) {
|
||||
method = 'GET';
|
||||
}
|
||||
if (ignoreStack[0] === 'track') {
|
||||
return 'force';
|
||||
}
|
||||
if (!ignoreStack.length && options.ajax) {
|
||||
if (method === 'socket' && options.ajax.trackWebSockets) {
|
||||
return true;
|
||||
} else if (_ref2 = method.toUpperCase(), __indexOf.call(options.ajax.trackMethods, _ref2) >= 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
RequestIntercept = (function(_super) {
|
||||
__extends(RequestIntercept, _super);
|
||||
|
||||
function RequestIntercept() {
|
||||
var monitorXHR,
|
||||
_this = this;
|
||||
RequestIntercept.__super__.constructor.apply(this, arguments);
|
||||
monitorXHR = function(req) {
|
||||
var _open;
|
||||
_open = req.open;
|
||||
return req.open = function(type, url, async) {
|
||||
if (shouldTrack(type)) {
|
||||
_this.trigger('request', {
|
||||
type: type,
|
||||
url: url,
|
||||
request: req
|
||||
});
|
||||
}
|
||||
return _open.apply(req, arguments);
|
||||
};
|
||||
};
|
||||
window.XMLHttpRequest = function(flags) {
|
||||
var req;
|
||||
req = new _XMLHttpRequest(flags);
|
||||
monitorXHR(req);
|
||||
return req;
|
||||
};
|
||||
try {
|
||||
extendNative(window.XMLHttpRequest, _XMLHttpRequest);
|
||||
} catch (_error) {}
|
||||
if (_XDomainRequest != null) {
|
||||
window.XDomainRequest = function() {
|
||||
var req;
|
||||
req = new _XDomainRequest;
|
||||
monitorXHR(req);
|
||||
return req;
|
||||
};
|
||||
try {
|
||||
extendNative(window.XDomainRequest, _XDomainRequest);
|
||||
} catch (_error) {}
|
||||
}
|
||||
if ((_WebSocket != null) && options.ajax.trackWebSockets) {
|
||||
window.WebSocket = function(url, protocols) {
|
||||
var req;
|
||||
if (protocols != null) {
|
||||
req = new _WebSocket(url, protocols);
|
||||
} else {
|
||||
req = new _WebSocket(url);
|
||||
}
|
||||
if (shouldTrack('socket')) {
|
||||
_this.trigger('request', {
|
||||
type: 'socket',
|
||||
url: url,
|
||||
protocols: protocols,
|
||||
request: req
|
||||
});
|
||||
}
|
||||
return req;
|
||||
};
|
||||
try {
|
||||
extendNative(window.WebSocket, _WebSocket);
|
||||
} catch (_error) {}
|
||||
}
|
||||
}
|
||||
|
||||
return RequestIntercept;
|
||||
|
||||
})(Events);
|
||||
|
||||
_intercept = null;
|
||||
|
||||
getIntercept = function() {
|
||||
if (_intercept == null) {
|
||||
_intercept = new RequestIntercept;
|
||||
}
|
||||
return _intercept;
|
||||
};
|
||||
|
||||
shouldIgnoreURL = function(url) {
|
||||
var pattern, _j, _len1, _ref2;
|
||||
_ref2 = options.ajax.ignoreURLs;
|
||||
for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
|
||||
pattern = _ref2[_j];
|
||||
if (typeof pattern === 'string') {
|
||||
if (url.indexOf(pattern) !== -1) {
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
if (pattern.test(url)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
getIntercept().on('request', function(_arg) {
|
||||
var after, args, request, type, url;
|
||||
type = _arg.type, request = _arg.request, url = _arg.url;
|
||||
if (shouldIgnoreURL(url)) {
|
||||
return;
|
||||
}
|
||||
if (!Pace.running && (options.restartOnRequestAfter !== false || shouldTrack(type) === 'force')) {
|
||||
args = arguments;
|
||||
after = options.restartOnRequestAfter || 0;
|
||||
if (typeof after === 'boolean') {
|
||||
after = 0;
|
||||
}
|
||||
return setTimeout(function() {
|
||||
var stillActive, _j, _len1, _ref2, _ref3, _results;
|
||||
if (type === 'socket') {
|
||||
stillActive = request.readyState < 2;
|
||||
} else {
|
||||
stillActive = (0 < (_ref2 = request.readyState) && _ref2 < 4);
|
||||
}
|
||||
if (stillActive) {
|
||||
Pace.restart();
|
||||
_ref3 = Pace.sources;
|
||||
_results = [];
|
||||
for (_j = 0, _len1 = _ref3.length; _j < _len1; _j++) {
|
||||
source = _ref3[_j];
|
||||
if (source instanceof AjaxMonitor) {
|
||||
source.watch.apply(source, args);
|
||||
break;
|
||||
} else {
|
||||
_results.push(void 0);
|
||||
}
|
||||
}
|
||||
return _results;
|
||||
}
|
||||
}, after);
|
||||
}
|
||||
});
|
||||
|
||||
AjaxMonitor = (function() {
|
||||
function AjaxMonitor() {
|
||||
var _this = this;
|
||||
this.elements = [];
|
||||
getIntercept().on('request', function() {
|
||||
return _this.watch.apply(_this, arguments);
|
||||
});
|
||||
}
|
||||
|
||||
AjaxMonitor.prototype.watch = function(_arg) {
|
||||
var request, tracker, type, url;
|
||||
type = _arg.type, request = _arg.request, url = _arg.url;
|
||||
if (shouldIgnoreURL(url)) {
|
||||
return;
|
||||
}
|
||||
if (type === 'socket') {
|
||||
tracker = new SocketRequestTracker(request);
|
||||
} else {
|
||||
tracker = new XHRRequestTracker(request);
|
||||
}
|
||||
return this.elements.push(tracker);
|
||||
};
|
||||
|
||||
return AjaxMonitor;
|
||||
|
||||
})();
|
||||
|
||||
XHRRequestTracker = (function() {
|
||||
function XHRRequestTracker(request) {
|
||||
var event, size, _j, _len1, _onreadystatechange, _ref2,
|
||||
_this = this;
|
||||
this.progress = 0;
|
||||
if (window.ProgressEvent != null) {
|
||||
size = null;
|
||||
request.addEventListener('progress', function(evt) {
|
||||
if (evt.lengthComputable) {
|
||||
return _this.progress = 100 * evt.loaded / evt.total;
|
||||
} else {
|
||||
return _this.progress = _this.progress + (100 - _this.progress) / 2;
|
||||
}
|
||||
}, false);
|
||||
_ref2 = ['load', 'abort', 'timeout', 'error'];
|
||||
for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
|
||||
event = _ref2[_j];
|
||||
request.addEventListener(event, function() {
|
||||
return _this.progress = 100;
|
||||
}, false);
|
||||
}
|
||||
} else {
|
||||
_onreadystatechange = request.onreadystatechange;
|
||||
request.onreadystatechange = function() {
|
||||
var _ref3;
|
||||
if ((_ref3 = request.readyState) === 0 || _ref3 === 4) {
|
||||
_this.progress = 100;
|
||||
} else if (request.readyState === 3) {
|
||||
_this.progress = 50;
|
||||
}
|
||||
return typeof _onreadystatechange === "function" ? _onreadystatechange.apply(null, arguments) : void 0;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
return XHRRequestTracker;
|
||||
|
||||
})();
|
||||
|
||||
SocketRequestTracker = (function() {
|
||||
function SocketRequestTracker(request) {
|
||||
var event, _j, _len1, _ref2,
|
||||
_this = this;
|
||||
this.progress = 0;
|
||||
_ref2 = ['error', 'open'];
|
||||
for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
|
||||
event = _ref2[_j];
|
||||
request.addEventListener(event, function() {
|
||||
return _this.progress = 100;
|
||||
}, false);
|
||||
}
|
||||
}
|
||||
|
||||
return SocketRequestTracker;
|
||||
|
||||
})();
|
||||
|
||||
ElementMonitor = (function() {
|
||||
function ElementMonitor(options) {
|
||||
var selector, _j, _len1, _ref2;
|
||||
if (options == null) {
|
||||
options = {};
|
||||
}
|
||||
this.elements = [];
|
||||
if (options.selectors == null) {
|
||||
options.selectors = [];
|
||||
}
|
||||
_ref2 = options.selectors;
|
||||
for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
|
||||
selector = _ref2[_j];
|
||||
this.elements.push(new ElementTracker(selector));
|
||||
}
|
||||
}
|
||||
|
||||
return ElementMonitor;
|
||||
|
||||
})();
|
||||
|
||||
ElementTracker = (function() {
|
||||
function ElementTracker(selector) {
|
||||
this.selector = selector;
|
||||
this.progress = 0;
|
||||
this.check();
|
||||
}
|
||||
|
||||
ElementTracker.prototype.check = function() {
|
||||
var _this = this;
|
||||
if (document.querySelector(this.selector)) {
|
||||
return this.done();
|
||||
} else {
|
||||
return setTimeout((function() {
|
||||
return _this.check();
|
||||
}), options.elements.checkInterval);
|
||||
}
|
||||
};
|
||||
|
||||
ElementTracker.prototype.done = function() {
|
||||
return this.progress = 100;
|
||||
};
|
||||
|
||||
return ElementTracker;
|
||||
|
||||
})();
|
||||
|
||||
DocumentMonitor = (function() {
|
||||
DocumentMonitor.prototype.states = {
|
||||
loading: 0,
|
||||
interactive: 50,
|
||||
complete: 100
|
||||
};
|
||||
|
||||
function DocumentMonitor() {
|
||||
var _onreadystatechange, _ref2,
|
||||
_this = this;
|
||||
this.progress = (_ref2 = this.states[document.readyState]) != null ? _ref2 : 100;
|
||||
_onreadystatechange = document.onreadystatechange;
|
||||
document.onreadystatechange = function() {
|
||||
if (_this.states[document.readyState] != null) {
|
||||
_this.progress = _this.states[document.readyState];
|
||||
}
|
||||
return typeof _onreadystatechange === "function" ? _onreadystatechange.apply(null, arguments) : void 0;
|
||||
};
|
||||
}
|
||||
|
||||
return DocumentMonitor;
|
||||
|
||||
})();
|
||||
|
||||
EventLagMonitor = (function() {
|
||||
function EventLagMonitor() {
|
||||
var avg, interval, last, points, samples,
|
||||
_this = this;
|
||||
this.progress = 0;
|
||||
avg = 0;
|
||||
samples = [];
|
||||
points = 0;
|
||||
last = now();
|
||||
interval = setInterval(function() {
|
||||
var diff;
|
||||
diff = now() - last - 50;
|
||||
last = now();
|
||||
samples.push(diff);
|
||||
if (samples.length > options.eventLag.sampleCount) {
|
||||
samples.shift();
|
||||
}
|
||||
avg = avgAmplitude(samples);
|
||||
if (++points >= options.eventLag.minSamples && avg < options.eventLag.lagThreshold) {
|
||||
_this.progress = 100;
|
||||
return clearInterval(interval);
|
||||
} else {
|
||||
return _this.progress = 100 * (3 / (avg + 3));
|
||||
}
|
||||
}, 50);
|
||||
}
|
||||
|
||||
return EventLagMonitor;
|
||||
|
||||
})();
|
||||
|
||||
Scaler = (function() {
|
||||
function Scaler(source) {
|
||||
this.source = source;
|
||||
this.last = this.sinceLastUpdate = 0;
|
||||
this.rate = options.initialRate;
|
||||
this.catchup = 0;
|
||||
this.progress = this.lastProgress = 0;
|
||||
if (this.source != null) {
|
||||
this.progress = result(this.source, 'progress');
|
||||
}
|
||||
}
|
||||
|
||||
Scaler.prototype.tick = function(frameTime, val) {
|
||||
var scaling;
|
||||
if (val == null) {
|
||||
val = result(this.source, 'progress');
|
||||
}
|
||||
if (val >= 100) {
|
||||
this.done = true;
|
||||
}
|
||||
if (val === this.last) {
|
||||
this.sinceLastUpdate += frameTime;
|
||||
} else {
|
||||
if (this.sinceLastUpdate) {
|
||||
this.rate = (val - this.last) / this.sinceLastUpdate;
|
||||
}
|
||||
this.catchup = (val - this.progress) / options.catchupTime;
|
||||
this.sinceLastUpdate = 0;
|
||||
this.last = val;
|
||||
}
|
||||
if (val > this.progress) {
|
||||
this.progress += this.catchup * frameTime;
|
||||
}
|
||||
scaling = 1 - Math.pow(this.progress / 100, options.easeFactor);
|
||||
this.progress += scaling * this.rate * frameTime;
|
||||
this.progress = Math.min(this.lastProgress + options.maxProgressPerFrame, this.progress);
|
||||
this.progress = Math.max(0, this.progress);
|
||||
this.progress = Math.min(100, this.progress);
|
||||
this.lastProgress = this.progress;
|
||||
return this.progress;
|
||||
};
|
||||
|
||||
return Scaler;
|
||||
|
||||
})();
|
||||
|
||||
sources = null;
|
||||
|
||||
scalers = null;
|
||||
|
||||
bar = null;
|
||||
|
||||
uniScaler = null;
|
||||
|
||||
animation = null;
|
||||
|
||||
cancelAnimation = null;
|
||||
|
||||
Pace.running = false;
|
||||
|
||||
handlePushState = function() {
|
||||
if (options.restartOnPushState) {
|
||||
return Pace.restart();
|
||||
}
|
||||
};
|
||||
|
||||
if (window.history.pushState != null) {
|
||||
_pushState = window.history.pushState;
|
||||
window.history.pushState = function() {
|
||||
handlePushState();
|
||||
return _pushState.apply(window.history, arguments);
|
||||
};
|
||||
}
|
||||
|
||||
if (window.history.replaceState != null) {
|
||||
_replaceState = window.history.replaceState;
|
||||
window.history.replaceState = function() {
|
||||
handlePushState();
|
||||
return _replaceState.apply(window.history, arguments);
|
||||
};
|
||||
}
|
||||
|
||||
SOURCE_KEYS = {
|
||||
ajax: AjaxMonitor,
|
||||
elements: ElementMonitor,
|
||||
document: DocumentMonitor,
|
||||
eventLag: EventLagMonitor
|
||||
};
|
||||
|
||||
(init = function() {
|
||||
var type, _j, _k, _len1, _len2, _ref2, _ref3, _ref4;
|
||||
Pace.sources = sources = [];
|
||||
_ref2 = ['ajax', 'elements', 'document', 'eventLag'];
|
||||
for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
|
||||
type = _ref2[_j];
|
||||
if (options[type] !== false) {
|
||||
sources.push(new SOURCE_KEYS[type](options[type]));
|
||||
}
|
||||
}
|
||||
_ref4 = (_ref3 = options.extraSources) != null ? _ref3 : [];
|
||||
for (_k = 0, _len2 = _ref4.length; _k < _len2; _k++) {
|
||||
source = _ref4[_k];
|
||||
sources.push(new source(options));
|
||||
}
|
||||
Pace.bar = bar = new Bar;
|
||||
scalers = [];
|
||||
return uniScaler = new Scaler;
|
||||
})();
|
||||
|
||||
Pace.stop = function() {
|
||||
Pace.trigger('stop');
|
||||
Pace.running = false;
|
||||
bar.destroy();
|
||||
cancelAnimation = true;
|
||||
if (animation != null) {
|
||||
if (typeof cancelAnimationFrame === "function") {
|
||||
cancelAnimationFrame(animation);
|
||||
}
|
||||
animation = null;
|
||||
}
|
||||
return init();
|
||||
};
|
||||
|
||||
Pace.restart = function() {
|
||||
Pace.trigger('restart');
|
||||
Pace.stop();
|
||||
return Pace.start();
|
||||
};
|
||||
|
||||
Pace.go = function() {
|
||||
var start;
|
||||
Pace.running = true;
|
||||
bar.render();
|
||||
start = now();
|
||||
cancelAnimation = false;
|
||||
return animation = runAnimation(function(frameTime, enqueueNextFrame) {
|
||||
var avg, count, done, element, elements, i, j, remaining, scaler, scalerList, sum, _j, _k, _len1, _len2, _ref2;
|
||||
remaining = 100 - bar.progress;
|
||||
count = sum = 0;
|
||||
done = true;
|
||||
for (i = _j = 0, _len1 = sources.length; _j < _len1; i = ++_j) {
|
||||
source = sources[i];
|
||||
scalerList = scalers[i] != null ? scalers[i] : scalers[i] = [];
|
||||
elements = (_ref2 = source.elements) != null ? _ref2 : [source];
|
||||
for (j = _k = 0, _len2 = elements.length; _k < _len2; j = ++_k) {
|
||||
element = elements[j];
|
||||
scaler = scalerList[j] != null ? scalerList[j] : scalerList[j] = new Scaler(element);
|
||||
done &= scaler.done;
|
||||
if (scaler.done) {
|
||||
continue;
|
||||
}
|
||||
count++;
|
||||
sum += scaler.tick(frameTime);
|
||||
}
|
||||
}
|
||||
avg = sum / count;
|
||||
bar.update(uniScaler.tick(frameTime, avg));
|
||||
if (bar.done() || done || cancelAnimation) {
|
||||
bar.update(100);
|
||||
Pace.trigger('done');
|
||||
return setTimeout(function() {
|
||||
bar.finish();
|
||||
Pace.running = false;
|
||||
return Pace.trigger('hide');
|
||||
}, Math.max(options.ghostTime, Math.max(options.minTime - (now() - start), 0)));
|
||||
} else {
|
||||
return enqueueNextFrame();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Pace.start = function(_options) {
|
||||
extend(options, _options);
|
||||
Pace.running = true;
|
||||
try {
|
||||
bar.render();
|
||||
} catch (_error) {
|
||||
NoTargetError = _error;
|
||||
}
|
||||
if (!document.querySelector('.pace')) {
|
||||
return setTimeout(Pace.start, 50);
|
||||
} else {
|
||||
Pace.trigger('start');
|
||||
return Pace.go();
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
define(['pace'], function() {
|
||||
return Pace;
|
||||
});
|
||||
} else if (typeof exports === 'object') {
|
||||
module.exports = Pace;
|
||||
} else {
|
||||
if (options.startOnPageLoad) {
|
||||
Pace.start();
|
||||
}
|
||||
}
|
||||
|
||||
}).call(this);
|
||||
2
public/bower_components/PACE/pace.min.js
vendored
Executable file
2
public/bower_components/PACE/pace.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
83
public/bower_components/PACE/themes/black/pace-theme-barber-shop.css
vendored
Executable file
83
public/bower_components/PACE/themes/black/pace-theme-barber-shop.css
vendored
Executable file
@@ -0,0 +1,83 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
overflow: hidden;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 2000;
|
||||
width: 100%;
|
||||
height: 12px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.pace-inactive {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
background-color: #000000;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
right: 100%;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.pace .pace-activity {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: -32px;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
-moz-transform: translate3d(0, 0, 0);
|
||||
-ms-transform: translate3d(0, 0, 0);
|
||||
-o-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
|
||||
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.2)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.2)), color-stop(0.75, rgba(255, 255, 255, 0.2)), color-stop(0.75, transparent), to(transparent));
|
||||
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);
|
||||
background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);
|
||||
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);
|
||||
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);
|
||||
-webkit-background-size: 32px 32px;
|
||||
-moz-background-size: 32px 32px;
|
||||
-o-background-size: 32px 32px;
|
||||
background-size: 32px 32px;
|
||||
|
||||
-webkit-animation: pace-theme-barber-shop-motion 500ms linear infinite;
|
||||
-moz-animation: pace-theme-barber-shop-motion 500ms linear infinite;
|
||||
-ms-animation: pace-theme-barber-shop-motion 500ms linear infinite;
|
||||
-o-animation: pace-theme-barber-shop-motion 500ms linear infinite;
|
||||
animation: pace-theme-barber-shop-motion 500ms linear infinite;
|
||||
}
|
||||
|
||||
@-webkit-keyframes pace-theme-barber-shop-motion {
|
||||
0% { -webkit-transform: none; transform: none; }
|
||||
100% { -webkit-transform: translate(-32px, 0); transform: translate(-32px, 0); }
|
||||
}
|
||||
@-moz-keyframes pace-theme-barber-shop-motion {
|
||||
0% { -moz-transform: none; transform: none; }
|
||||
100% { -moz-transform: translate(-32px, 0); transform: translate(-32px, 0); }
|
||||
}
|
||||
@-o-keyframes pace-theme-barber-shop-motion {
|
||||
0% { -o-transform: none; transform: none; }
|
||||
100% { -o-transform: translate(-32px, 0); transform: translate(-32px, 0); }
|
||||
}
|
||||
@-ms-keyframes pace-theme-barber-shop-motion {
|
||||
0% { -ms-transform: none; transform: none; }
|
||||
100% { -ms-transform: translate(-32px, 0); transform: translate(-32px, 0); }
|
||||
}
|
||||
@keyframes pace-theme-barber-shop-motion {
|
||||
0% { transform: none; transform: none; }
|
||||
100% { transform: translate(-32px, 0); transform: translate(-32px, 0); }
|
||||
}
|
||||
40
public/bower_components/PACE/themes/black/pace-theme-big-counter.css
vendored
Executable file
40
public/bower_components/PACE/themes/black/pace-theme-big-counter.css
vendored
Executable file
@@ -0,0 +1,40 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.pace.pace-inactive .pace-progress {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
top: 0;
|
||||
right: 0;
|
||||
height: 5rem;
|
||||
width: 5rem;
|
||||
|
||||
-webkit-transform: translate3d(0, 0, 0) !important;
|
||||
-ms-transform: translate3d(0, 0, 0) !important;
|
||||
transform: translate3d(0, 0, 0) !important;
|
||||
}
|
||||
|
||||
.pace .pace-progress:after {
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: .5rem;
|
||||
content: attr(data-progress-text);
|
||||
font-family: "Helvetica Neue", sans-serif;
|
||||
font-weight: 100;
|
||||
font-size: 5rem;
|
||||
line-height: 1;
|
||||
text-align: right;
|
||||
color: rgba(0, 0, 0, 0.19999999999999996);
|
||||
}
|
||||
231
public/bower_components/PACE/themes/black/pace-theme-bounce.css
vendored
Executable file
231
public/bower_components/PACE/themes/black/pace-theme-bounce.css
vendored
Executable file
@@ -0,0 +1,231 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
width: 140px;
|
||||
height: 300px;
|
||||
position: fixed;
|
||||
top: -90px;
|
||||
right: -20px;
|
||||
z-index: 2000;
|
||||
-webkit-transform: scale(0);
|
||||
-moz-transform: scale(0);
|
||||
-ms-transform: scale(0);
|
||||
-o-transform: scale(0);
|
||||
transform: scale(0);
|
||||
opacity: 0;
|
||||
-webkit-transition: all 2s linear 0s;
|
||||
-moz-transition: all 2s linear 0s;
|
||||
transition: all 2s linear 0s;
|
||||
}
|
||||
|
||||
.pace.pace-active {
|
||||
-webkit-transform: scale(.25);
|
||||
-moz-transform: scale(.25);
|
||||
-ms-transform: scale(.25);
|
||||
-o-transform: scale(.25);
|
||||
transform: scale(.25);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.pace .pace-activity {
|
||||
width: 140px;
|
||||
height: 140px;
|
||||
border-radius: 70px;
|
||||
background: #000000;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
z-index: 1911;
|
||||
-webkit-animation: pace-bounce 1s infinite;
|
||||
-moz-animation: pace-bounce 1s infinite;
|
||||
-o-animation: pace-bounce 1s infinite;
|
||||
-ms-animation: pace-bounce 1s infinite;
|
||||
animation: pace-bounce 1s infinite;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
position: absolute;
|
||||
display: block;
|
||||
left: 50%;
|
||||
bottom: 0;
|
||||
z-index: 1910;
|
||||
margin-left: -30px;
|
||||
width: 60px;
|
||||
height: 75px;
|
||||
background: rgba(20, 20, 20, .1);
|
||||
box-shadow: 0 0 20px 35px rgba(20, 20, 20, .1);
|
||||
border-radius: 30px / 40px;
|
||||
-webkit-transform: scaleY(.3) !important;
|
||||
-moz-transform: scaleY(.3) !important;
|
||||
-ms-transform: scaleY(.3) !important;
|
||||
-o-transform: scaleY(.3) !important;
|
||||
transform: scaleY(.3) !important;
|
||||
-webkit-animation: pace-compress .5s infinite alternate;
|
||||
-moz-animation: pace-compress .5s infinite alternate;
|
||||
-o-animation: pace-compress .5s infinite alternate;
|
||||
-ms-animation: pace-compress .5s infinite alternate;
|
||||
animation: pace-compress .5s infinite alternate;
|
||||
}
|
||||
|
||||
@-webkit-keyframes pace-bounce {
|
||||
0% {
|
||||
top: 0;
|
||||
-webkit-animation-timing-function: ease-in;
|
||||
}
|
||||
40% {}
|
||||
50% {
|
||||
top: 140px;
|
||||
height: 140px;
|
||||
-webkit-animation-timing-function: ease-out;
|
||||
}
|
||||
55% {
|
||||
top: 160px;
|
||||
height: 120px;
|
||||
border-radius: 70px / 60px;
|
||||
-webkit-animation-timing-function: ease-in;
|
||||
}
|
||||
65% {
|
||||
top: 120px;
|
||||
height: 140px;
|
||||
border-radius: 70px;
|
||||
-webkit-animation-timing-function: ease-out;
|
||||
}
|
||||
95% {
|
||||
top: 0;
|
||||
-webkit-animation-timing-function: ease-in;
|
||||
}
|
||||
100% {
|
||||
top: 0;
|
||||
-webkit-animation-timing-function: ease-in;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-keyframes pace-bounce {
|
||||
0% {
|
||||
top: 0;
|
||||
-moz-animation-timing-function: ease-in;
|
||||
}
|
||||
40% {}
|
||||
50% {
|
||||
top: 140px;
|
||||
height: 140px;
|
||||
-moz-animation-timing-function: ease-out;
|
||||
}
|
||||
55% {
|
||||
top: 160px;
|
||||
height: 120px;
|
||||
border-radius: 70px / 60px;
|
||||
-moz-animation-timing-function: ease-in;
|
||||
}
|
||||
65% {
|
||||
top: 120px;
|
||||
height: 140px;
|
||||
border-radius: 70px;
|
||||
-moz-animation-timing-function: ease-out;}
|
||||
95% {
|
||||
top: 0;
|
||||
-moz-animation-timing-function: ease-in;
|
||||
}
|
||||
100% {top: 0;
|
||||
-moz-animation-timing-function: ease-in;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes pace-bounce {
|
||||
0% {
|
||||
top: 0;
|
||||
animation-timing-function: ease-in;
|
||||
}
|
||||
50% {
|
||||
top: 140px;
|
||||
height: 140px;
|
||||
animation-timing-function: ease-out;
|
||||
}
|
||||
55% {
|
||||
top: 160px;
|
||||
height: 120px;
|
||||
border-radius: 70px / 60px;
|
||||
animation-timing-function: ease-in;
|
||||
}
|
||||
65% {
|
||||
top: 120px;
|
||||
height: 140px;
|
||||
border-radius: 70px;
|
||||
animation-timing-function: ease-out;
|
||||
}
|
||||
95% {
|
||||
top: 0;
|
||||
animation-timing-function: ease-in;
|
||||
}
|
||||
100% {
|
||||
top: 0;
|
||||
animation-timing-function: ease-in;
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes pace-compress {
|
||||
0% {
|
||||
bottom: 0;
|
||||
margin-left: -30px;
|
||||
width: 60px;
|
||||
height: 75px;
|
||||
background: rgba(20, 20, 20, .1);
|
||||
box-shadow: 0 0 20px 35px rgba(20, 20, 20, .1);
|
||||
border-radius: 30px / 40px;
|
||||
-webkit-animation-timing-function: ease-in;
|
||||
}
|
||||
100% {
|
||||
bottom: 30px;
|
||||
margin-left: -10px;
|
||||
width: 20px;
|
||||
height: 5px;
|
||||
background: rgba(20, 20, 20, .3);
|
||||
box-shadow: 0 0 20px 35px rgba(20, 20, 20, .3);
|
||||
border-radius: 20px / 20px;
|
||||
-webkit-animation-timing-function: ease-out;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-keyframes pace-compress {
|
||||
0% {
|
||||
bottom: 0;
|
||||
margin-left: -30px;
|
||||
width: 60px;
|
||||
height: 75px;
|
||||
background: rgba(20, 20, 20, .1);
|
||||
box-shadow: 0 0 20px 35px rgba(20, 20, 20, .1);
|
||||
border-radius: 30px / 40px;
|
||||
-moz-animation-timing-function: ease-in;
|
||||
}
|
||||
100% {
|
||||
bottom: 30px;
|
||||
margin-left: -10px;
|
||||
width: 20px;
|
||||
height: 5px;
|
||||
background: rgba(20, 20, 20, .3);
|
||||
box-shadow: 0 0 20px 35px rgba(20, 20, 20, .3);
|
||||
border-radius: 20px / 20px;
|
||||
-moz-animation-timing-function: ease-out;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes pace-compress {
|
||||
0% {
|
||||
bottom: 0;
|
||||
margin-left: -30px;
|
||||
width: 60px;
|
||||
height: 75px;
|
||||
background: rgba(20, 20, 20, .1);
|
||||
box-shadow: 0 0 20px 35px rgba(20, 20, 20, .1);
|
||||
border-radius: 30px / 40px;
|
||||
animation-timing-function: ease-in;
|
||||
}
|
||||
100% {
|
||||
bottom: 30px;
|
||||
margin-left: -10px;
|
||||
width: 20px;
|
||||
height: 5px;
|
||||
background: rgba(20, 20, 20, .3);
|
||||
box-shadow: 0 0 20px 35px rgba(20, 20, 20, .3);
|
||||
border-radius: 20px / 20px;
|
||||
animation-timing-function: ease-out;
|
||||
}
|
||||
}
|
||||
131
public/bower_components/PACE/themes/black/pace-theme-center-atom.css
vendored
Executable file
131
public/bower_components/PACE/themes/black/pace-theme-center-atom.css
vendored
Executable file
@@ -0,0 +1,131 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace.pace-inactive {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
z-index: 2000;
|
||||
position: fixed;
|
||||
height: 60px;
|
||||
width: 100px;
|
||||
margin: auto;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
z-index: 2000;
|
||||
position: absolute;
|
||||
height: 60px;
|
||||
width: 100px;
|
||||
|
||||
-webkit-transform: translate3d(0, 0, 0) !important;
|
||||
-ms-transform: translate3d(0, 0, 0) !important;
|
||||
transform: translate3d(0, 0, 0) !important;
|
||||
}
|
||||
|
||||
.pace .pace-progress:before {
|
||||
content: attr(data-progress-text);
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
background: #000000;
|
||||
border-radius: 50%;
|
||||
font-family: "Helvetica Neue", sans-serif;
|
||||
font-size: 14px;
|
||||
font-weight: 100;
|
||||
line-height: 1;
|
||||
padding: 20% 0 7px;
|
||||
width: 50%;
|
||||
height: 40%;
|
||||
margin: 10px 0 0 30px;
|
||||
display: block;
|
||||
z-index: 999;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.pace .pace-activity {
|
||||
font-size: 15px;
|
||||
line-height: 1;
|
||||
z-index: 2000;
|
||||
position: absolute;
|
||||
height: 60px;
|
||||
width: 100px;
|
||||
|
||||
display: block;
|
||||
-webkit-animation: pace-theme-center-atom-spin 2s linear infinite;
|
||||
-moz-animation: pace-theme-center-atom-spin 2s linear infinite;
|
||||
-o-animation: pace-theme-center-atom-spin 2s linear infinite;
|
||||
animation: pace-theme-center-atom-spin 2s linear infinite;
|
||||
}
|
||||
|
||||
.pace .pace-activity {
|
||||
border-radius: 50%;
|
||||
border: 5px solid #000000;
|
||||
content: ' ';
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 60px;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
.pace .pace-activity:after {
|
||||
border-radius: 50%;
|
||||
border: 5px solid #000000;
|
||||
content: ' ';
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: -5px;
|
||||
left: -5px;
|
||||
height: 60px;
|
||||
width: 100px;
|
||||
|
||||
-webkit-transform: rotate(60deg);
|
||||
-moz-transform: rotate(60deg);
|
||||
-o-transform: rotate(60deg);
|
||||
transform: rotate(60deg);
|
||||
}
|
||||
|
||||
.pace .pace-activity:before {
|
||||
border-radius: 50%;
|
||||
border: 5px solid #000000;
|
||||
content: ' ';
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: -5px;
|
||||
left: -5px;
|
||||
height: 60px;
|
||||
width: 100px;
|
||||
|
||||
-webkit-transform: rotate(120deg);
|
||||
-moz-transform: rotate(120deg);
|
||||
-o-transform: rotate(120deg);
|
||||
transform: rotate(120deg);
|
||||
}
|
||||
|
||||
@-webkit-keyframes pace-theme-center-atom-spin {
|
||||
0% { -webkit-transform: rotate(0deg) }
|
||||
100% { -webkit-transform: rotate(359deg) }
|
||||
}
|
||||
@-moz-keyframes pace-theme-center-atom-spin {
|
||||
0% { -moz-transform: rotate(0deg) }
|
||||
100% { -moz-transform: rotate(359deg) }
|
||||
}
|
||||
@-o-keyframes pace-theme-center-atom-spin {
|
||||
0% { -o-transform: rotate(0deg) }
|
||||
100% { -o-transform: rotate(359deg) }
|
||||
}
|
||||
@keyframes pace-theme-center-atom-spin {
|
||||
0% { transform: rotate(0deg) }
|
||||
100% { transform: rotate(359deg) }
|
||||
}
|
||||
90
public/bower_components/PACE/themes/black/pace-theme-center-circle.css
vendored
Executable file
90
public/bower_components/PACE/themes/black/pace-theme-center-circle.css
vendored
Executable file
@@ -0,0 +1,90 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
-webkit-perspective: 12rem;
|
||||
-moz-perspective: 12rem;
|
||||
-ms-perspective: 12rem;
|
||||
-o-perspective: 12rem;
|
||||
perspective: 12rem;
|
||||
|
||||
z-index: 2000;
|
||||
position: fixed;
|
||||
height: 6rem;
|
||||
width: 6rem;
|
||||
margin: auto;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.pace.pace-inactive .pace-progress {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
height: 6rem;
|
||||
width: 6rem !important;
|
||||
line-height: 6rem;
|
||||
font-size: 2rem;
|
||||
border-radius: 50%;
|
||||
background: rgba(0, 0, 0, 0.8);
|
||||
color: #fff;
|
||||
font-family: "Helvetica Neue", sans-serif;
|
||||
font-weight: 100;
|
||||
text-align: center;
|
||||
|
||||
-webkit-animation: pace-theme-center-circle-spin linear infinite 2s;
|
||||
-moz-animation: pace-theme-center-circle-spin linear infinite 2s;
|
||||
-ms-animation: pace-theme-center-circle-spin linear infinite 2s;
|
||||
-o-animation: pace-theme-center-circle-spin linear infinite 2s;
|
||||
animation: pace-theme-center-circle-spin linear infinite 2s;
|
||||
|
||||
-webkit-transform-style: preserve-3d;
|
||||
-moz-transform-style: preserve-3d;
|
||||
-ms-transform-style: preserve-3d;
|
||||
-o-transform-style: preserve-3d;
|
||||
transform-style: preserve-3d;
|
||||
}
|
||||
|
||||
.pace .pace-progress:after {
|
||||
content: attr(data-progress-text);
|
||||
display: block;
|
||||
}
|
||||
|
||||
@-webkit-keyframes pace-theme-center-circle-spin {
|
||||
from { -webkit-transform: rotateY(0deg) }
|
||||
to { -webkit-transform: rotateY(360deg) }
|
||||
}
|
||||
|
||||
@-moz-keyframes pace-theme-center-circle-spin {
|
||||
from { -moz-transform: rotateY(0deg) }
|
||||
to { -moz-transform: rotateY(360deg) }
|
||||
}
|
||||
|
||||
@-ms-keyframes pace-theme-center-circle-spin {
|
||||
from { -ms-transform: rotateY(0deg) }
|
||||
to { -ms-transform: rotateY(360deg) }
|
||||
}
|
||||
|
||||
@-o-keyframes pace-theme-center-circle-spin {
|
||||
from { -o-transform: rotateY(0deg) }
|
||||
to { -o-transform: rotateY(360deg) }
|
||||
}
|
||||
|
||||
@keyframes pace-theme-center-circle-spin {
|
||||
from { transform: rotateY(0deg) }
|
||||
to { transform: rotateY(360deg) }
|
||||
}
|
||||
74
public/bower_components/PACE/themes/black/pace-theme-center-radar.css
vendored
Executable file
74
public/bower_components/PACE/themes/black/pace-theme-center-radar.css
vendored
Executable file
@@ -0,0 +1,74 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
z-index: 2000;
|
||||
position: fixed;
|
||||
height: 90px;
|
||||
width: 90px;
|
||||
margin: auto;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.pace.pace-inactive .pace-activity {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pace .pace-activity {
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: -30px;
|
||||
top: -30px;
|
||||
height: 90px;
|
||||
width: 90px;
|
||||
display: block;
|
||||
border-width: 30px;
|
||||
border-style: double;
|
||||
border-color: #000000 transparent transparent;
|
||||
border-radius: 50%;
|
||||
|
||||
-webkit-animation: spin 1s linear infinite;
|
||||
-moz-animation: spin 1s linear infinite;
|
||||
-o-animation: spin 1s linear infinite;
|
||||
animation: spin 1s linear infinite;
|
||||
}
|
||||
|
||||
.pace .pace-activity:before {
|
||||
content: ' ';
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 10px;
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
display: block;
|
||||
border-width: 10px;
|
||||
border-style: solid;
|
||||
border-color: #000000 transparent transparent;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
@-webkit-keyframes spin {
|
||||
100% { -webkit-transform: rotate(359deg); }
|
||||
}
|
||||
|
||||
@-moz-keyframes spin {
|
||||
100% { -moz-transform: rotate(359deg); }
|
||||
}
|
||||
|
||||
@-o-keyframes spin {
|
||||
100% { -moz-transform: rotate(359deg); }
|
||||
}
|
||||
|
||||
@keyframes spin {
|
||||
100% { transform: rotate(359deg); }
|
||||
}
|
||||
52
public/bower_components/PACE/themes/black/pace-theme-center-simple.css
vendored
Executable file
52
public/bower_components/PACE/themes/black/pace-theme-center-simple.css
vendored
Executable file
@@ -0,0 +1,52 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
z-index: 2000;
|
||||
position: fixed;
|
||||
margin: auto;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
height: 5px;
|
||||
width: 200px;
|
||||
background: #fff;
|
||||
border: 1px solid #000000;
|
||||
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
-ms-box-sizing: border-box;
|
||||
-o-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
-moz-transform: translate3d(0, 0, 0);
|
||||
-ms-transform: translate3d(0, 0, 0);
|
||||
-o-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
|
||||
max-width: 200px;
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 100%;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
background: #000000;
|
||||
}
|
||||
|
||||
.pace.pace-inactive {
|
||||
display: none;
|
||||
}
|
||||
73
public/bower_components/PACE/themes/black/pace-theme-corner-indicator.css
vendored
Executable file
73
public/bower_components/PACE/themes/black/pace-theme-corner-indicator.css
vendored
Executable file
@@ -0,0 +1,73 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.pace .pace-activity {
|
||||
display: block;
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: 300px;
|
||||
height: 300px;
|
||||
background: #000000;
|
||||
-webkit-transition: -webkit-transform 0.3s;
|
||||
transition: transform 0.3s;
|
||||
-webkit-transform: translateX(100%) translateY(-100%) rotate(45deg);
|
||||
transform: translateX(100%) translateY(-100%) rotate(45deg);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.pace.pace-active .pace-activity {
|
||||
-webkit-transform: translateX(50%) translateY(-50%) rotate(45deg);
|
||||
transform: translateX(50%) translateY(-50%) rotate(45deg);
|
||||
}
|
||||
|
||||
.pace .pace-activity::before,
|
||||
.pace .pace-activity::after {
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
position: absolute;
|
||||
bottom: 30px;
|
||||
left: 50%;
|
||||
display: block;
|
||||
border: 5px solid #fff;
|
||||
border-radius: 50%;
|
||||
content: '';
|
||||
}
|
||||
|
||||
.pace .pace-activity::before {
|
||||
margin-left: -40px;
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
border-right-color: rgba(0, 0, 0, .2);
|
||||
border-left-color: rgba(0, 0, 0, .2);
|
||||
-webkit-animation: pace-theme-corner-indicator-spin 3s linear infinite;
|
||||
animation: pace-theme-corner-indicator-spin 3s linear infinite;
|
||||
}
|
||||
|
||||
.pace .pace-activity::after {
|
||||
bottom: 50px;
|
||||
margin-left: -20px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border-top-color: rgba(0, 0, 0, .2);
|
||||
border-bottom-color: rgba(0, 0, 0, .2);
|
||||
-webkit-animation: pace-theme-corner-indicator-spin 1s linear infinite;
|
||||
animation: pace-theme-corner-indicator-spin 1s linear infinite;
|
||||
}
|
||||
|
||||
@-webkit-keyframes pace-theme-corner-indicator-spin {
|
||||
0% { -webkit-transform: rotate(0deg); }
|
||||
100% { -webkit-transform: rotate(359deg); }
|
||||
}
|
||||
@keyframes pace-theme-corner-indicator-spin {
|
||||
0% { transform: rotate(0deg); }
|
||||
100% { transform: rotate(359deg); }
|
||||
}
|
||||
22
public/bower_components/PACE/themes/black/pace-theme-fill-left.css
vendored
Executable file
22
public/bower_components/PACE/themes/black/pace-theme-fill-left.css
vendored
Executable file
@@ -0,0 +1,22 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.pace-inactive {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
background-color: rgba(0, 0, 0, 0.19999999999999996);
|
||||
position: fixed;
|
||||
z-index: -1;
|
||||
top: 0;
|
||||
right: 100%;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
}
|
||||
77
public/bower_components/PACE/themes/black/pace-theme-flash.css
vendored
Executable file
77
public/bower_components/PACE/themes/black/pace-theme-flash.css
vendored
Executable file
@@ -0,0 +1,77 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.pace-inactive {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
background: #000000;
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
top: 0;
|
||||
right: 100%;
|
||||
width: 100%;
|
||||
height: 2px;
|
||||
}
|
||||
|
||||
.pace .pace-progress-inner {
|
||||
display: block;
|
||||
position: absolute;
|
||||
right: 0px;
|
||||
width: 100px;
|
||||
height: 100%;
|
||||
box-shadow: 0 0 10px #000000, 0 0 5px #000000;
|
||||
opacity: 1.0;
|
||||
-webkit-transform: rotate(3deg) translate(0px, -4px);
|
||||
-moz-transform: rotate(3deg) translate(0px, -4px);
|
||||
-ms-transform: rotate(3deg) translate(0px, -4px);
|
||||
-o-transform: rotate(3deg) translate(0px, -4px);
|
||||
transform: rotate(3deg) translate(0px, -4px);
|
||||
}
|
||||
|
||||
.pace .pace-activity {
|
||||
display: block;
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
top: 15px;
|
||||
right: 15px;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
border: solid 2px transparent;
|
||||
border-top-color: #000000;
|
||||
border-left-color: #000000;
|
||||
border-radius: 10px;
|
||||
-webkit-animation: pace-spinner 400ms linear infinite;
|
||||
-moz-animation: pace-spinner 400ms linear infinite;
|
||||
-ms-animation: pace-spinner 400ms linear infinite;
|
||||
-o-animation: pace-spinner 400ms linear infinite;
|
||||
animation: pace-spinner 400ms linear infinite;
|
||||
}
|
||||
|
||||
@-webkit-keyframes pace-spinner {
|
||||
0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); }
|
||||
100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); }
|
||||
}
|
||||
@-moz-keyframes pace-spinner {
|
||||
0% { -moz-transform: rotate(0deg); transform: rotate(0deg); }
|
||||
100% { -moz-transform: rotate(360deg); transform: rotate(360deg); }
|
||||
}
|
||||
@-o-keyframes pace-spinner {
|
||||
0% { -o-transform: rotate(0deg); transform: rotate(0deg); }
|
||||
100% { -o-transform: rotate(360deg); transform: rotate(360deg); }
|
||||
}
|
||||
@-ms-keyframes pace-spinner {
|
||||
0% { -ms-transform: rotate(0deg); transform: rotate(0deg); }
|
||||
100% { -ms-transform: rotate(360deg); transform: rotate(360deg); }
|
||||
}
|
||||
@keyframes pace-spinner {
|
||||
0% { transform: rotate(0deg); transform: rotate(0deg); }
|
||||
100% { transform: rotate(360deg); transform: rotate(360deg); }
|
||||
}
|
||||
41
public/bower_components/PACE/themes/black/pace-theme-flat-top.css
vendored
Executable file
41
public/bower_components/PACE/themes/black/pace-theme-flat-top.css
vendored
Executable file
@@ -0,0 +1,41 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
|
||||
-webkit-transform: translate3d(0, -50px, 0);
|
||||
-ms-transform: translate3d(0, -50px, 0);
|
||||
transform: translate3d(0, -50px, 0);
|
||||
|
||||
-webkit-transition: -webkit-transform .5s ease-out;
|
||||
-ms-transition: -webkit-transform .5s ease-out;
|
||||
transition: transform .5s ease-out;
|
||||
}
|
||||
|
||||
.pace.pace-active {
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
-ms-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
display: block;
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
top: 0;
|
||||
right: 100%;
|
||||
width: 100%;
|
||||
height: 10px;
|
||||
background: #000000;
|
||||
|
||||
pointer-events: none;
|
||||
}
|
||||
198
public/bower_components/PACE/themes/black/pace-theme-loading-bar.css
vendored
Executable file
198
public/bower_components/PACE/themes/black/pace-theme-loading-bar.css
vendored
Executable file
@@ -0,0 +1,198 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
-ms-box-sizing: border-box;
|
||||
-o-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
|
||||
-webkit-border-radius: 10px;
|
||||
-moz-border-radius: 10px;
|
||||
border-radius: 10px;
|
||||
|
||||
-webkit-background-clip: padding-box;
|
||||
-moz-background-clip: padding;
|
||||
background-clip: padding-box;
|
||||
|
||||
z-index: 2000;
|
||||
position: fixed;
|
||||
margin: auto;
|
||||
top: 12px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
width: 200px;
|
||||
height: 50px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
-ms-box-sizing: border-box;
|
||||
-o-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
|
||||
-webkit-border-radius: 2px;
|
||||
-moz-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
|
||||
-webkit-background-clip: padding-box;
|
||||
-moz-background-clip: padding;
|
||||
background-clip: padding-box;
|
||||
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
|
||||
display: block;
|
||||
position: absolute;
|
||||
right: 100%;
|
||||
margin-right: -7px;
|
||||
width: 93%;
|
||||
top: 7px;
|
||||
height: 14px;
|
||||
font-size: 12px;
|
||||
background: #000000;
|
||||
color: #000000;
|
||||
line-height: 60px;
|
||||
font-weight: bold;
|
||||
font-family: Helvetica, Arial, "Lucida Grande", sans-serif;
|
||||
|
||||
-webkit-box-shadow: 120px 0 #fff, 240px 0 #fff;
|
||||
-ms-box-shadow: 120px 0 #fff, 240px 0 #fff;
|
||||
box-shadow: 120px 0 #fff, 240px 0 #fff;
|
||||
}
|
||||
|
||||
.pace .pace-progress:after {
|
||||
content: attr(data-progress-text);
|
||||
display: inline-block;
|
||||
position: fixed;
|
||||
width: 45px;
|
||||
text-align: right;
|
||||
right: 0;
|
||||
padding-right: 16px;
|
||||
top: 4px;
|
||||
}
|
||||
|
||||
.pace .pace-progress[data-progress-text="0%"]:after { right: -200px }
|
||||
.pace .pace-progress[data-progress-text="1%"]:after { right: -198.14px }
|
||||
.pace .pace-progress[data-progress-text="2%"]:after { right: -196.28px }
|
||||
.pace .pace-progress[data-progress-text="3%"]:after { right: -194.42px }
|
||||
.pace .pace-progress[data-progress-text="4%"]:after { right: -192.56px }
|
||||
.pace .pace-progress[data-progress-text="5%"]:after { right: -190.7px }
|
||||
.pace .pace-progress[data-progress-text="6%"]:after { right: -188.84px }
|
||||
.pace .pace-progress[data-progress-text="7%"]:after { right: -186.98px }
|
||||
.pace .pace-progress[data-progress-text="8%"]:after { right: -185.12px }
|
||||
.pace .pace-progress[data-progress-text="9%"]:after { right: -183.26px }
|
||||
.pace .pace-progress[data-progress-text="10%"]:after { right: -181.4px }
|
||||
.pace .pace-progress[data-progress-text="11%"]:after { right: -179.54px }
|
||||
.pace .pace-progress[data-progress-text="12%"]:after { right: -177.68px }
|
||||
.pace .pace-progress[data-progress-text="13%"]:after { right: -175.82px }
|
||||
.pace .pace-progress[data-progress-text="14%"]:after { right: -173.96px }
|
||||
.pace .pace-progress[data-progress-text="15%"]:after { right: -172.1px }
|
||||
.pace .pace-progress[data-progress-text="16%"]:after { right: -170.24px }
|
||||
.pace .pace-progress[data-progress-text="17%"]:after { right: -168.38px }
|
||||
.pace .pace-progress[data-progress-text="18%"]:after { right: -166.52px }
|
||||
.pace .pace-progress[data-progress-text="19%"]:after { right: -164.66px }
|
||||
.pace .pace-progress[data-progress-text="20%"]:after { right: -162.8px }
|
||||
.pace .pace-progress[data-progress-text="21%"]:after { right: -160.94px }
|
||||
.pace .pace-progress[data-progress-text="22%"]:after { right: -159.08px }
|
||||
.pace .pace-progress[data-progress-text="23%"]:after { right: -157.22px }
|
||||
.pace .pace-progress[data-progress-text="24%"]:after { right: -155.36px }
|
||||
.pace .pace-progress[data-progress-text="25%"]:after { right: -153.5px }
|
||||
.pace .pace-progress[data-progress-text="26%"]:after { right: -151.64px }
|
||||
.pace .pace-progress[data-progress-text="27%"]:after { right: -149.78px }
|
||||
.pace .pace-progress[data-progress-text="28%"]:after { right: -147.92px }
|
||||
.pace .pace-progress[data-progress-text="29%"]:after { right: -146.06px }
|
||||
.pace .pace-progress[data-progress-text="30%"]:after { right: -144.2px }
|
||||
.pace .pace-progress[data-progress-text="31%"]:after { right: -142.34px }
|
||||
.pace .pace-progress[data-progress-text="32%"]:after { right: -140.48px }
|
||||
.pace .pace-progress[data-progress-text="33%"]:after { right: -138.62px }
|
||||
.pace .pace-progress[data-progress-text="34%"]:after { right: -136.76px }
|
||||
.pace .pace-progress[data-progress-text="35%"]:after { right: -134.9px }
|
||||
.pace .pace-progress[data-progress-text="36%"]:after { right: -133.04px }
|
||||
.pace .pace-progress[data-progress-text="37%"]:after { right: -131.18px }
|
||||
.pace .pace-progress[data-progress-text="38%"]:after { right: -129.32px }
|
||||
.pace .pace-progress[data-progress-text="39%"]:after { right: -127.46px }
|
||||
.pace .pace-progress[data-progress-text="40%"]:after { right: -125.6px }
|
||||
.pace .pace-progress[data-progress-text="41%"]:after { right: -123.74px }
|
||||
.pace .pace-progress[data-progress-text="42%"]:after { right: -121.88px }
|
||||
.pace .pace-progress[data-progress-text="43%"]:after { right: -120.02px }
|
||||
.pace .pace-progress[data-progress-text="44%"]:after { right: -118.16px }
|
||||
.pace .pace-progress[data-progress-text="45%"]:after { right: -116.3px }
|
||||
.pace .pace-progress[data-progress-text="46%"]:after { right: -114.44px }
|
||||
.pace .pace-progress[data-progress-text="47%"]:after { right: -112.58px }
|
||||
.pace .pace-progress[data-progress-text="48%"]:after { right: -110.72px }
|
||||
.pace .pace-progress[data-progress-text="49%"]:after { right: -108.86px }
|
||||
.pace .pace-progress[data-progress-text="50%"]:after { right: -107px }
|
||||
.pace .pace-progress[data-progress-text="51%"]:after { right: -105.14px }
|
||||
.pace .pace-progress[data-progress-text="52%"]:after { right: -103.28px }
|
||||
.pace .pace-progress[data-progress-text="53%"]:after { right: -101.42px }
|
||||
.pace .pace-progress[data-progress-text="54%"]:after { right: -99.56px }
|
||||
.pace .pace-progress[data-progress-text="55%"]:after { right: -97.7px }
|
||||
.pace .pace-progress[data-progress-text="56%"]:after { right: -95.84px }
|
||||
.pace .pace-progress[data-progress-text="57%"]:after { right: -93.98px }
|
||||
.pace .pace-progress[data-progress-text="58%"]:after { right: -92.12px }
|
||||
.pace .pace-progress[data-progress-text="59%"]:after { right: -90.26px }
|
||||
.pace .pace-progress[data-progress-text="60%"]:after { right: -88.4px }
|
||||
.pace .pace-progress[data-progress-text="61%"]:after { right: -86.53999999999999px }
|
||||
.pace .pace-progress[data-progress-text="62%"]:after { right: -84.68px }
|
||||
.pace .pace-progress[data-progress-text="63%"]:after { right: -82.82px }
|
||||
.pace .pace-progress[data-progress-text="64%"]:after { right: -80.96000000000001px }
|
||||
.pace .pace-progress[data-progress-text="65%"]:after { right: -79.1px }
|
||||
.pace .pace-progress[data-progress-text="66%"]:after { right: -77.24px }
|
||||
.pace .pace-progress[data-progress-text="67%"]:after { right: -75.38px }
|
||||
.pace .pace-progress[data-progress-text="68%"]:after { right: -73.52px }
|
||||
.pace .pace-progress[data-progress-text="69%"]:after { right: -71.66px }
|
||||
.pace .pace-progress[data-progress-text="70%"]:after { right: -69.8px }
|
||||
.pace .pace-progress[data-progress-text="71%"]:after { right: -67.94px }
|
||||
.pace .pace-progress[data-progress-text="72%"]:after { right: -66.08px }
|
||||
.pace .pace-progress[data-progress-text="73%"]:after { right: -64.22px }
|
||||
.pace .pace-progress[data-progress-text="74%"]:after { right: -62.36px }
|
||||
.pace .pace-progress[data-progress-text="75%"]:after { right: -60.5px }
|
||||
.pace .pace-progress[data-progress-text="76%"]:after { right: -58.64px }
|
||||
.pace .pace-progress[data-progress-text="77%"]:after { right: -56.78px }
|
||||
.pace .pace-progress[data-progress-text="78%"]:after { right: -54.92px }
|
||||
.pace .pace-progress[data-progress-text="79%"]:after { right: -53.06px }
|
||||
.pace .pace-progress[data-progress-text="80%"]:after { right: -51.2px }
|
||||
.pace .pace-progress[data-progress-text="81%"]:after { right: -49.34px }
|
||||
.pace .pace-progress[data-progress-text="82%"]:after { right: -47.480000000000004px }
|
||||
.pace .pace-progress[data-progress-text="83%"]:after { right: -45.62px }
|
||||
.pace .pace-progress[data-progress-text="84%"]:after { right: -43.76px }
|
||||
.pace .pace-progress[data-progress-text="85%"]:after { right: -41.9px }
|
||||
.pace .pace-progress[data-progress-text="86%"]:after { right: -40.04px }
|
||||
.pace .pace-progress[data-progress-text="87%"]:after { right: -38.18px }
|
||||
.pace .pace-progress[data-progress-text="88%"]:after { right: -36.32px }
|
||||
.pace .pace-progress[data-progress-text="89%"]:after { right: -34.46px }
|
||||
.pace .pace-progress[data-progress-text="90%"]:after { right: -32.6px }
|
||||
.pace .pace-progress[data-progress-text="91%"]:after { right: -30.740000000000002px }
|
||||
.pace .pace-progress[data-progress-text="92%"]:after { right: -28.880000000000003px }
|
||||
.pace .pace-progress[data-progress-text="93%"]:after { right: -27.02px }
|
||||
.pace .pace-progress[data-progress-text="94%"]:after { right: -25.16px }
|
||||
.pace .pace-progress[data-progress-text="95%"]:after { right: -23.3px }
|
||||
.pace .pace-progress[data-progress-text="96%"]:after { right: -21.439999999999998px }
|
||||
.pace .pace-progress[data-progress-text="97%"]:after { right: -19.58px }
|
||||
.pace .pace-progress[data-progress-text="98%"]:after { right: -17.72px }
|
||||
.pace .pace-progress[data-progress-text="99%"]:after { right: -15.86px }
|
||||
.pace .pace-progress[data-progress-text="100%"]:after { right: -14px }
|
||||
|
||||
|
||||
.pace .pace-activity {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 28px;
|
||||
z-index: 2001;
|
||||
box-shadow: inset 0 0 0 2px #000000, inset 0 0 0 7px #FFF;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.pace.pace-inactive {
|
||||
display: none;
|
||||
}
|
||||
87
public/bower_components/PACE/themes/black/pace-theme-mac-osx.css
vendored
Executable file
87
public/bower_components/PACE/themes/black/pace-theme-mac-osx.css
vendored
Executable file
@@ -0,0 +1,87 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
overflow: hidden;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 2000;
|
||||
width: 100%;
|
||||
height: 12px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.pace-inactive {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
background-color: #000000;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 100%;
|
||||
width: 100%;
|
||||
height: 12px;
|
||||
overflow: hidden;
|
||||
|
||||
-webkit-border-radius: 0 0 4px 0;
|
||||
-moz-border-radius: 0 0 4px 0;
|
||||
-o-border-radius: 0 0 4px 0;
|
||||
border-radius: 0 0 4px 0;
|
||||
|
||||
-webkit-box-shadow: inset -1px 0 #000000, inset 0 -1px #000000, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, .3);
|
||||
-moz-box-shadow: inset -1px 0 #000000, inset 0 -1px #000000, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, .3);
|
||||
-o-box-shadow: inset -1px 0 #000000, inset 0 -1px #000000, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, .3);
|
||||
box-shadow: inset -1px 0 #000000, inset 0 -1px #000000, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, .3);
|
||||
}
|
||||
|
||||
.pace .pace-activity {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: -28px;
|
||||
bottom: 0;
|
||||
|
||||
-webkit-background-image: radial-gradient(rgba(255, 255, 255, .65) 0%, rgba(255, 255, 255, .15) 100%);
|
||||
-moz-background-image: radial-gradient(rgba(255, 255, 255, .65) 0%, rgba(255, 255, 255, .15) 100%);
|
||||
-o-background-image: radial-gradient(rgba(255, 255, 255, .65) 0%, rgba(255, 255, 255, .15) 100%);
|
||||
background-image: radial-gradient(rgba(255, 255, 255, .65) 0%, rgba(255, 255, 255, .15) 100%);
|
||||
|
||||
-webkit-background-size: 28px 100%;
|
||||
-moz-background-size: 28px 100%;
|
||||
-o-background-size: 28px 100%;
|
||||
background-size: 28px 100%;
|
||||
|
||||
-webkit-animation: pace-theme-mac-osx-motion 500ms linear infinite;
|
||||
-moz-animation: pace-theme-mac-osx-motion 500ms linear infinite;
|
||||
-ms-animation: pace-theme-mac-osx-motion 500ms linear infinite;
|
||||
-o-animation: pace-theme-mac-osx-motion 500ms linear infinite;
|
||||
animation: pace-theme-mac-osx-motion 500ms linear infinite;
|
||||
}
|
||||
|
||||
@-webkit-keyframes pace-theme-mac-osx-motion {
|
||||
0% { -webkit-transform: none; transform: none; }
|
||||
100% { -webkit-transform: translate(-28px, 0); transform: translate(-28px, 0); }
|
||||
}
|
||||
@-moz-keyframes pace-theme-mac-osx-motion {
|
||||
0% { -moz-transform: none; transform: none; }
|
||||
100% { -moz-transform: translate(-28px, 0); transform: translate(-28px, 0); }
|
||||
}
|
||||
@-o-keyframes pace-theme-mac-osx-motion {
|
||||
0% { -o-transform: none; transform: none; }
|
||||
100% { -o-transform: translate(-28px, 0); transform: translate(-28px, 0); }
|
||||
}
|
||||
@-ms-keyframes pace-theme-mac-osx-motion {
|
||||
0% { -ms-transform: none; transform: none; }
|
||||
100% { -ms-transform: translate(-28px, 0); transform: translate(-28px, 0); }
|
||||
}
|
||||
@keyframes pace-theme-mac-osx-motion {
|
||||
0% { transform: none; transform: none; }
|
||||
100% { transform: translate(-28px, 0); transform: translate(-28px, 0); }
|
||||
}
|
||||
23
public/bower_components/PACE/themes/black/pace-theme-minimal.css
vendored
Executable file
23
public/bower_components/PACE/themes/black/pace-theme-minimal.css
vendored
Executable file
@@ -0,0 +1,23 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.pace-inactive {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
background: #000000;
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
top: 0;
|
||||
right: 100%;
|
||||
width: 100%;
|
||||
height: 2px;
|
||||
}
|
||||
83
public/bower_components/PACE/themes/blue/pace-theme-barber-shop.css
vendored
Executable file
83
public/bower_components/PACE/themes/blue/pace-theme-barber-shop.css
vendored
Executable file
@@ -0,0 +1,83 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
overflow: hidden;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 2000;
|
||||
width: 100%;
|
||||
height: 12px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.pace-inactive {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
background-color: #2299dd;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
right: 100%;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.pace .pace-activity {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: -32px;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
-moz-transform: translate3d(0, 0, 0);
|
||||
-ms-transform: translate3d(0, 0, 0);
|
||||
-o-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
|
||||
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.2)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.2)), color-stop(0.75, rgba(255, 255, 255, 0.2)), color-stop(0.75, transparent), to(transparent));
|
||||
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);
|
||||
background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);
|
||||
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);
|
||||
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);
|
||||
-webkit-background-size: 32px 32px;
|
||||
-moz-background-size: 32px 32px;
|
||||
-o-background-size: 32px 32px;
|
||||
background-size: 32px 32px;
|
||||
|
||||
-webkit-animation: pace-theme-barber-shop-motion 500ms linear infinite;
|
||||
-moz-animation: pace-theme-barber-shop-motion 500ms linear infinite;
|
||||
-ms-animation: pace-theme-barber-shop-motion 500ms linear infinite;
|
||||
-o-animation: pace-theme-barber-shop-motion 500ms linear infinite;
|
||||
animation: pace-theme-barber-shop-motion 500ms linear infinite;
|
||||
}
|
||||
|
||||
@-webkit-keyframes pace-theme-barber-shop-motion {
|
||||
0% { -webkit-transform: none; transform: none; }
|
||||
100% { -webkit-transform: translate(-32px, 0); transform: translate(-32px, 0); }
|
||||
}
|
||||
@-moz-keyframes pace-theme-barber-shop-motion {
|
||||
0% { -moz-transform: none; transform: none; }
|
||||
100% { -moz-transform: translate(-32px, 0); transform: translate(-32px, 0); }
|
||||
}
|
||||
@-o-keyframes pace-theme-barber-shop-motion {
|
||||
0% { -o-transform: none; transform: none; }
|
||||
100% { -o-transform: translate(-32px, 0); transform: translate(-32px, 0); }
|
||||
}
|
||||
@-ms-keyframes pace-theme-barber-shop-motion {
|
||||
0% { -ms-transform: none; transform: none; }
|
||||
100% { -ms-transform: translate(-32px, 0); transform: translate(-32px, 0); }
|
||||
}
|
||||
@keyframes pace-theme-barber-shop-motion {
|
||||
0% { transform: none; transform: none; }
|
||||
100% { transform: translate(-32px, 0); transform: translate(-32px, 0); }
|
||||
}
|
||||
40
public/bower_components/PACE/themes/blue/pace-theme-big-counter.css
vendored
Executable file
40
public/bower_components/PACE/themes/blue/pace-theme-big-counter.css
vendored
Executable file
@@ -0,0 +1,40 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.pace.pace-inactive .pace-progress {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
top: 0;
|
||||
right: 0;
|
||||
height: 5rem;
|
||||
width: 5rem;
|
||||
|
||||
-webkit-transform: translate3d(0, 0, 0) !important;
|
||||
-ms-transform: translate3d(0, 0, 0) !important;
|
||||
transform: translate3d(0, 0, 0) !important;
|
||||
}
|
||||
|
||||
.pace .pace-progress:after {
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: .5rem;
|
||||
content: attr(data-progress-text);
|
||||
font-family: "Helvetica Neue", sans-serif;
|
||||
font-weight: 100;
|
||||
font-size: 5rem;
|
||||
line-height: 1;
|
||||
text-align: right;
|
||||
color: rgba(34, 153, 221, 0.19999999999999996);
|
||||
}
|
||||
231
public/bower_components/PACE/themes/blue/pace-theme-bounce.css
vendored
Executable file
231
public/bower_components/PACE/themes/blue/pace-theme-bounce.css
vendored
Executable file
@@ -0,0 +1,231 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
width: 140px;
|
||||
height: 300px;
|
||||
position: fixed;
|
||||
top: -90px;
|
||||
right: -20px;
|
||||
z-index: 2000;
|
||||
-webkit-transform: scale(0);
|
||||
-moz-transform: scale(0);
|
||||
-ms-transform: scale(0);
|
||||
-o-transform: scale(0);
|
||||
transform: scale(0);
|
||||
opacity: 0;
|
||||
-webkit-transition: all 2s linear 0s;
|
||||
-moz-transition: all 2s linear 0s;
|
||||
transition: all 2s linear 0s;
|
||||
}
|
||||
|
||||
.pace.pace-active {
|
||||
-webkit-transform: scale(.25);
|
||||
-moz-transform: scale(.25);
|
||||
-ms-transform: scale(.25);
|
||||
-o-transform: scale(.25);
|
||||
transform: scale(.25);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.pace .pace-activity {
|
||||
width: 140px;
|
||||
height: 140px;
|
||||
border-radius: 70px;
|
||||
background: #2299dd;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
z-index: 1911;
|
||||
-webkit-animation: pace-bounce 1s infinite;
|
||||
-moz-animation: pace-bounce 1s infinite;
|
||||
-o-animation: pace-bounce 1s infinite;
|
||||
-ms-animation: pace-bounce 1s infinite;
|
||||
animation: pace-bounce 1s infinite;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
position: absolute;
|
||||
display: block;
|
||||
left: 50%;
|
||||
bottom: 0;
|
||||
z-index: 1910;
|
||||
margin-left: -30px;
|
||||
width: 60px;
|
||||
height: 75px;
|
||||
background: rgba(20, 20, 20, .1);
|
||||
box-shadow: 0 0 20px 35px rgba(20, 20, 20, .1);
|
||||
border-radius: 30px / 40px;
|
||||
-webkit-transform: scaleY(.3) !important;
|
||||
-moz-transform: scaleY(.3) !important;
|
||||
-ms-transform: scaleY(.3) !important;
|
||||
-o-transform: scaleY(.3) !important;
|
||||
transform: scaleY(.3) !important;
|
||||
-webkit-animation: pace-compress .5s infinite alternate;
|
||||
-moz-animation: pace-compress .5s infinite alternate;
|
||||
-o-animation: pace-compress .5s infinite alternate;
|
||||
-ms-animation: pace-compress .5s infinite alternate;
|
||||
animation: pace-compress .5s infinite alternate;
|
||||
}
|
||||
|
||||
@-webkit-keyframes pace-bounce {
|
||||
0% {
|
||||
top: 0;
|
||||
-webkit-animation-timing-function: ease-in;
|
||||
}
|
||||
40% {}
|
||||
50% {
|
||||
top: 140px;
|
||||
height: 140px;
|
||||
-webkit-animation-timing-function: ease-out;
|
||||
}
|
||||
55% {
|
||||
top: 160px;
|
||||
height: 120px;
|
||||
border-radius: 70px / 60px;
|
||||
-webkit-animation-timing-function: ease-in;
|
||||
}
|
||||
65% {
|
||||
top: 120px;
|
||||
height: 140px;
|
||||
border-radius: 70px;
|
||||
-webkit-animation-timing-function: ease-out;
|
||||
}
|
||||
95% {
|
||||
top: 0;
|
||||
-webkit-animation-timing-function: ease-in;
|
||||
}
|
||||
100% {
|
||||
top: 0;
|
||||
-webkit-animation-timing-function: ease-in;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-keyframes pace-bounce {
|
||||
0% {
|
||||
top: 0;
|
||||
-moz-animation-timing-function: ease-in;
|
||||
}
|
||||
40% {}
|
||||
50% {
|
||||
top: 140px;
|
||||
height: 140px;
|
||||
-moz-animation-timing-function: ease-out;
|
||||
}
|
||||
55% {
|
||||
top: 160px;
|
||||
height: 120px;
|
||||
border-radius: 70px / 60px;
|
||||
-moz-animation-timing-function: ease-in;
|
||||
}
|
||||
65% {
|
||||
top: 120px;
|
||||
height: 140px;
|
||||
border-radius: 70px;
|
||||
-moz-animation-timing-function: ease-out;}
|
||||
95% {
|
||||
top: 0;
|
||||
-moz-animation-timing-function: ease-in;
|
||||
}
|
||||
100% {top: 0;
|
||||
-moz-animation-timing-function: ease-in;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes pace-bounce {
|
||||
0% {
|
||||
top: 0;
|
||||
animation-timing-function: ease-in;
|
||||
}
|
||||
50% {
|
||||
top: 140px;
|
||||
height: 140px;
|
||||
animation-timing-function: ease-out;
|
||||
}
|
||||
55% {
|
||||
top: 160px;
|
||||
height: 120px;
|
||||
border-radius: 70px / 60px;
|
||||
animation-timing-function: ease-in;
|
||||
}
|
||||
65% {
|
||||
top: 120px;
|
||||
height: 140px;
|
||||
border-radius: 70px;
|
||||
animation-timing-function: ease-out;
|
||||
}
|
||||
95% {
|
||||
top: 0;
|
||||
animation-timing-function: ease-in;
|
||||
}
|
||||
100% {
|
||||
top: 0;
|
||||
animation-timing-function: ease-in;
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes pace-compress {
|
||||
0% {
|
||||
bottom: 0;
|
||||
margin-left: -30px;
|
||||
width: 60px;
|
||||
height: 75px;
|
||||
background: rgba(20, 20, 20, .1);
|
||||
box-shadow: 0 0 20px 35px rgba(20, 20, 20, .1);
|
||||
border-radius: 30px / 40px;
|
||||
-webkit-animation-timing-function: ease-in;
|
||||
}
|
||||
100% {
|
||||
bottom: 30px;
|
||||
margin-left: -10px;
|
||||
width: 20px;
|
||||
height: 5px;
|
||||
background: rgba(20, 20, 20, .3);
|
||||
box-shadow: 0 0 20px 35px rgba(20, 20, 20, .3);
|
||||
border-radius: 20px / 20px;
|
||||
-webkit-animation-timing-function: ease-out;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-keyframes pace-compress {
|
||||
0% {
|
||||
bottom: 0;
|
||||
margin-left: -30px;
|
||||
width: 60px;
|
||||
height: 75px;
|
||||
background: rgba(20, 20, 20, .1);
|
||||
box-shadow: 0 0 20px 35px rgba(20, 20, 20, .1);
|
||||
border-radius: 30px / 40px;
|
||||
-moz-animation-timing-function: ease-in;
|
||||
}
|
||||
100% {
|
||||
bottom: 30px;
|
||||
margin-left: -10px;
|
||||
width: 20px;
|
||||
height: 5px;
|
||||
background: rgba(20, 20, 20, .3);
|
||||
box-shadow: 0 0 20px 35px rgba(20, 20, 20, .3);
|
||||
border-radius: 20px / 20px;
|
||||
-moz-animation-timing-function: ease-out;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes pace-compress {
|
||||
0% {
|
||||
bottom: 0;
|
||||
margin-left: -30px;
|
||||
width: 60px;
|
||||
height: 75px;
|
||||
background: rgba(20, 20, 20, .1);
|
||||
box-shadow: 0 0 20px 35px rgba(20, 20, 20, .1);
|
||||
border-radius: 30px / 40px;
|
||||
animation-timing-function: ease-in;
|
||||
}
|
||||
100% {
|
||||
bottom: 30px;
|
||||
margin-left: -10px;
|
||||
width: 20px;
|
||||
height: 5px;
|
||||
background: rgba(20, 20, 20, .3);
|
||||
box-shadow: 0 0 20px 35px rgba(20, 20, 20, .3);
|
||||
border-radius: 20px / 20px;
|
||||
animation-timing-function: ease-out;
|
||||
}
|
||||
}
|
||||
131
public/bower_components/PACE/themes/blue/pace-theme-center-atom.css
vendored
Executable file
131
public/bower_components/PACE/themes/blue/pace-theme-center-atom.css
vendored
Executable file
@@ -0,0 +1,131 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace.pace-inactive {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
z-index: 2000;
|
||||
position: fixed;
|
||||
height: 60px;
|
||||
width: 100px;
|
||||
margin: auto;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
z-index: 2000;
|
||||
position: absolute;
|
||||
height: 60px;
|
||||
width: 100px;
|
||||
|
||||
-webkit-transform: translate3d(0, 0, 0) !important;
|
||||
-ms-transform: translate3d(0, 0, 0) !important;
|
||||
transform: translate3d(0, 0, 0) !important;
|
||||
}
|
||||
|
||||
.pace .pace-progress:before {
|
||||
content: attr(data-progress-text);
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
background: #2299dd;
|
||||
border-radius: 50%;
|
||||
font-family: "Helvetica Neue", sans-serif;
|
||||
font-size: 14px;
|
||||
font-weight: 100;
|
||||
line-height: 1;
|
||||
padding: 20% 0 7px;
|
||||
width: 50%;
|
||||
height: 40%;
|
||||
margin: 10px 0 0 30px;
|
||||
display: block;
|
||||
z-index: 999;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.pace .pace-activity {
|
||||
font-size: 15px;
|
||||
line-height: 1;
|
||||
z-index: 2000;
|
||||
position: absolute;
|
||||
height: 60px;
|
||||
width: 100px;
|
||||
|
||||
display: block;
|
||||
-webkit-animation: pace-theme-center-atom-spin 2s linear infinite;
|
||||
-moz-animation: pace-theme-center-atom-spin 2s linear infinite;
|
||||
-o-animation: pace-theme-center-atom-spin 2s linear infinite;
|
||||
animation: pace-theme-center-atom-spin 2s linear infinite;
|
||||
}
|
||||
|
||||
.pace .pace-activity {
|
||||
border-radius: 50%;
|
||||
border: 5px solid #2299dd;
|
||||
content: ' ';
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 60px;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
.pace .pace-activity:after {
|
||||
border-radius: 50%;
|
||||
border: 5px solid #2299dd;
|
||||
content: ' ';
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: -5px;
|
||||
left: -5px;
|
||||
height: 60px;
|
||||
width: 100px;
|
||||
|
||||
-webkit-transform: rotate(60deg);
|
||||
-moz-transform: rotate(60deg);
|
||||
-o-transform: rotate(60deg);
|
||||
transform: rotate(60deg);
|
||||
}
|
||||
|
||||
.pace .pace-activity:before {
|
||||
border-radius: 50%;
|
||||
border: 5px solid #2299dd;
|
||||
content: ' ';
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: -5px;
|
||||
left: -5px;
|
||||
height: 60px;
|
||||
width: 100px;
|
||||
|
||||
-webkit-transform: rotate(120deg);
|
||||
-moz-transform: rotate(120deg);
|
||||
-o-transform: rotate(120deg);
|
||||
transform: rotate(120deg);
|
||||
}
|
||||
|
||||
@-webkit-keyframes pace-theme-center-atom-spin {
|
||||
0% { -webkit-transform: rotate(0deg) }
|
||||
100% { -webkit-transform: rotate(359deg) }
|
||||
}
|
||||
@-moz-keyframes pace-theme-center-atom-spin {
|
||||
0% { -moz-transform: rotate(0deg) }
|
||||
100% { -moz-transform: rotate(359deg) }
|
||||
}
|
||||
@-o-keyframes pace-theme-center-atom-spin {
|
||||
0% { -o-transform: rotate(0deg) }
|
||||
100% { -o-transform: rotate(359deg) }
|
||||
}
|
||||
@keyframes pace-theme-center-atom-spin {
|
||||
0% { transform: rotate(0deg) }
|
||||
100% { transform: rotate(359deg) }
|
||||
}
|
||||
90
public/bower_components/PACE/themes/blue/pace-theme-center-circle.css
vendored
Executable file
90
public/bower_components/PACE/themes/blue/pace-theme-center-circle.css
vendored
Executable file
@@ -0,0 +1,90 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
-webkit-perspective: 12rem;
|
||||
-moz-perspective: 12rem;
|
||||
-ms-perspective: 12rem;
|
||||
-o-perspective: 12rem;
|
||||
perspective: 12rem;
|
||||
|
||||
z-index: 2000;
|
||||
position: fixed;
|
||||
height: 6rem;
|
||||
width: 6rem;
|
||||
margin: auto;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.pace.pace-inactive .pace-progress {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
height: 6rem;
|
||||
width: 6rem !important;
|
||||
line-height: 6rem;
|
||||
font-size: 2rem;
|
||||
border-radius: 50%;
|
||||
background: rgba(34, 153, 221, 0.8);
|
||||
color: #fff;
|
||||
font-family: "Helvetica Neue", sans-serif;
|
||||
font-weight: 100;
|
||||
text-align: center;
|
||||
|
||||
-webkit-animation: pace-theme-center-circle-spin linear infinite 2s;
|
||||
-moz-animation: pace-theme-center-circle-spin linear infinite 2s;
|
||||
-ms-animation: pace-theme-center-circle-spin linear infinite 2s;
|
||||
-o-animation: pace-theme-center-circle-spin linear infinite 2s;
|
||||
animation: pace-theme-center-circle-spin linear infinite 2s;
|
||||
|
||||
-webkit-transform-style: preserve-3d;
|
||||
-moz-transform-style: preserve-3d;
|
||||
-ms-transform-style: preserve-3d;
|
||||
-o-transform-style: preserve-3d;
|
||||
transform-style: preserve-3d;
|
||||
}
|
||||
|
||||
.pace .pace-progress:after {
|
||||
content: attr(data-progress-text);
|
||||
display: block;
|
||||
}
|
||||
|
||||
@-webkit-keyframes pace-theme-center-circle-spin {
|
||||
from { -webkit-transform: rotateY(0deg) }
|
||||
to { -webkit-transform: rotateY(360deg) }
|
||||
}
|
||||
|
||||
@-moz-keyframes pace-theme-center-circle-spin {
|
||||
from { -moz-transform: rotateY(0deg) }
|
||||
to { -moz-transform: rotateY(360deg) }
|
||||
}
|
||||
|
||||
@-ms-keyframes pace-theme-center-circle-spin {
|
||||
from { -ms-transform: rotateY(0deg) }
|
||||
to { -ms-transform: rotateY(360deg) }
|
||||
}
|
||||
|
||||
@-o-keyframes pace-theme-center-circle-spin {
|
||||
from { -o-transform: rotateY(0deg) }
|
||||
to { -o-transform: rotateY(360deg) }
|
||||
}
|
||||
|
||||
@keyframes pace-theme-center-circle-spin {
|
||||
from { transform: rotateY(0deg) }
|
||||
to { transform: rotateY(360deg) }
|
||||
}
|
||||
74
public/bower_components/PACE/themes/blue/pace-theme-center-radar.css
vendored
Executable file
74
public/bower_components/PACE/themes/blue/pace-theme-center-radar.css
vendored
Executable file
@@ -0,0 +1,74 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
z-index: 2000;
|
||||
position: fixed;
|
||||
height: 90px;
|
||||
width: 90px;
|
||||
margin: auto;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.pace.pace-inactive .pace-activity {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pace .pace-activity {
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: -30px;
|
||||
top: -30px;
|
||||
height: 90px;
|
||||
width: 90px;
|
||||
display: block;
|
||||
border-width: 30px;
|
||||
border-style: double;
|
||||
border-color: #2299dd transparent transparent;
|
||||
border-radius: 50%;
|
||||
|
||||
-webkit-animation: spin 1s linear infinite;
|
||||
-moz-animation: spin 1s linear infinite;
|
||||
-o-animation: spin 1s linear infinite;
|
||||
animation: spin 1s linear infinite;
|
||||
}
|
||||
|
||||
.pace .pace-activity:before {
|
||||
content: ' ';
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 10px;
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
display: block;
|
||||
border-width: 10px;
|
||||
border-style: solid;
|
||||
border-color: #2299dd transparent transparent;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
@-webkit-keyframes spin {
|
||||
100% { -webkit-transform: rotate(359deg); }
|
||||
}
|
||||
|
||||
@-moz-keyframes spin {
|
||||
100% { -moz-transform: rotate(359deg); }
|
||||
}
|
||||
|
||||
@-o-keyframes spin {
|
||||
100% { -moz-transform: rotate(359deg); }
|
||||
}
|
||||
|
||||
@keyframes spin {
|
||||
100% { transform: rotate(359deg); }
|
||||
}
|
||||
52
public/bower_components/PACE/themes/blue/pace-theme-center-simple.css
vendored
Executable file
52
public/bower_components/PACE/themes/blue/pace-theme-center-simple.css
vendored
Executable file
@@ -0,0 +1,52 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
z-index: 2000;
|
||||
position: fixed;
|
||||
margin: auto;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
height: 5px;
|
||||
width: 200px;
|
||||
background: #fff;
|
||||
border: 1px solid #2299dd;
|
||||
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
-ms-box-sizing: border-box;
|
||||
-o-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
-moz-transform: translate3d(0, 0, 0);
|
||||
-ms-transform: translate3d(0, 0, 0);
|
||||
-o-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
|
||||
max-width: 200px;
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 100%;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
background: #2299dd;
|
||||
}
|
||||
|
||||
.pace.pace-inactive {
|
||||
display: none;
|
||||
}
|
||||
73
public/bower_components/PACE/themes/blue/pace-theme-corner-indicator.css
vendored
Executable file
73
public/bower_components/PACE/themes/blue/pace-theme-corner-indicator.css
vendored
Executable file
@@ -0,0 +1,73 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.pace .pace-activity {
|
||||
display: block;
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: 300px;
|
||||
height: 300px;
|
||||
background: #2299dd;
|
||||
-webkit-transition: -webkit-transform 0.3s;
|
||||
transition: transform 0.3s;
|
||||
-webkit-transform: translateX(100%) translateY(-100%) rotate(45deg);
|
||||
transform: translateX(100%) translateY(-100%) rotate(45deg);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.pace.pace-active .pace-activity {
|
||||
-webkit-transform: translateX(50%) translateY(-50%) rotate(45deg);
|
||||
transform: translateX(50%) translateY(-50%) rotate(45deg);
|
||||
}
|
||||
|
||||
.pace .pace-activity::before,
|
||||
.pace .pace-activity::after {
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
position: absolute;
|
||||
bottom: 30px;
|
||||
left: 50%;
|
||||
display: block;
|
||||
border: 5px solid #fff;
|
||||
border-radius: 50%;
|
||||
content: '';
|
||||
}
|
||||
|
||||
.pace .pace-activity::before {
|
||||
margin-left: -40px;
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
border-right-color: rgba(0, 0, 0, .2);
|
||||
border-left-color: rgba(0, 0, 0, .2);
|
||||
-webkit-animation: pace-theme-corner-indicator-spin 3s linear infinite;
|
||||
animation: pace-theme-corner-indicator-spin 3s linear infinite;
|
||||
}
|
||||
|
||||
.pace .pace-activity::after {
|
||||
bottom: 50px;
|
||||
margin-left: -20px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border-top-color: rgba(0, 0, 0, .2);
|
||||
border-bottom-color: rgba(0, 0, 0, .2);
|
||||
-webkit-animation: pace-theme-corner-indicator-spin 1s linear infinite;
|
||||
animation: pace-theme-corner-indicator-spin 1s linear infinite;
|
||||
}
|
||||
|
||||
@-webkit-keyframes pace-theme-corner-indicator-spin {
|
||||
0% { -webkit-transform: rotate(0deg); }
|
||||
100% { -webkit-transform: rotate(359deg); }
|
||||
}
|
||||
@keyframes pace-theme-corner-indicator-spin {
|
||||
0% { transform: rotate(0deg); }
|
||||
100% { transform: rotate(359deg); }
|
||||
}
|
||||
22
public/bower_components/PACE/themes/blue/pace-theme-fill-left.css
vendored
Executable file
22
public/bower_components/PACE/themes/blue/pace-theme-fill-left.css
vendored
Executable file
@@ -0,0 +1,22 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.pace-inactive {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
background-color: rgba(34, 153, 221, 0.19999999999999996);
|
||||
position: fixed;
|
||||
z-index: -1;
|
||||
top: 0;
|
||||
right: 100%;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
}
|
||||
77
public/bower_components/PACE/themes/blue/pace-theme-flash.css
vendored
Executable file
77
public/bower_components/PACE/themes/blue/pace-theme-flash.css
vendored
Executable file
@@ -0,0 +1,77 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.pace-inactive {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
background: #2299dd;
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
top: 0;
|
||||
right: 100%;
|
||||
width: 100%;
|
||||
height: 2px;
|
||||
}
|
||||
|
||||
.pace .pace-progress-inner {
|
||||
display: block;
|
||||
position: absolute;
|
||||
right: 0px;
|
||||
width: 100px;
|
||||
height: 100%;
|
||||
box-shadow: 0 0 10px #2299dd, 0 0 5px #2299dd;
|
||||
opacity: 1.0;
|
||||
-webkit-transform: rotate(3deg) translate(0px, -4px);
|
||||
-moz-transform: rotate(3deg) translate(0px, -4px);
|
||||
-ms-transform: rotate(3deg) translate(0px, -4px);
|
||||
-o-transform: rotate(3deg) translate(0px, -4px);
|
||||
transform: rotate(3deg) translate(0px, -4px);
|
||||
}
|
||||
|
||||
.pace .pace-activity {
|
||||
display: block;
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
top: 15px;
|
||||
right: 15px;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
border: solid 2px transparent;
|
||||
border-top-color: #2299dd;
|
||||
border-left-color: #2299dd;
|
||||
border-radius: 10px;
|
||||
-webkit-animation: pace-spinner 400ms linear infinite;
|
||||
-moz-animation: pace-spinner 400ms linear infinite;
|
||||
-ms-animation: pace-spinner 400ms linear infinite;
|
||||
-o-animation: pace-spinner 400ms linear infinite;
|
||||
animation: pace-spinner 400ms linear infinite;
|
||||
}
|
||||
|
||||
@-webkit-keyframes pace-spinner {
|
||||
0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); }
|
||||
100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); }
|
||||
}
|
||||
@-moz-keyframes pace-spinner {
|
||||
0% { -moz-transform: rotate(0deg); transform: rotate(0deg); }
|
||||
100% { -moz-transform: rotate(360deg); transform: rotate(360deg); }
|
||||
}
|
||||
@-o-keyframes pace-spinner {
|
||||
0% { -o-transform: rotate(0deg); transform: rotate(0deg); }
|
||||
100% { -o-transform: rotate(360deg); transform: rotate(360deg); }
|
||||
}
|
||||
@-ms-keyframes pace-spinner {
|
||||
0% { -ms-transform: rotate(0deg); transform: rotate(0deg); }
|
||||
100% { -ms-transform: rotate(360deg); transform: rotate(360deg); }
|
||||
}
|
||||
@keyframes pace-spinner {
|
||||
0% { transform: rotate(0deg); transform: rotate(0deg); }
|
||||
100% { transform: rotate(360deg); transform: rotate(360deg); }
|
||||
}
|
||||
41
public/bower_components/PACE/themes/blue/pace-theme-flat-top.css
vendored
Executable file
41
public/bower_components/PACE/themes/blue/pace-theme-flat-top.css
vendored
Executable file
@@ -0,0 +1,41 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
|
||||
-webkit-transform: translate3d(0, -50px, 0);
|
||||
-ms-transform: translate3d(0, -50px, 0);
|
||||
transform: translate3d(0, -50px, 0);
|
||||
|
||||
-webkit-transition: -webkit-transform .5s ease-out;
|
||||
-ms-transition: -webkit-transform .5s ease-out;
|
||||
transition: transform .5s ease-out;
|
||||
}
|
||||
|
||||
.pace.pace-active {
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
-ms-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
display: block;
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
top: 0;
|
||||
right: 100%;
|
||||
width: 100%;
|
||||
height: 10px;
|
||||
background: #2299dd;
|
||||
|
||||
pointer-events: none;
|
||||
}
|
||||
198
public/bower_components/PACE/themes/blue/pace-theme-loading-bar.css
vendored
Executable file
198
public/bower_components/PACE/themes/blue/pace-theme-loading-bar.css
vendored
Executable file
@@ -0,0 +1,198 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
-ms-box-sizing: border-box;
|
||||
-o-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
|
||||
-webkit-border-radius: 10px;
|
||||
-moz-border-radius: 10px;
|
||||
border-radius: 10px;
|
||||
|
||||
-webkit-background-clip: padding-box;
|
||||
-moz-background-clip: padding;
|
||||
background-clip: padding-box;
|
||||
|
||||
z-index: 2000;
|
||||
position: fixed;
|
||||
margin: auto;
|
||||
top: 12px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
width: 200px;
|
||||
height: 50px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
-ms-box-sizing: border-box;
|
||||
-o-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
|
||||
-webkit-border-radius: 2px;
|
||||
-moz-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
|
||||
-webkit-background-clip: padding-box;
|
||||
-moz-background-clip: padding;
|
||||
background-clip: padding-box;
|
||||
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
|
||||
display: block;
|
||||
position: absolute;
|
||||
right: 100%;
|
||||
margin-right: -7px;
|
||||
width: 93%;
|
||||
top: 7px;
|
||||
height: 14px;
|
||||
font-size: 12px;
|
||||
background: #2299dd;
|
||||
color: #2299dd;
|
||||
line-height: 60px;
|
||||
font-weight: bold;
|
||||
font-family: Helvetica, Arial, "Lucida Grande", sans-serif;
|
||||
|
||||
-webkit-box-shadow: 120px 0 #fff, 240px 0 #fff;
|
||||
-ms-box-shadow: 120px 0 #fff, 240px 0 #fff;
|
||||
box-shadow: 120px 0 #fff, 240px 0 #fff;
|
||||
}
|
||||
|
||||
.pace .pace-progress:after {
|
||||
content: attr(data-progress-text);
|
||||
display: inline-block;
|
||||
position: fixed;
|
||||
width: 45px;
|
||||
text-align: right;
|
||||
right: 0;
|
||||
padding-right: 16px;
|
||||
top: 4px;
|
||||
}
|
||||
|
||||
.pace .pace-progress[data-progress-text="0%"]:after { right: -200px }
|
||||
.pace .pace-progress[data-progress-text="1%"]:after { right: -198.14px }
|
||||
.pace .pace-progress[data-progress-text="2%"]:after { right: -196.28px }
|
||||
.pace .pace-progress[data-progress-text="3%"]:after { right: -194.42px }
|
||||
.pace .pace-progress[data-progress-text="4%"]:after { right: -192.56px }
|
||||
.pace .pace-progress[data-progress-text="5%"]:after { right: -190.7px }
|
||||
.pace .pace-progress[data-progress-text="6%"]:after { right: -188.84px }
|
||||
.pace .pace-progress[data-progress-text="7%"]:after { right: -186.98px }
|
||||
.pace .pace-progress[data-progress-text="8%"]:after { right: -185.12px }
|
||||
.pace .pace-progress[data-progress-text="9%"]:after { right: -183.26px }
|
||||
.pace .pace-progress[data-progress-text="10%"]:after { right: -181.4px }
|
||||
.pace .pace-progress[data-progress-text="11%"]:after { right: -179.54px }
|
||||
.pace .pace-progress[data-progress-text="12%"]:after { right: -177.68px }
|
||||
.pace .pace-progress[data-progress-text="13%"]:after { right: -175.82px }
|
||||
.pace .pace-progress[data-progress-text="14%"]:after { right: -173.96px }
|
||||
.pace .pace-progress[data-progress-text="15%"]:after { right: -172.1px }
|
||||
.pace .pace-progress[data-progress-text="16%"]:after { right: -170.24px }
|
||||
.pace .pace-progress[data-progress-text="17%"]:after { right: -168.38px }
|
||||
.pace .pace-progress[data-progress-text="18%"]:after { right: -166.52px }
|
||||
.pace .pace-progress[data-progress-text="19%"]:after { right: -164.66px }
|
||||
.pace .pace-progress[data-progress-text="20%"]:after { right: -162.8px }
|
||||
.pace .pace-progress[data-progress-text="21%"]:after { right: -160.94px }
|
||||
.pace .pace-progress[data-progress-text="22%"]:after { right: -159.08px }
|
||||
.pace .pace-progress[data-progress-text="23%"]:after { right: -157.22px }
|
||||
.pace .pace-progress[data-progress-text="24%"]:after { right: -155.36px }
|
||||
.pace .pace-progress[data-progress-text="25%"]:after { right: -153.5px }
|
||||
.pace .pace-progress[data-progress-text="26%"]:after { right: -151.64px }
|
||||
.pace .pace-progress[data-progress-text="27%"]:after { right: -149.78px }
|
||||
.pace .pace-progress[data-progress-text="28%"]:after { right: -147.92px }
|
||||
.pace .pace-progress[data-progress-text="29%"]:after { right: -146.06px }
|
||||
.pace .pace-progress[data-progress-text="30%"]:after { right: -144.2px }
|
||||
.pace .pace-progress[data-progress-text="31%"]:after { right: -142.34px }
|
||||
.pace .pace-progress[data-progress-text="32%"]:after { right: -140.48px }
|
||||
.pace .pace-progress[data-progress-text="33%"]:after { right: -138.62px }
|
||||
.pace .pace-progress[data-progress-text="34%"]:after { right: -136.76px }
|
||||
.pace .pace-progress[data-progress-text="35%"]:after { right: -134.9px }
|
||||
.pace .pace-progress[data-progress-text="36%"]:after { right: -133.04px }
|
||||
.pace .pace-progress[data-progress-text="37%"]:after { right: -131.18px }
|
||||
.pace .pace-progress[data-progress-text="38%"]:after { right: -129.32px }
|
||||
.pace .pace-progress[data-progress-text="39%"]:after { right: -127.46px }
|
||||
.pace .pace-progress[data-progress-text="40%"]:after { right: -125.6px }
|
||||
.pace .pace-progress[data-progress-text="41%"]:after { right: -123.74px }
|
||||
.pace .pace-progress[data-progress-text="42%"]:after { right: -121.88px }
|
||||
.pace .pace-progress[data-progress-text="43%"]:after { right: -120.02px }
|
||||
.pace .pace-progress[data-progress-text="44%"]:after { right: -118.16px }
|
||||
.pace .pace-progress[data-progress-text="45%"]:after { right: -116.3px }
|
||||
.pace .pace-progress[data-progress-text="46%"]:after { right: -114.44px }
|
||||
.pace .pace-progress[data-progress-text="47%"]:after { right: -112.58px }
|
||||
.pace .pace-progress[data-progress-text="48%"]:after { right: -110.72px }
|
||||
.pace .pace-progress[data-progress-text="49%"]:after { right: -108.86px }
|
||||
.pace .pace-progress[data-progress-text="50%"]:after { right: -107px }
|
||||
.pace .pace-progress[data-progress-text="51%"]:after { right: -105.14px }
|
||||
.pace .pace-progress[data-progress-text="52%"]:after { right: -103.28px }
|
||||
.pace .pace-progress[data-progress-text="53%"]:after { right: -101.42px }
|
||||
.pace .pace-progress[data-progress-text="54%"]:after { right: -99.56px }
|
||||
.pace .pace-progress[data-progress-text="55%"]:after { right: -97.7px }
|
||||
.pace .pace-progress[data-progress-text="56%"]:after { right: -95.84px }
|
||||
.pace .pace-progress[data-progress-text="57%"]:after { right: -93.98px }
|
||||
.pace .pace-progress[data-progress-text="58%"]:after { right: -92.12px }
|
||||
.pace .pace-progress[data-progress-text="59%"]:after { right: -90.26px }
|
||||
.pace .pace-progress[data-progress-text="60%"]:after { right: -88.4px }
|
||||
.pace .pace-progress[data-progress-text="61%"]:after { right: -86.53999999999999px }
|
||||
.pace .pace-progress[data-progress-text="62%"]:after { right: -84.68px }
|
||||
.pace .pace-progress[data-progress-text="63%"]:after { right: -82.82px }
|
||||
.pace .pace-progress[data-progress-text="64%"]:after { right: -80.96000000000001px }
|
||||
.pace .pace-progress[data-progress-text="65%"]:after { right: -79.1px }
|
||||
.pace .pace-progress[data-progress-text="66%"]:after { right: -77.24px }
|
||||
.pace .pace-progress[data-progress-text="67%"]:after { right: -75.38px }
|
||||
.pace .pace-progress[data-progress-text="68%"]:after { right: -73.52px }
|
||||
.pace .pace-progress[data-progress-text="69%"]:after { right: -71.66px }
|
||||
.pace .pace-progress[data-progress-text="70%"]:after { right: -69.8px }
|
||||
.pace .pace-progress[data-progress-text="71%"]:after { right: -67.94px }
|
||||
.pace .pace-progress[data-progress-text="72%"]:after { right: -66.08px }
|
||||
.pace .pace-progress[data-progress-text="73%"]:after { right: -64.22px }
|
||||
.pace .pace-progress[data-progress-text="74%"]:after { right: -62.36px }
|
||||
.pace .pace-progress[data-progress-text="75%"]:after { right: -60.5px }
|
||||
.pace .pace-progress[data-progress-text="76%"]:after { right: -58.64px }
|
||||
.pace .pace-progress[data-progress-text="77%"]:after { right: -56.78px }
|
||||
.pace .pace-progress[data-progress-text="78%"]:after { right: -54.92px }
|
||||
.pace .pace-progress[data-progress-text="79%"]:after { right: -53.06px }
|
||||
.pace .pace-progress[data-progress-text="80%"]:after { right: -51.2px }
|
||||
.pace .pace-progress[data-progress-text="81%"]:after { right: -49.34px }
|
||||
.pace .pace-progress[data-progress-text="82%"]:after { right: -47.480000000000004px }
|
||||
.pace .pace-progress[data-progress-text="83%"]:after { right: -45.62px }
|
||||
.pace .pace-progress[data-progress-text="84%"]:after { right: -43.76px }
|
||||
.pace .pace-progress[data-progress-text="85%"]:after { right: -41.9px }
|
||||
.pace .pace-progress[data-progress-text="86%"]:after { right: -40.04px }
|
||||
.pace .pace-progress[data-progress-text="87%"]:after { right: -38.18px }
|
||||
.pace .pace-progress[data-progress-text="88%"]:after { right: -36.32px }
|
||||
.pace .pace-progress[data-progress-text="89%"]:after { right: -34.46px }
|
||||
.pace .pace-progress[data-progress-text="90%"]:after { right: -32.6px }
|
||||
.pace .pace-progress[data-progress-text="91%"]:after { right: -30.740000000000002px }
|
||||
.pace .pace-progress[data-progress-text="92%"]:after { right: -28.880000000000003px }
|
||||
.pace .pace-progress[data-progress-text="93%"]:after { right: -27.02px }
|
||||
.pace .pace-progress[data-progress-text="94%"]:after { right: -25.16px }
|
||||
.pace .pace-progress[data-progress-text="95%"]:after { right: -23.3px }
|
||||
.pace .pace-progress[data-progress-text="96%"]:after { right: -21.439999999999998px }
|
||||
.pace .pace-progress[data-progress-text="97%"]:after { right: -19.58px }
|
||||
.pace .pace-progress[data-progress-text="98%"]:after { right: -17.72px }
|
||||
.pace .pace-progress[data-progress-text="99%"]:after { right: -15.86px }
|
||||
.pace .pace-progress[data-progress-text="100%"]:after { right: -14px }
|
||||
|
||||
|
||||
.pace .pace-activity {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 28px;
|
||||
z-index: 2001;
|
||||
box-shadow: inset 0 0 0 2px #2299dd, inset 0 0 0 7px #FFF;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.pace.pace-inactive {
|
||||
display: none;
|
||||
}
|
||||
87
public/bower_components/PACE/themes/blue/pace-theme-mac-osx.css
vendored
Executable file
87
public/bower_components/PACE/themes/blue/pace-theme-mac-osx.css
vendored
Executable file
@@ -0,0 +1,87 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
overflow: hidden;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 2000;
|
||||
width: 100%;
|
||||
height: 12px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.pace-inactive {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
background-color: #0087E1;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 100%;
|
||||
width: 100%;
|
||||
height: 12px;
|
||||
overflow: hidden;
|
||||
|
||||
-webkit-border-radius: 0 0 4px 0;
|
||||
-moz-border-radius: 0 0 4px 0;
|
||||
-o-border-radius: 0 0 4px 0;
|
||||
border-radius: 0 0 4px 0;
|
||||
|
||||
-webkit-box-shadow: inset -1px 0 #00558F, inset 0 -1px #00558F, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, .3);
|
||||
-moz-box-shadow: inset -1px 0 #00558F, inset 0 -1px #00558F, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, .3);
|
||||
-o-box-shadow: inset -1px 0 #00558F, inset 0 -1px #00558F, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, .3);
|
||||
box-shadow: inset -1px 0 #00558F, inset 0 -1px #00558F, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, .3);
|
||||
}
|
||||
|
||||
.pace .pace-activity {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: -28px;
|
||||
bottom: 0;
|
||||
|
||||
-webkit-background-image: radial-gradient(rgba(255, 255, 255, .65) 0%, rgba(255, 255, 255, .15) 100%);
|
||||
-moz-background-image: radial-gradient(rgba(255, 255, 255, .65) 0%, rgba(255, 255, 255, .15) 100%);
|
||||
-o-background-image: radial-gradient(rgba(255, 255, 255, .65) 0%, rgba(255, 255, 255, .15) 100%);
|
||||
background-image: radial-gradient(rgba(255, 255, 255, .65) 0%, rgba(255, 255, 255, .15) 100%);
|
||||
|
||||
-webkit-background-size: 28px 100%;
|
||||
-moz-background-size: 28px 100%;
|
||||
-o-background-size: 28px 100%;
|
||||
background-size: 28px 100%;
|
||||
|
||||
-webkit-animation: pace-theme-mac-osx-motion 500ms linear infinite;
|
||||
-moz-animation: pace-theme-mac-osx-motion 500ms linear infinite;
|
||||
-ms-animation: pace-theme-mac-osx-motion 500ms linear infinite;
|
||||
-o-animation: pace-theme-mac-osx-motion 500ms linear infinite;
|
||||
animation: pace-theme-mac-osx-motion 500ms linear infinite;
|
||||
}
|
||||
|
||||
@-webkit-keyframes pace-theme-mac-osx-motion {
|
||||
0% { -webkit-transform: none; transform: none; }
|
||||
100% { -webkit-transform: translate(-28px, 0); transform: translate(-28px, 0); }
|
||||
}
|
||||
@-moz-keyframes pace-theme-mac-osx-motion {
|
||||
0% { -moz-transform: none; transform: none; }
|
||||
100% { -moz-transform: translate(-28px, 0); transform: translate(-28px, 0); }
|
||||
}
|
||||
@-o-keyframes pace-theme-mac-osx-motion {
|
||||
0% { -o-transform: none; transform: none; }
|
||||
100% { -o-transform: translate(-28px, 0); transform: translate(-28px, 0); }
|
||||
}
|
||||
@-ms-keyframes pace-theme-mac-osx-motion {
|
||||
0% { -ms-transform: none; transform: none; }
|
||||
100% { -ms-transform: translate(-28px, 0); transform: translate(-28px, 0); }
|
||||
}
|
||||
@keyframes pace-theme-mac-osx-motion {
|
||||
0% { transform: none; transform: none; }
|
||||
100% { transform: translate(-28px, 0); transform: translate(-28px, 0); }
|
||||
}
|
||||
23
public/bower_components/PACE/themes/blue/pace-theme-minimal.css
vendored
Executable file
23
public/bower_components/PACE/themes/blue/pace-theme-minimal.css
vendored
Executable file
@@ -0,0 +1,23 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.pace-inactive {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
background: #2299dd;
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
top: 0;
|
||||
right: 100%;
|
||||
width: 100%;
|
||||
height: 2px;
|
||||
}
|
||||
83
public/bower_components/PACE/themes/green/pace-theme-barber-shop.css
vendored
Executable file
83
public/bower_components/PACE/themes/green/pace-theme-barber-shop.css
vendored
Executable file
@@ -0,0 +1,83 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
overflow: hidden;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 2000;
|
||||
width: 100%;
|
||||
height: 12px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.pace-inactive {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
background-color: #22df80;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
right: 100%;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.pace .pace-activity {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: -32px;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
-moz-transform: translate3d(0, 0, 0);
|
||||
-ms-transform: translate3d(0, 0, 0);
|
||||
-o-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
|
||||
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.2)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.2)), color-stop(0.75, rgba(255, 255, 255, 0.2)), color-stop(0.75, transparent), to(transparent));
|
||||
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);
|
||||
background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);
|
||||
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);
|
||||
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);
|
||||
-webkit-background-size: 32px 32px;
|
||||
-moz-background-size: 32px 32px;
|
||||
-o-background-size: 32px 32px;
|
||||
background-size: 32px 32px;
|
||||
|
||||
-webkit-animation: pace-theme-barber-shop-motion 500ms linear infinite;
|
||||
-moz-animation: pace-theme-barber-shop-motion 500ms linear infinite;
|
||||
-ms-animation: pace-theme-barber-shop-motion 500ms linear infinite;
|
||||
-o-animation: pace-theme-barber-shop-motion 500ms linear infinite;
|
||||
animation: pace-theme-barber-shop-motion 500ms linear infinite;
|
||||
}
|
||||
|
||||
@-webkit-keyframes pace-theme-barber-shop-motion {
|
||||
0% { -webkit-transform: none; transform: none; }
|
||||
100% { -webkit-transform: translate(-32px, 0); transform: translate(-32px, 0); }
|
||||
}
|
||||
@-moz-keyframes pace-theme-barber-shop-motion {
|
||||
0% { -moz-transform: none; transform: none; }
|
||||
100% { -moz-transform: translate(-32px, 0); transform: translate(-32px, 0); }
|
||||
}
|
||||
@-o-keyframes pace-theme-barber-shop-motion {
|
||||
0% { -o-transform: none; transform: none; }
|
||||
100% { -o-transform: translate(-32px, 0); transform: translate(-32px, 0); }
|
||||
}
|
||||
@-ms-keyframes pace-theme-barber-shop-motion {
|
||||
0% { -ms-transform: none; transform: none; }
|
||||
100% { -ms-transform: translate(-32px, 0); transform: translate(-32px, 0); }
|
||||
}
|
||||
@keyframes pace-theme-barber-shop-motion {
|
||||
0% { transform: none; transform: none; }
|
||||
100% { transform: translate(-32px, 0); transform: translate(-32px, 0); }
|
||||
}
|
||||
40
public/bower_components/PACE/themes/green/pace-theme-big-counter.css
vendored
Executable file
40
public/bower_components/PACE/themes/green/pace-theme-big-counter.css
vendored
Executable file
@@ -0,0 +1,40 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.pace.pace-inactive .pace-progress {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
top: 0;
|
||||
right: 0;
|
||||
height: 5rem;
|
||||
width: 5rem;
|
||||
|
||||
-webkit-transform: translate3d(0, 0, 0) !important;
|
||||
-ms-transform: translate3d(0, 0, 0) !important;
|
||||
transform: translate3d(0, 0, 0) !important;
|
||||
}
|
||||
|
||||
.pace .pace-progress:after {
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: .5rem;
|
||||
content: attr(data-progress-text);
|
||||
font-family: "Helvetica Neue", sans-serif;
|
||||
font-weight: 100;
|
||||
font-size: 5rem;
|
||||
line-height: 1;
|
||||
text-align: right;
|
||||
color: rgba(34, 223, 128, 0.19999999999999996);
|
||||
}
|
||||
231
public/bower_components/PACE/themes/green/pace-theme-bounce.css
vendored
Executable file
231
public/bower_components/PACE/themes/green/pace-theme-bounce.css
vendored
Executable file
@@ -0,0 +1,231 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
width: 140px;
|
||||
height: 300px;
|
||||
position: fixed;
|
||||
top: -90px;
|
||||
right: -20px;
|
||||
z-index: 2000;
|
||||
-webkit-transform: scale(0);
|
||||
-moz-transform: scale(0);
|
||||
-ms-transform: scale(0);
|
||||
-o-transform: scale(0);
|
||||
transform: scale(0);
|
||||
opacity: 0;
|
||||
-webkit-transition: all 2s linear 0s;
|
||||
-moz-transition: all 2s linear 0s;
|
||||
transition: all 2s linear 0s;
|
||||
}
|
||||
|
||||
.pace.pace-active {
|
||||
-webkit-transform: scale(.25);
|
||||
-moz-transform: scale(.25);
|
||||
-ms-transform: scale(.25);
|
||||
-o-transform: scale(.25);
|
||||
transform: scale(.25);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.pace .pace-activity {
|
||||
width: 140px;
|
||||
height: 140px;
|
||||
border-radius: 70px;
|
||||
background: #22df80;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
z-index: 1911;
|
||||
-webkit-animation: pace-bounce 1s infinite;
|
||||
-moz-animation: pace-bounce 1s infinite;
|
||||
-o-animation: pace-bounce 1s infinite;
|
||||
-ms-animation: pace-bounce 1s infinite;
|
||||
animation: pace-bounce 1s infinite;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
position: absolute;
|
||||
display: block;
|
||||
left: 50%;
|
||||
bottom: 0;
|
||||
z-index: 1910;
|
||||
margin-left: -30px;
|
||||
width: 60px;
|
||||
height: 75px;
|
||||
background: rgba(20, 20, 20, .1);
|
||||
box-shadow: 0 0 20px 35px rgba(20, 20, 20, .1);
|
||||
border-radius: 30px / 40px;
|
||||
-webkit-transform: scaleY(.3) !important;
|
||||
-moz-transform: scaleY(.3) !important;
|
||||
-ms-transform: scaleY(.3) !important;
|
||||
-o-transform: scaleY(.3) !important;
|
||||
transform: scaleY(.3) !important;
|
||||
-webkit-animation: pace-compress .5s infinite alternate;
|
||||
-moz-animation: pace-compress .5s infinite alternate;
|
||||
-o-animation: pace-compress .5s infinite alternate;
|
||||
-ms-animation: pace-compress .5s infinite alternate;
|
||||
animation: pace-compress .5s infinite alternate;
|
||||
}
|
||||
|
||||
@-webkit-keyframes pace-bounce {
|
||||
0% {
|
||||
top: 0;
|
||||
-webkit-animation-timing-function: ease-in;
|
||||
}
|
||||
40% {}
|
||||
50% {
|
||||
top: 140px;
|
||||
height: 140px;
|
||||
-webkit-animation-timing-function: ease-out;
|
||||
}
|
||||
55% {
|
||||
top: 160px;
|
||||
height: 120px;
|
||||
border-radius: 70px / 60px;
|
||||
-webkit-animation-timing-function: ease-in;
|
||||
}
|
||||
65% {
|
||||
top: 120px;
|
||||
height: 140px;
|
||||
border-radius: 70px;
|
||||
-webkit-animation-timing-function: ease-out;
|
||||
}
|
||||
95% {
|
||||
top: 0;
|
||||
-webkit-animation-timing-function: ease-in;
|
||||
}
|
||||
100% {
|
||||
top: 0;
|
||||
-webkit-animation-timing-function: ease-in;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-keyframes pace-bounce {
|
||||
0% {
|
||||
top: 0;
|
||||
-moz-animation-timing-function: ease-in;
|
||||
}
|
||||
40% {}
|
||||
50% {
|
||||
top: 140px;
|
||||
height: 140px;
|
||||
-moz-animation-timing-function: ease-out;
|
||||
}
|
||||
55% {
|
||||
top: 160px;
|
||||
height: 120px;
|
||||
border-radius: 70px / 60px;
|
||||
-moz-animation-timing-function: ease-in;
|
||||
}
|
||||
65% {
|
||||
top: 120px;
|
||||
height: 140px;
|
||||
border-radius: 70px;
|
||||
-moz-animation-timing-function: ease-out;}
|
||||
95% {
|
||||
top: 0;
|
||||
-moz-animation-timing-function: ease-in;
|
||||
}
|
||||
100% {top: 0;
|
||||
-moz-animation-timing-function: ease-in;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes pace-bounce {
|
||||
0% {
|
||||
top: 0;
|
||||
animation-timing-function: ease-in;
|
||||
}
|
||||
50% {
|
||||
top: 140px;
|
||||
height: 140px;
|
||||
animation-timing-function: ease-out;
|
||||
}
|
||||
55% {
|
||||
top: 160px;
|
||||
height: 120px;
|
||||
border-radius: 70px / 60px;
|
||||
animation-timing-function: ease-in;
|
||||
}
|
||||
65% {
|
||||
top: 120px;
|
||||
height: 140px;
|
||||
border-radius: 70px;
|
||||
animation-timing-function: ease-out;
|
||||
}
|
||||
95% {
|
||||
top: 0;
|
||||
animation-timing-function: ease-in;
|
||||
}
|
||||
100% {
|
||||
top: 0;
|
||||
animation-timing-function: ease-in;
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes pace-compress {
|
||||
0% {
|
||||
bottom: 0;
|
||||
margin-left: -30px;
|
||||
width: 60px;
|
||||
height: 75px;
|
||||
background: rgba(20, 20, 20, .1);
|
||||
box-shadow: 0 0 20px 35px rgba(20, 20, 20, .1);
|
||||
border-radius: 30px / 40px;
|
||||
-webkit-animation-timing-function: ease-in;
|
||||
}
|
||||
100% {
|
||||
bottom: 30px;
|
||||
margin-left: -10px;
|
||||
width: 20px;
|
||||
height: 5px;
|
||||
background: rgba(20, 20, 20, .3);
|
||||
box-shadow: 0 0 20px 35px rgba(20, 20, 20, .3);
|
||||
border-radius: 20px / 20px;
|
||||
-webkit-animation-timing-function: ease-out;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-keyframes pace-compress {
|
||||
0% {
|
||||
bottom: 0;
|
||||
margin-left: -30px;
|
||||
width: 60px;
|
||||
height: 75px;
|
||||
background: rgba(20, 20, 20, .1);
|
||||
box-shadow: 0 0 20px 35px rgba(20, 20, 20, .1);
|
||||
border-radius: 30px / 40px;
|
||||
-moz-animation-timing-function: ease-in;
|
||||
}
|
||||
100% {
|
||||
bottom: 30px;
|
||||
margin-left: -10px;
|
||||
width: 20px;
|
||||
height: 5px;
|
||||
background: rgba(20, 20, 20, .3);
|
||||
box-shadow: 0 0 20px 35px rgba(20, 20, 20, .3);
|
||||
border-radius: 20px / 20px;
|
||||
-moz-animation-timing-function: ease-out;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes pace-compress {
|
||||
0% {
|
||||
bottom: 0;
|
||||
margin-left: -30px;
|
||||
width: 60px;
|
||||
height: 75px;
|
||||
background: rgba(20, 20, 20, .1);
|
||||
box-shadow: 0 0 20px 35px rgba(20, 20, 20, .1);
|
||||
border-radius: 30px / 40px;
|
||||
animation-timing-function: ease-in;
|
||||
}
|
||||
100% {
|
||||
bottom: 30px;
|
||||
margin-left: -10px;
|
||||
width: 20px;
|
||||
height: 5px;
|
||||
background: rgba(20, 20, 20, .3);
|
||||
box-shadow: 0 0 20px 35px rgba(20, 20, 20, .3);
|
||||
border-radius: 20px / 20px;
|
||||
animation-timing-function: ease-out;
|
||||
}
|
||||
}
|
||||
131
public/bower_components/PACE/themes/green/pace-theme-center-atom.css
vendored
Executable file
131
public/bower_components/PACE/themes/green/pace-theme-center-atom.css
vendored
Executable file
@@ -0,0 +1,131 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace.pace-inactive {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
z-index: 2000;
|
||||
position: fixed;
|
||||
height: 60px;
|
||||
width: 100px;
|
||||
margin: auto;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
z-index: 2000;
|
||||
position: absolute;
|
||||
height: 60px;
|
||||
width: 100px;
|
||||
|
||||
-webkit-transform: translate3d(0, 0, 0) !important;
|
||||
-ms-transform: translate3d(0, 0, 0) !important;
|
||||
transform: translate3d(0, 0, 0) !important;
|
||||
}
|
||||
|
||||
.pace .pace-progress:before {
|
||||
content: attr(data-progress-text);
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
background: #22df80;
|
||||
border-radius: 50%;
|
||||
font-family: "Helvetica Neue", sans-serif;
|
||||
font-size: 14px;
|
||||
font-weight: 100;
|
||||
line-height: 1;
|
||||
padding: 20% 0 7px;
|
||||
width: 50%;
|
||||
height: 40%;
|
||||
margin: 10px 0 0 30px;
|
||||
display: block;
|
||||
z-index: 999;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.pace .pace-activity {
|
||||
font-size: 15px;
|
||||
line-height: 1;
|
||||
z-index: 2000;
|
||||
position: absolute;
|
||||
height: 60px;
|
||||
width: 100px;
|
||||
|
||||
display: block;
|
||||
-webkit-animation: pace-theme-center-atom-spin 2s linear infinite;
|
||||
-moz-animation: pace-theme-center-atom-spin 2s linear infinite;
|
||||
-o-animation: pace-theme-center-atom-spin 2s linear infinite;
|
||||
animation: pace-theme-center-atom-spin 2s linear infinite;
|
||||
}
|
||||
|
||||
.pace .pace-activity {
|
||||
border-radius: 50%;
|
||||
border: 5px solid #22df80;
|
||||
content: ' ';
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 60px;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
.pace .pace-activity:after {
|
||||
border-radius: 50%;
|
||||
border: 5px solid #22df80;
|
||||
content: ' ';
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: -5px;
|
||||
left: -5px;
|
||||
height: 60px;
|
||||
width: 100px;
|
||||
|
||||
-webkit-transform: rotate(60deg);
|
||||
-moz-transform: rotate(60deg);
|
||||
-o-transform: rotate(60deg);
|
||||
transform: rotate(60deg);
|
||||
}
|
||||
|
||||
.pace .pace-activity:before {
|
||||
border-radius: 50%;
|
||||
border: 5px solid #22df80;
|
||||
content: ' ';
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: -5px;
|
||||
left: -5px;
|
||||
height: 60px;
|
||||
width: 100px;
|
||||
|
||||
-webkit-transform: rotate(120deg);
|
||||
-moz-transform: rotate(120deg);
|
||||
-o-transform: rotate(120deg);
|
||||
transform: rotate(120deg);
|
||||
}
|
||||
|
||||
@-webkit-keyframes pace-theme-center-atom-spin {
|
||||
0% { -webkit-transform: rotate(0deg) }
|
||||
100% { -webkit-transform: rotate(359deg) }
|
||||
}
|
||||
@-moz-keyframes pace-theme-center-atom-spin {
|
||||
0% { -moz-transform: rotate(0deg) }
|
||||
100% { -moz-transform: rotate(359deg) }
|
||||
}
|
||||
@-o-keyframes pace-theme-center-atom-spin {
|
||||
0% { -o-transform: rotate(0deg) }
|
||||
100% { -o-transform: rotate(359deg) }
|
||||
}
|
||||
@keyframes pace-theme-center-atom-spin {
|
||||
0% { transform: rotate(0deg) }
|
||||
100% { transform: rotate(359deg) }
|
||||
}
|
||||
90
public/bower_components/PACE/themes/green/pace-theme-center-circle.css
vendored
Executable file
90
public/bower_components/PACE/themes/green/pace-theme-center-circle.css
vendored
Executable file
@@ -0,0 +1,90 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
-webkit-perspective: 12rem;
|
||||
-moz-perspective: 12rem;
|
||||
-ms-perspective: 12rem;
|
||||
-o-perspective: 12rem;
|
||||
perspective: 12rem;
|
||||
|
||||
z-index: 2000;
|
||||
position: fixed;
|
||||
height: 6rem;
|
||||
width: 6rem;
|
||||
margin: auto;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.pace.pace-inactive .pace-progress {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
height: 6rem;
|
||||
width: 6rem !important;
|
||||
line-height: 6rem;
|
||||
font-size: 2rem;
|
||||
border-radius: 50%;
|
||||
background: rgba(34, 223, 128, 0.8);
|
||||
color: #fff;
|
||||
font-family: "Helvetica Neue", sans-serif;
|
||||
font-weight: 100;
|
||||
text-align: center;
|
||||
|
||||
-webkit-animation: pace-theme-center-circle-spin linear infinite 2s;
|
||||
-moz-animation: pace-theme-center-circle-spin linear infinite 2s;
|
||||
-ms-animation: pace-theme-center-circle-spin linear infinite 2s;
|
||||
-o-animation: pace-theme-center-circle-spin linear infinite 2s;
|
||||
animation: pace-theme-center-circle-spin linear infinite 2s;
|
||||
|
||||
-webkit-transform-style: preserve-3d;
|
||||
-moz-transform-style: preserve-3d;
|
||||
-ms-transform-style: preserve-3d;
|
||||
-o-transform-style: preserve-3d;
|
||||
transform-style: preserve-3d;
|
||||
}
|
||||
|
||||
.pace .pace-progress:after {
|
||||
content: attr(data-progress-text);
|
||||
display: block;
|
||||
}
|
||||
|
||||
@-webkit-keyframes pace-theme-center-circle-spin {
|
||||
from { -webkit-transform: rotateY(0deg) }
|
||||
to { -webkit-transform: rotateY(360deg) }
|
||||
}
|
||||
|
||||
@-moz-keyframes pace-theme-center-circle-spin {
|
||||
from { -moz-transform: rotateY(0deg) }
|
||||
to { -moz-transform: rotateY(360deg) }
|
||||
}
|
||||
|
||||
@-ms-keyframes pace-theme-center-circle-spin {
|
||||
from { -ms-transform: rotateY(0deg) }
|
||||
to { -ms-transform: rotateY(360deg) }
|
||||
}
|
||||
|
||||
@-o-keyframes pace-theme-center-circle-spin {
|
||||
from { -o-transform: rotateY(0deg) }
|
||||
to { -o-transform: rotateY(360deg) }
|
||||
}
|
||||
|
||||
@keyframes pace-theme-center-circle-spin {
|
||||
from { transform: rotateY(0deg) }
|
||||
to { transform: rotateY(360deg) }
|
||||
}
|
||||
74
public/bower_components/PACE/themes/green/pace-theme-center-radar.css
vendored
Executable file
74
public/bower_components/PACE/themes/green/pace-theme-center-radar.css
vendored
Executable file
@@ -0,0 +1,74 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
z-index: 2000;
|
||||
position: fixed;
|
||||
height: 90px;
|
||||
width: 90px;
|
||||
margin: auto;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.pace.pace-inactive .pace-activity {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pace .pace-activity {
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: -30px;
|
||||
top: -30px;
|
||||
height: 90px;
|
||||
width: 90px;
|
||||
display: block;
|
||||
border-width: 30px;
|
||||
border-style: double;
|
||||
border-color: #22df80 transparent transparent;
|
||||
border-radius: 50%;
|
||||
|
||||
-webkit-animation: spin 1s linear infinite;
|
||||
-moz-animation: spin 1s linear infinite;
|
||||
-o-animation: spin 1s linear infinite;
|
||||
animation: spin 1s linear infinite;
|
||||
}
|
||||
|
||||
.pace .pace-activity:before {
|
||||
content: ' ';
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 10px;
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
display: block;
|
||||
border-width: 10px;
|
||||
border-style: solid;
|
||||
border-color: #22df80 transparent transparent;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
@-webkit-keyframes spin {
|
||||
100% { -webkit-transform: rotate(359deg); }
|
||||
}
|
||||
|
||||
@-moz-keyframes spin {
|
||||
100% { -moz-transform: rotate(359deg); }
|
||||
}
|
||||
|
||||
@-o-keyframes spin {
|
||||
100% { -moz-transform: rotate(359deg); }
|
||||
}
|
||||
|
||||
@keyframes spin {
|
||||
100% { transform: rotate(359deg); }
|
||||
}
|
||||
52
public/bower_components/PACE/themes/green/pace-theme-center-simple.css
vendored
Executable file
52
public/bower_components/PACE/themes/green/pace-theme-center-simple.css
vendored
Executable file
@@ -0,0 +1,52 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
z-index: 2000;
|
||||
position: fixed;
|
||||
margin: auto;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
height: 5px;
|
||||
width: 200px;
|
||||
background: #fff;
|
||||
border: 1px solid #22df80;
|
||||
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
-ms-box-sizing: border-box;
|
||||
-o-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
-moz-transform: translate3d(0, 0, 0);
|
||||
-ms-transform: translate3d(0, 0, 0);
|
||||
-o-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
|
||||
max-width: 200px;
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 100%;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
background: #22df80;
|
||||
}
|
||||
|
||||
.pace.pace-inactive {
|
||||
display: none;
|
||||
}
|
||||
73
public/bower_components/PACE/themes/green/pace-theme-corner-indicator.css
vendored
Executable file
73
public/bower_components/PACE/themes/green/pace-theme-corner-indicator.css
vendored
Executable file
@@ -0,0 +1,73 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.pace .pace-activity {
|
||||
display: block;
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: 300px;
|
||||
height: 300px;
|
||||
background: #22df80;
|
||||
-webkit-transition: -webkit-transform 0.3s;
|
||||
transition: transform 0.3s;
|
||||
-webkit-transform: translateX(100%) translateY(-100%) rotate(45deg);
|
||||
transform: translateX(100%) translateY(-100%) rotate(45deg);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.pace.pace-active .pace-activity {
|
||||
-webkit-transform: translateX(50%) translateY(-50%) rotate(45deg);
|
||||
transform: translateX(50%) translateY(-50%) rotate(45deg);
|
||||
}
|
||||
|
||||
.pace .pace-activity::before,
|
||||
.pace .pace-activity::after {
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
position: absolute;
|
||||
bottom: 30px;
|
||||
left: 50%;
|
||||
display: block;
|
||||
border: 5px solid #fff;
|
||||
border-radius: 50%;
|
||||
content: '';
|
||||
}
|
||||
|
||||
.pace .pace-activity::before {
|
||||
margin-left: -40px;
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
border-right-color: rgba(0, 0, 0, .2);
|
||||
border-left-color: rgba(0, 0, 0, .2);
|
||||
-webkit-animation: pace-theme-corner-indicator-spin 3s linear infinite;
|
||||
animation: pace-theme-corner-indicator-spin 3s linear infinite;
|
||||
}
|
||||
|
||||
.pace .pace-activity::after {
|
||||
bottom: 50px;
|
||||
margin-left: -20px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border-top-color: rgba(0, 0, 0, .2);
|
||||
border-bottom-color: rgba(0, 0, 0, .2);
|
||||
-webkit-animation: pace-theme-corner-indicator-spin 1s linear infinite;
|
||||
animation: pace-theme-corner-indicator-spin 1s linear infinite;
|
||||
}
|
||||
|
||||
@-webkit-keyframes pace-theme-corner-indicator-spin {
|
||||
0% { -webkit-transform: rotate(0deg); }
|
||||
100% { -webkit-transform: rotate(359deg); }
|
||||
}
|
||||
@keyframes pace-theme-corner-indicator-spin {
|
||||
0% { transform: rotate(0deg); }
|
||||
100% { transform: rotate(359deg); }
|
||||
}
|
||||
22
public/bower_components/PACE/themes/green/pace-theme-fill-left.css
vendored
Executable file
22
public/bower_components/PACE/themes/green/pace-theme-fill-left.css
vendored
Executable file
@@ -0,0 +1,22 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.pace-inactive {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
background-color: rgba(34, 223, 128, 0.19999999999999996);
|
||||
position: fixed;
|
||||
z-index: -1;
|
||||
top: 0;
|
||||
right: 100%;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
}
|
||||
77
public/bower_components/PACE/themes/green/pace-theme-flash.css
vendored
Executable file
77
public/bower_components/PACE/themes/green/pace-theme-flash.css
vendored
Executable file
@@ -0,0 +1,77 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.pace-inactive {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
background: #22df80;
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
top: 0;
|
||||
right: 100%;
|
||||
width: 100%;
|
||||
height: 2px;
|
||||
}
|
||||
|
||||
.pace .pace-progress-inner {
|
||||
display: block;
|
||||
position: absolute;
|
||||
right: 0px;
|
||||
width: 100px;
|
||||
height: 100%;
|
||||
box-shadow: 0 0 10px #22df80, 0 0 5px #22df80;
|
||||
opacity: 1.0;
|
||||
-webkit-transform: rotate(3deg) translate(0px, -4px);
|
||||
-moz-transform: rotate(3deg) translate(0px, -4px);
|
||||
-ms-transform: rotate(3deg) translate(0px, -4px);
|
||||
-o-transform: rotate(3deg) translate(0px, -4px);
|
||||
transform: rotate(3deg) translate(0px, -4px);
|
||||
}
|
||||
|
||||
.pace .pace-activity {
|
||||
display: block;
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
top: 15px;
|
||||
right: 15px;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
border: solid 2px transparent;
|
||||
border-top-color: #22df80;
|
||||
border-left-color: #22df80;
|
||||
border-radius: 10px;
|
||||
-webkit-animation: pace-spinner 400ms linear infinite;
|
||||
-moz-animation: pace-spinner 400ms linear infinite;
|
||||
-ms-animation: pace-spinner 400ms linear infinite;
|
||||
-o-animation: pace-spinner 400ms linear infinite;
|
||||
animation: pace-spinner 400ms linear infinite;
|
||||
}
|
||||
|
||||
@-webkit-keyframes pace-spinner {
|
||||
0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); }
|
||||
100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); }
|
||||
}
|
||||
@-moz-keyframes pace-spinner {
|
||||
0% { -moz-transform: rotate(0deg); transform: rotate(0deg); }
|
||||
100% { -moz-transform: rotate(360deg); transform: rotate(360deg); }
|
||||
}
|
||||
@-o-keyframes pace-spinner {
|
||||
0% { -o-transform: rotate(0deg); transform: rotate(0deg); }
|
||||
100% { -o-transform: rotate(360deg); transform: rotate(360deg); }
|
||||
}
|
||||
@-ms-keyframes pace-spinner {
|
||||
0% { -ms-transform: rotate(0deg); transform: rotate(0deg); }
|
||||
100% { -ms-transform: rotate(360deg); transform: rotate(360deg); }
|
||||
}
|
||||
@keyframes pace-spinner {
|
||||
0% { transform: rotate(0deg); transform: rotate(0deg); }
|
||||
100% { transform: rotate(360deg); transform: rotate(360deg); }
|
||||
}
|
||||
41
public/bower_components/PACE/themes/green/pace-theme-flat-top.css
vendored
Executable file
41
public/bower_components/PACE/themes/green/pace-theme-flat-top.css
vendored
Executable file
@@ -0,0 +1,41 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
|
||||
-webkit-transform: translate3d(0, -50px, 0);
|
||||
-ms-transform: translate3d(0, -50px, 0);
|
||||
transform: translate3d(0, -50px, 0);
|
||||
|
||||
-webkit-transition: -webkit-transform .5s ease-out;
|
||||
-ms-transition: -webkit-transform .5s ease-out;
|
||||
transition: transform .5s ease-out;
|
||||
}
|
||||
|
||||
.pace.pace-active {
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
-ms-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
display: block;
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
top: 0;
|
||||
right: 100%;
|
||||
width: 100%;
|
||||
height: 10px;
|
||||
background: #22df80;
|
||||
|
||||
pointer-events: none;
|
||||
}
|
||||
198
public/bower_components/PACE/themes/green/pace-theme-loading-bar.css
vendored
Executable file
198
public/bower_components/PACE/themes/green/pace-theme-loading-bar.css
vendored
Executable file
@@ -0,0 +1,198 @@
|
||||
/* This is a compiled file, you should be editing the file in the templates directory */
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
-ms-box-sizing: border-box;
|
||||
-o-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
|
||||
-webkit-border-radius: 10px;
|
||||
-moz-border-radius: 10px;
|
||||
border-radius: 10px;
|
||||
|
||||
-webkit-background-clip: padding-box;
|
||||
-moz-background-clip: padding;
|
||||
background-clip: padding-box;
|
||||
|
||||
z-index: 2000;
|
||||
position: fixed;
|
||||
margin: auto;
|
||||
top: 12px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
width: 200px;
|
||||
height: 50px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
-ms-box-sizing: border-box;
|
||||
-o-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
|
||||
-webkit-border-radius: 2px;
|
||||
-moz-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
|
||||
-webkit-background-clip: padding-box;
|
||||
-moz-background-clip: padding;
|
||||
background-clip: padding-box;
|
||||
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
|
||||
display: block;
|
||||
position: absolute;
|
||||
right: 100%;
|
||||
margin-right: -7px;
|
||||
width: 93%;
|
||||
top: 7px;
|
||||
height: 14px;
|
||||
font-size: 12px;
|
||||
background: #22df80;
|
||||
color: #22df80;
|
||||
line-height: 60px;
|
||||
font-weight: bold;
|
||||
font-family: Helvetica, Arial, "Lucida Grande", sans-serif;
|
||||
|
||||
-webkit-box-shadow: 120px 0 #fff, 240px 0 #fff;
|
||||
-ms-box-shadow: 120px 0 #fff, 240px 0 #fff;
|
||||
box-shadow: 120px 0 #fff, 240px 0 #fff;
|
||||
}
|
||||
|
||||
.pace .pace-progress:after {
|
||||
content: attr(data-progress-text);
|
||||
display: inline-block;
|
||||
position: fixed;
|
||||
width: 45px;
|
||||
text-align: right;
|
||||
right: 0;
|
||||
padding-right: 16px;
|
||||
top: 4px;
|
||||
}
|
||||
|
||||
.pace .pace-progress[data-progress-text="0%"]:after { right: -200px }
|
||||
.pace .pace-progress[data-progress-text="1%"]:after { right: -198.14px }
|
||||
.pace .pace-progress[data-progress-text="2%"]:after { right: -196.28px }
|
||||
.pace .pace-progress[data-progress-text="3%"]:after { right: -194.42px }
|
||||
.pace .pace-progress[data-progress-text="4%"]:after { right: -192.56px }
|
||||
.pace .pace-progress[data-progress-text="5%"]:after { right: -190.7px }
|
||||
.pace .pace-progress[data-progress-text="6%"]:after { right: -188.84px }
|
||||
.pace .pace-progress[data-progress-text="7%"]:after { right: -186.98px }
|
||||
.pace .pace-progress[data-progress-text="8%"]:after { right: -185.12px }
|
||||
.pace .pace-progress[data-progress-text="9%"]:after { right: -183.26px }
|
||||
.pace .pace-progress[data-progress-text="10%"]:after { right: -181.4px }
|
||||
.pace .pace-progress[data-progress-text="11%"]:after { right: -179.54px }
|
||||
.pace .pace-progress[data-progress-text="12%"]:after { right: -177.68px }
|
||||
.pace .pace-progress[data-progress-text="13%"]:after { right: -175.82px }
|
||||
.pace .pace-progress[data-progress-text="14%"]:after { right: -173.96px }
|
||||
.pace .pace-progress[data-progress-text="15%"]:after { right: -172.1px }
|
||||
.pace .pace-progress[data-progress-text="16%"]:after { right: -170.24px }
|
||||
.pace .pace-progress[data-progress-text="17%"]:after { right: -168.38px }
|
||||
.pace .pace-progress[data-progress-text="18%"]:after { right: -166.52px }
|
||||
.pace .pace-progress[data-progress-text="19%"]:after { right: -164.66px }
|
||||
.pace .pace-progress[data-progress-text="20%"]:after { right: -162.8px }
|
||||
.pace .pace-progress[data-progress-text="21%"]:after { right: -160.94px }
|
||||
.pace .pace-progress[data-progress-text="22%"]:after { right: -159.08px }
|
||||
.pace .pace-progress[data-progress-text="23%"]:after { right: -157.22px }
|
||||
.pace .pace-progress[data-progress-text="24%"]:after { right: -155.36px }
|
||||
.pace .pace-progress[data-progress-text="25%"]:after { right: -153.5px }
|
||||
.pace .pace-progress[data-progress-text="26%"]:after { right: -151.64px }
|
||||
.pace .pace-progress[data-progress-text="27%"]:after { right: -149.78px }
|
||||
.pace .pace-progress[data-progress-text="28%"]:after { right: -147.92px }
|
||||
.pace .pace-progress[data-progress-text="29%"]:after { right: -146.06px }
|
||||
.pace .pace-progress[data-progress-text="30%"]:after { right: -144.2px }
|
||||
.pace .pace-progress[data-progress-text="31%"]:after { right: -142.34px }
|
||||
.pace .pace-progress[data-progress-text="32%"]:after { right: -140.48px }
|
||||
.pace .pace-progress[data-progress-text="33%"]:after { right: -138.62px }
|
||||
.pace .pace-progress[data-progress-text="34%"]:after { right: -136.76px }
|
||||
.pace .pace-progress[data-progress-text="35%"]:after { right: -134.9px }
|
||||
.pace .pace-progress[data-progress-text="36%"]:after { right: -133.04px }
|
||||
.pace .pace-progress[data-progress-text="37%"]:after { right: -131.18px }
|
||||
.pace .pace-progress[data-progress-text="38%"]:after { right: -129.32px }
|
||||
.pace .pace-progress[data-progress-text="39%"]:after { right: -127.46px }
|
||||
.pace .pace-progress[data-progress-text="40%"]:after { right: -125.6px }
|
||||
.pace .pace-progress[data-progress-text="41%"]:after { right: -123.74px }
|
||||
.pace .pace-progress[data-progress-text="42%"]:after { right: -121.88px }
|
||||
.pace .pace-progress[data-progress-text="43%"]:after { right: -120.02px }
|
||||
.pace .pace-progress[data-progress-text="44%"]:after { right: -118.16px }
|
||||
.pace .pace-progress[data-progress-text="45%"]:after { right: -116.3px }
|
||||
.pace .pace-progress[data-progress-text="46%"]:after { right: -114.44px }
|
||||
.pace .pace-progress[data-progress-text="47%"]:after { right: -112.58px }
|
||||
.pace .pace-progress[data-progress-text="48%"]:after { right: -110.72px }
|
||||
.pace .pace-progress[data-progress-text="49%"]:after { right: -108.86px }
|
||||
.pace .pace-progress[data-progress-text="50%"]:after { right: -107px }
|
||||
.pace .pace-progress[data-progress-text="51%"]:after { right: -105.14px }
|
||||
.pace .pace-progress[data-progress-text="52%"]:after { right: -103.28px }
|
||||
.pace .pace-progress[data-progress-text="53%"]:after { right: -101.42px }
|
||||
.pace .pace-progress[data-progress-text="54%"]:after { right: -99.56px }
|
||||
.pace .pace-progress[data-progress-text="55%"]:after { right: -97.7px }
|
||||
.pace .pace-progress[data-progress-text="56%"]:after { right: -95.84px }
|
||||
.pace .pace-progress[data-progress-text="57%"]:after { right: -93.98px }
|
||||
.pace .pace-progress[data-progress-text="58%"]:after { right: -92.12px }
|
||||
.pace .pace-progress[data-progress-text="59%"]:after { right: -90.26px }
|
||||
.pace .pace-progress[data-progress-text="60%"]:after { right: -88.4px }
|
||||
.pace .pace-progress[data-progress-text="61%"]:after { right: -86.53999999999999px }
|
||||
.pace .pace-progress[data-progress-text="62%"]:after { right: -84.68px }
|
||||
.pace .pace-progress[data-progress-text="63%"]:after { right: -82.82px }
|
||||
.pace .pace-progress[data-progress-text="64%"]:after { right: -80.96000000000001px }
|
||||
.pace .pace-progress[data-progress-text="65%"]:after { right: -79.1px }
|
||||
.pace .pace-progress[data-progress-text="66%"]:after { right: -77.24px }
|
||||
.pace .pace-progress[data-progress-text="67%"]:after { right: -75.38px }
|
||||
.pace .pace-progress[data-progress-text="68%"]:after { right: -73.52px }
|
||||
.pace .pace-progress[data-progress-text="69%"]:after { right: -71.66px }
|
||||
.pace .pace-progress[data-progress-text="70%"]:after { right: -69.8px }
|
||||
.pace .pace-progress[data-progress-text="71%"]:after { right: -67.94px }
|
||||
.pace .pace-progress[data-progress-text="72%"]:after { right: -66.08px }
|
||||
.pace .pace-progress[data-progress-text="73%"]:after { right: -64.22px }
|
||||
.pace .pace-progress[data-progress-text="74%"]:after { right: -62.36px }
|
||||
.pace .pace-progress[data-progress-text="75%"]:after { right: -60.5px }
|
||||
.pace .pace-progress[data-progress-text="76%"]:after { right: -58.64px }
|
||||
.pace .pace-progress[data-progress-text="77%"]:after { right: -56.78px }
|
||||
.pace .pace-progress[data-progress-text="78%"]:after { right: -54.92px }
|
||||
.pace .pace-progress[data-progress-text="79%"]:after { right: -53.06px }
|
||||
.pace .pace-progress[data-progress-text="80%"]:after { right: -51.2px }
|
||||
.pace .pace-progress[data-progress-text="81%"]:after { right: -49.34px }
|
||||
.pace .pace-progress[data-progress-text="82%"]:after { right: -47.480000000000004px }
|
||||
.pace .pace-progress[data-progress-text="83%"]:after { right: -45.62px }
|
||||
.pace .pace-progress[data-progress-text="84%"]:after { right: -43.76px }
|
||||
.pace .pace-progress[data-progress-text="85%"]:after { right: -41.9px }
|
||||
.pace .pace-progress[data-progress-text="86%"]:after { right: -40.04px }
|
||||
.pace .pace-progress[data-progress-text="87%"]:after { right: -38.18px }
|
||||
.pace .pace-progress[data-progress-text="88%"]:after { right: -36.32px }
|
||||
.pace .pace-progress[data-progress-text="89%"]:after { right: -34.46px }
|
||||
.pace .pace-progress[data-progress-text="90%"]:after { right: -32.6px }
|
||||
.pace .pace-progress[data-progress-text="91%"]:after { right: -30.740000000000002px }
|
||||
.pace .pace-progress[data-progress-text="92%"]:after { right: -28.880000000000003px }
|
||||
.pace .pace-progress[data-progress-text="93%"]:after { right: -27.02px }
|
||||
.pace .pace-progress[data-progress-text="94%"]:after { right: -25.16px }
|
||||
.pace .pace-progress[data-progress-text="95%"]:after { right: -23.3px }
|
||||
.pace .pace-progress[data-progress-text="96%"]:after { right: -21.439999999999998px }
|
||||
.pace .pace-progress[data-progress-text="97%"]:after { right: -19.58px }
|
||||
.pace .pace-progress[data-progress-text="98%"]:after { right: -17.72px }
|
||||
.pace .pace-progress[data-progress-text="99%"]:after { right: -15.86px }
|
||||
.pace .pace-progress[data-progress-text="100%"]:after { right: -14px }
|
||||
|
||||
|
||||
.pace .pace-activity {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 28px;
|
||||
z-index: 2001;
|
||||
box-shadow: inset 0 0 0 2px #22df80, inset 0 0 0 7px #FFF;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.pace.pace-inactive {
|
||||
display: none;
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user