added validation, error messages, help tooptips, async question loading and textarea input
This commit is contained in:
2
.idea/typescript-compiler.xml
generated
2
.idea/typescript-compiler.xml
generated
@@ -1,8 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="TypeScriptCompiler">
|
<component name="TypeScriptCompiler">
|
||||||
<option name="isCompilerEnabled" value="true" />
|
|
||||||
<option name="nodeInterpreterTextField" value="$USER_HOME$/Documents/Portables/nodejs/node" />
|
|
||||||
<option name="useConfig" value="true" />
|
<option name="useConfig" value="true" />
|
||||||
<option name="showAllErrors" value="true" />
|
<option name="showAllErrors" value="true" />
|
||||||
</component>
|
</component>
|
||||||
|
|||||||
726
.idea/workspace.xml
generated
726
.idea/workspace.xml
generated
@@ -1,11 +1,23 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="77c12afa-55f1-462c-96eb-1733ba14cab9" name="Default" comment="Merging completed">
|
<list default="true" id="77c12afa-55f1-462c-96eb-1733ba14cab9" name="Default" comment="">
|
||||||
|
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/app/modules/dyn-form/inputs/textarea-input.component.ts" />
|
||||||
|
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/app/modules/dyn-form/services/value.service.ts" />
|
||||||
|
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/app/modules/dyn-form/types/keys.pipe.ts" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/typescript-compiler.xml" afterPath="$PROJECT_DIR$/.idea/typescript-compiler.xml" />
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/typescript-compiler.xml" afterPath="$PROJECT_DIR$/.idea/typescript-compiler.xml" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
|
||||||
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/app/app.component.ts" afterPath="$PROJECT_DIR$/src/app/app.component.ts" />
|
||||||
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/app/modules/dyn-form/dyn-form.component.ts" afterPath="$PROJECT_DIR$/src/app/modules/dyn-form/dyn-form.component.ts" />
|
||||||
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/app/modules/dyn-form/dyn-form.module.ts" afterPath="$PROJECT_DIR$/src/app/modules/dyn-form/dyn-form.module.ts" />
|
||||||
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/app/modules/dyn-form/dyn-question.component.ts" afterPath="$PROJECT_DIR$/src/app/modules/dyn-form/dyn-question.component.ts" />
|
||||||
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/app/modules/dyn-form/inputs/counter-input.component.ts" afterPath="$PROJECT_DIR$/src/app/modules/dyn-form/inputs/counter-input.component.ts" />
|
||||||
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/app/modules/dyn-form/inputs/custom-input.component.ts" afterPath="$PROJECT_DIR$/src/app/modules/dyn-form/inputs/custom-input.component.ts" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/app/modules/dyn-form/inputs/dropdown-input.component.ts" afterPath="$PROJECT_DIR$/src/app/modules/dyn-form/inputs/dropdown-input.component.ts" />
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/app/modules/dyn-form/inputs/dropdown-input.component.ts" afterPath="$PROJECT_DIR$/src/app/modules/dyn-form/inputs/dropdown-input.component.ts" />
|
||||||
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/app/modules/dyn-form/inputs/tag-input.component.ts" afterPath="$PROJECT_DIR$/src/app/modules/dyn-form/inputs/tag-input.component.ts" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/app/modules/dyn-form/services/question.service.ts" afterPath="$PROJECT_DIR$/src/app/modules/dyn-form/services/question.service.ts" />
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/app/modules/dyn-form/services/question.service.ts" afterPath="$PROJECT_DIR$/src/app/modules/dyn-form/services/question.service.ts" />
|
||||||
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/app/services/http-cached.service.ts" afterPath="$PROJECT_DIR$/src/app/services/http-cached.service.ts" />
|
||||||
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/tsconfig.json" afterPath="$PROJECT_DIR$/src/tsconfig.json" />
|
||||||
</list>
|
</list>
|
||||||
<ignored path="$PROJECT_DIR$/.tmp/" />
|
<ignored path="$PROJECT_DIR$/.tmp/" />
|
||||||
<ignored path="$PROJECT_DIR$/temp/" />
|
<ignored path="$PROJECT_DIR$/temp/" />
|
||||||
@@ -19,69 +31,28 @@
|
|||||||
</component>
|
</component>
|
||||||
<component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
|
<component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
|
||||||
<component name="FileEditorManager">
|
<component name="FileEditorManager">
|
||||||
<leaf>
|
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
||||||
<file leaf-file-name="question.service.ts" pinned="false" current-in-tab="false">
|
<file leaf-file-name="dyn-form.component.ts" pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/services/question.service.ts">
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/dyn-form.component.ts">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="68">
|
<state relative-caret-position="51">
|
||||||
<caret line="6" column="22" lean-forward="false" selection-start-line="6" selection-start-column="22" selection-end-line="6" selection-end-column="22" />
|
<caret line="6" column="13" lean-forward="true" selection-start-line="6" selection-start-column="13" selection-end-line="6" selection-end-column="13" />
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file leaf-file-name="question.interface.ts" pinned="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/types/question.interface.ts">
|
|
||||||
<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 />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file leaf-file-name="dropdown-input.component.ts" pinned="false" current-in-tab="true">
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/inputs/dropdown-input.component.ts">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="141">
|
|
||||||
<caret line="45" column="12" lean-forward="false" selection-start-line="45" selection-start-column="12" selection-end-line="45" selection-end-column="12" />
|
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#114#0" expanded="true" />
|
<element signature="e#0#95#0" expanded="true" />
|
||||||
<marker date="1496129954275" expanded="true" signature="748:861" ph="..." />
|
<marker date="1496417492032" expanded="true" signature="315:695" ph="..." />
|
||||||
|
<marker date="1496417492032" expanded="true" signature="600:683" ph="..." />
|
||||||
</folding>
|
</folding>
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
</file>
|
</file>
|
||||||
<file leaf-file-name="counter-input.component.ts" pinned="false" current-in-tab="false">
|
<file leaf-file-name="app.component.ts" pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/inputs/counter-input.component.ts">
|
<entry file="file://$PROJECT_DIR$/src/app/app.component.ts">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="0">
|
<state relative-caret-position="270">
|
||||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
<caret line="21" column="8" lean-forward="false" selection-start-line="21" selection-start-column="8" selection-end-line="21" selection-end-column="8" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#54#0" expanded="true" />
|
<element signature="e#0#40#0" expanded="true" />
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file leaf-file-name="custom-input.component.ts" pinned="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/inputs/custom-input.component.ts">
|
|
||||||
<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 />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file leaf-file-name="hidden-input.component.ts" pinned="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/inputs/hidden-input.component.ts">
|
|
||||||
<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#59#0" expanded="true" />
|
|
||||||
</folding>
|
</folding>
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
@@ -90,10 +61,41 @@
|
|||||||
<file leaf-file-name="tag-input.component.ts" pinned="false" current-in-tab="false">
|
<file leaf-file-name="tag-input.component.ts" pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/inputs/tag-input.component.ts">
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/inputs/tag-input.component.ts">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="0">
|
<state relative-caret-position="158">
|
||||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
<caret line="29" column="10" lean-forward="false" selection-start-line="29" selection-start-column="10" selection-end-line="29" selection-end-column="10" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#80#0" expanded="true" />
|
<element signature="e#0#59#0" expanded="true" />
|
||||||
|
<marker date="1496417102606" expanded="true" signature="404:466" ph="..." />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file leaf-file-name="value.service.ts" pinned="false" current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/services/value.service.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="17">
|
||||||
|
<caret line="1" column="72" lean-forward="false" selection-start-line="1" selection-start-column="72" selection-end-line="1" selection-end-column="72" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#43#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file leaf-file-name="dyn-question.component.ts" pinned="false" current-in-tab="true">
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/dyn-question.component.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="158">
|
||||||
|
<caret line="43" column="2" lean-forward="true" selection-start-line="43" selection-start-column="2" selection-end-line="43" selection-end-column="2" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#69#0" expanded="true" />
|
||||||
|
<marker date="1496417101926" expanded="true" signature="304:2231" ph="..." />
|
||||||
|
<marker date="1496417101926" expanded="true" signature="766:1071" ph="..." />
|
||||||
|
<marker date="1496417101926" expanded="true" signature="1121:1379" ph="..." />
|
||||||
|
<marker date="1496417101926" expanded="true" signature="1433:1763" ph="..." />
|
||||||
|
<marker date="1496417101926" expanded="true" signature="1816:2082" ph="..." />
|
||||||
|
<marker date="1496417101926" expanded="true" signature="2137:2218" ph="..." />
|
||||||
</folding>
|
</folding>
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
@@ -101,13 +103,37 @@
|
|||||||
</file>
|
</file>
|
||||||
</leaf>
|
</leaf>
|
||||||
</component>
|
</component>
|
||||||
|
<component name="FileTemplateManagerImpl">
|
||||||
|
<option name="RECENT_TEMPLATES">
|
||||||
|
<list>
|
||||||
|
<option value="TypeScript File" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
<component name="Git.Settings">
|
<component name="Git.Settings">
|
||||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||||
</component>
|
</component>
|
||||||
<component name="IdeDocumentHistory">
|
<component name="IdeDocumentHistory">
|
||||||
<option name="CHANGED_PATHS">
|
<option name="CHANGED_PATHS">
|
||||||
<list>
|
<list>
|
||||||
|
<option value="$PROJECT_DIR$/bs-config.json" />
|
||||||
|
<option value="$PROJECT_DIR$/src/tsconfig.json" />
|
||||||
|
<option value="$PROJECT_DIR$/src/app/sizer.component.ts" />
|
||||||
|
<option value="$PROJECT_DIR$/src/app/app.module.ts" />
|
||||||
|
<option value="$PROJECT_DIR$/src/app/app.component.html" />
|
||||||
|
<option value="$PROJECT_DIR$/src/app/modules/dyn-form/inputs/custom-input.component.ts" />
|
||||||
|
<option value="$PROJECT_DIR$/src/app/modules/dyn-form/inputs/textarea-input.component.ts" />
|
||||||
|
<option value="$PROJECT_DIR$/src/app/modules/dyn-form/inputs/counter-input.component.ts" />
|
||||||
|
<option value="$PROJECT_DIR$/src/app/modules/dyn-form/types/keys.pipe.ts" />
|
||||||
<option value="$PROJECT_DIR$/src/app/modules/dyn-form/inputs/dropdown-input.component.ts" />
|
<option value="$PROJECT_DIR$/src/app/modules/dyn-form/inputs/dropdown-input.component.ts" />
|
||||||
|
<option value="$PROJECT_DIR$/src/app/modules/dyn-form/inputs/tag-input.component.ts" />
|
||||||
|
<option value="$PROJECT_DIR$/src/app/modules/dyn-form/services/question.service.ts" />
|
||||||
|
<option value="$PROJECT_DIR$/src/app/modules/dyn-form/dyn-form.module.ts" />
|
||||||
|
<option value="$PROJECT_DIR$/src/app/modules/dyn-form/dyn-question.component.ts" />
|
||||||
|
<option value="$PROJECT_DIR$/src/app/services/http-cached.service.ts" />
|
||||||
|
<option value="$PROJECT_DIR$/src/app/modules/dyn-form/dyn-form.component.ts" />
|
||||||
|
<option value="$PROJECT_DIR$/src/app/app.component.ts" />
|
||||||
|
<option value="$PROJECT_DIR$/src/app/modules/dyn-form/services/value.service.ts" />
|
||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
@@ -128,6 +154,20 @@
|
|||||||
<option name="width" value="1456" />
|
<option name="width" value="1456" />
|
||||||
<option name="height" value="876" />
|
<option name="height" value="876" />
|
||||||
</component>
|
</component>
|
||||||
|
<component name="ProjectInspectionProfilesVisibleTreeState">
|
||||||
|
<entry key="Project Default">
|
||||||
|
<profile-state>
|
||||||
|
<expanded-state>
|
||||||
|
<State>
|
||||||
|
<id />
|
||||||
|
</State>
|
||||||
|
<State>
|
||||||
|
<id>Internationalization issues</id>
|
||||||
|
</State>
|
||||||
|
</expanded-state>
|
||||||
|
</profile-state>
|
||||||
|
</entry>
|
||||||
|
</component>
|
||||||
<component name="ProjectView">
|
<component name="ProjectView">
|
||||||
<navigator currentView="ProjectPane" proportions="" version="1">
|
<navigator currentView="ProjectPane" proportions="" version="1">
|
||||||
<flattenPackages />
|
<flattenPackages />
|
||||||
@@ -143,6 +183,8 @@
|
|||||||
<foldersAlwaysOnTop value="true" />
|
<foldersAlwaysOnTop value="true" />
|
||||||
</navigator>
|
</navigator>
|
||||||
<panes>
|
<panes>
|
||||||
|
<pane id="Scope" />
|
||||||
|
<pane id="Scratches" />
|
||||||
<pane id="ProjectPane">
|
<pane id="ProjectPane">
|
||||||
<subPane>
|
<subPane>
|
||||||
<PATH>
|
<PATH>
|
||||||
@@ -295,12 +337,38 @@
|
|||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||||
</PATH_ELEMENT>
|
</PATH_ELEMENT>
|
||||||
<PATH_ELEMENT>
|
<PATH_ELEMENT>
|
||||||
<option name="myItemId" value="services" />
|
<option name="myItemId" value="types" />
|
||||||
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||||
|
</PATH_ELEMENT>
|
||||||
|
</PATH>
|
||||||
|
<PATH>
|
||||||
|
<PATH_ELEMENT>
|
||||||
|
<option name="myItemId" value="AngularDynFormModule" />
|
||||||
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||||
|
</PATH_ELEMENT>
|
||||||
|
<PATH_ELEMENT>
|
||||||
|
<option name="myItemId" value="AngularDynFormModule" />
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||||
</PATH_ELEMENT>
|
</PATH_ELEMENT>
|
||||||
<PATH_ELEMENT>
|
<PATH_ELEMENT>
|
||||||
<option name="myItemId" value="question.service.ts" />
|
<option name="myItemId" value="src" />
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NestingTreeNode" />
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||||
|
</PATH_ELEMENT>
|
||||||
|
<PATH_ELEMENT>
|
||||||
|
<option name="myItemId" value="app" />
|
||||||
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||||
|
</PATH_ELEMENT>
|
||||||
|
<PATH_ELEMENT>
|
||||||
|
<option name="myItemId" value="modules" />
|
||||||
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||||
|
</PATH_ELEMENT>
|
||||||
|
<PATH_ELEMENT>
|
||||||
|
<option name="myItemId" value="dyn-form" />
|
||||||
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||||
|
</PATH_ELEMENT>
|
||||||
|
<PATH_ELEMENT>
|
||||||
|
<option name="myItemId" value="services" />
|
||||||
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||||
</PATH_ELEMENT>
|
</PATH_ELEMENT>
|
||||||
</PATH>
|
</PATH>
|
||||||
<PATH>
|
<PATH>
|
||||||
@@ -335,13 +403,19 @@
|
|||||||
</PATH>
|
</PATH>
|
||||||
</subPane>
|
</subPane>
|
||||||
</pane>
|
</pane>
|
||||||
<pane id="Scratches" />
|
|
||||||
<pane id="Scope" />
|
|
||||||
</panes>
|
</panes>
|
||||||
</component>
|
</component>
|
||||||
<component name="PropertiesComponent">
|
<component name="PropertiesComponent">
|
||||||
<property name="WebServerToolWindowFactoryState" value="false" />
|
<property name="WebServerToolWindowFactoryState" value="false" />
|
||||||
<property name="HbShouldOpenHtmlAsHb" value="" />
|
<property name="HbShouldOpenHtmlAsHb" value="" />
|
||||||
|
<property name="nodejs_interpreter_path" value="$USER_HOME$/Documents/Portables/nodejs/node" />
|
||||||
|
<property name="settings.editor.selected.configurable" value="preferences.general" />
|
||||||
|
<property name="typescript-compiler-editor-notification" value="false" />
|
||||||
|
</component>
|
||||||
|
<component name="RecentsManager">
|
||||||
|
<key name="CopyFile.RECENT_KEYS">
|
||||||
|
<recent name="C:\Users\seedorf_s1\WebstormProjects\AngularDynFormModule\src\app\modules\dyn-form\inputs" />
|
||||||
|
</key>
|
||||||
</component>
|
</component>
|
||||||
<component name="RunDashboard">
|
<component name="RunDashboard">
|
||||||
<option name="ruleStates">
|
<option name="ruleStates">
|
||||||
@@ -355,7 +429,7 @@
|
|||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
<component name="RunManager">
|
<component name="RunManager" selected="npm.Start">
|
||||||
<configuration default="true" type="DartCommandLineRunConfigurationType" factoryName="Dart Command Line Application">
|
<configuration default="true" type="DartCommandLineRunConfigurationType" factoryName="Dart Command Line Application">
|
||||||
<method />
|
<method />
|
||||||
</configuration>
|
</configuration>
|
||||||
@@ -394,6 +468,12 @@
|
|||||||
<method />
|
<method />
|
||||||
</configuration>
|
</configuration>
|
||||||
<configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
|
<configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
|
||||||
|
<node-interpreter>project</node-interpreter>
|
||||||
|
<node-options />
|
||||||
|
<gulpfile />
|
||||||
|
<tasks />
|
||||||
|
<arguments />
|
||||||
|
<envs />
|
||||||
<method />
|
<method />
|
||||||
</configuration>
|
</configuration>
|
||||||
<configuration default="true" type="js.build_tools.npm" factoryName="npm">
|
<configuration default="true" type="js.build_tools.npm" factoryName="npm">
|
||||||
@@ -416,10 +496,26 @@
|
|||||||
<recursive>false</recursive>
|
<recursive>false</recursive>
|
||||||
<method />
|
<method />
|
||||||
</configuration>
|
</configuration>
|
||||||
|
<configuration default="false" name="Start" type="js.build_tools.npm" factoryName="npm">
|
||||||
|
<package-json value="$PROJECT_DIR$/package.json" />
|
||||||
|
<command value="run" />
|
||||||
|
<scripts>
|
||||||
|
<script value="start" />
|
||||||
|
</scripts>
|
||||||
|
<node-interpreter value="project" />
|
||||||
|
<envs />
|
||||||
|
<method />
|
||||||
|
</configuration>
|
||||||
|
<list size="1">
|
||||||
|
<item index="0" class="java.lang.String" itemvalue="npm.Start" />
|
||||||
|
</list>
|
||||||
</component>
|
</component>
|
||||||
<component name="ShelveChangesManager" show_recycled="false">
|
<component name="ShelveChangesManager" show_recycled="false">
|
||||||
<option name="remove_strategy" value="false" />
|
<option name="remove_strategy" value="false" />
|
||||||
</component>
|
</component>
|
||||||
|
<component name="SvnConfiguration">
|
||||||
|
<configuration />
|
||||||
|
</component>
|
||||||
<component name="TaskManager">
|
<component name="TaskManager">
|
||||||
<task active="true" id="Default" summary="Default task">
|
<task active="true" id="Default" summary="Default task">
|
||||||
<changelist id="77c12afa-55f1-462c-96eb-1733ba14cab9" name="Default" comment="" />
|
<changelist id="77c12afa-55f1-462c-96eb-1733ba14cab9" name="Default" comment="" />
|
||||||
@@ -427,7 +523,11 @@
|
|||||||
<option name="number" value="Default" />
|
<option name="number" value="Default" />
|
||||||
<option name="presentableId" value="Default" />
|
<option name="presentableId" value="Default" />
|
||||||
<updated>1496129405467</updated>
|
<updated>1496129405467</updated>
|
||||||
<workItem from="1496129414693" duration="548000" />
|
<workItem from="1496129414693" duration="16269000" />
|
||||||
|
<workItem from="1496212456684" duration="4548000" />
|
||||||
|
<workItem from="1496298794463" duration="23800000" />
|
||||||
|
<workItem from="1496385401533" duration="17758000" />
|
||||||
|
<workItem from="1496408793177" duration="8927000" />
|
||||||
</task>
|
</task>
|
||||||
<task id="LOCAL-00001" summary="Merging">
|
<task id="LOCAL-00001" summary="Merging">
|
||||||
<created>1496129612668</created>
|
<created>1496129612668</created>
|
||||||
@@ -436,33 +536,41 @@
|
|||||||
<option name="project" value="LOCAL" />
|
<option name="project" value="LOCAL" />
|
||||||
<updated>1496129612668</updated>
|
<updated>1496129612668</updated>
|
||||||
</task>
|
</task>
|
||||||
<option name="localTasksCounter" value="2" />
|
<task id="LOCAL-00002" summary="Merging completed">
|
||||||
|
<created>1496129996798</created>
|
||||||
|
<option name="number" value="00002" />
|
||||||
|
<option name="presentableId" value="LOCAL-00002" />
|
||||||
|
<option name="project" value="LOCAL" />
|
||||||
|
<updated>1496129996798</updated>
|
||||||
|
</task>
|
||||||
|
<option name="localTasksCounter" value="3" />
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
<component name="TimeTrackingManager">
|
<component name="TimeTrackingManager">
|
||||||
<option name="totallyTimeSpent" value="548000" />
|
<option name="totallyTimeSpent" value="71302000" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ToolWindowManager">
|
<component name="ToolWindowManager">
|
||||||
<frame x="-8" y="-8" width="1456" height="876" extended-state="6" />
|
<frame x="-8" y="-8" width="1456" height="876" extended-state="6" />
|
||||||
|
<editor active="true" />
|
||||||
<layout>
|
<layout>
|
||||||
<window_info id="TypeScript" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.3293011" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
<window_info id="TypeScript" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3293011" sideWeight="0.49717912" order="11" 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.2496474" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
|
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25599435" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
|
||||||
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" 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="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3293011" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.3293011" sideWeight="0.5" order="10" 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="-1" side_tool="true" 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.3293011" sideWeight="0.50282085" order="7" side_tool="true" 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.3293011" sideWeight="0.5" order="-1" 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.3293011" sideWeight="0.5" order="8" 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="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3293011" sideWeight="0.49717912" order="2" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="npm" 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="-1" side_tool="true" content_ui="tabs" />
|
<window_info id="npm" 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="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="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="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="-1" side_tool="false" content_ui="tabs" />
|
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" 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="-1" side_tool="true" 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="3" 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="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="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="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="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="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="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="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="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="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" />
|
<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" />
|
||||||
|
<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="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="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="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" />
|
||||||
</layout>
|
</layout>
|
||||||
</component>
|
</component>
|
||||||
@@ -504,6 +612,12 @@
|
|||||||
<option value="$PROJECT_DIR$/src/app/app.module.js.map" />
|
<option value="$PROJECT_DIR$/src/app/app.module.js.map" />
|
||||||
<option value="$PROJECT_DIR$/src/app/app.component.js" />
|
<option value="$PROJECT_DIR$/src/app/app.component.js" />
|
||||||
<option value="$PROJECT_DIR$/src/app/app.component.js.map" />
|
<option value="$PROJECT_DIR$/src/app/app.component.js.map" />
|
||||||
|
<option value="$PROJECT_DIR$/src/app/modules/dyn-form/inputs/textarea-input.component.js" />
|
||||||
|
<option value="$PROJECT_DIR$/src/app/modules/dyn-form/inputs/textarea-input.component.js.map" />
|
||||||
|
<option value="$PROJECT_DIR$/src/app/modules/dyn-form/services/value.service.js.map" />
|
||||||
|
<option value="$PROJECT_DIR$/src/app/modules/dyn-form/services/value.service.js" />
|
||||||
|
<option value="$PROJECT_DIR$/src/app/modules/dyn-form/types/keys.pipe.js.map" />
|
||||||
|
<option value="$PROJECT_DIR$/src/app/modules/dyn-form/types/keys.pipe.js" />
|
||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
@@ -513,60 +627,338 @@
|
|||||||
<component name="VcsManagerConfiguration">
|
<component name="VcsManagerConfiguration">
|
||||||
<MESSAGE value="Merging" />
|
<MESSAGE value="Merging" />
|
||||||
<MESSAGE value="Merging completed" />
|
<MESSAGE value="Merging completed" />
|
||||||
<option name="LAST_COMMIT_MESSAGE" value="Merging completed" />
|
<MESSAGE value="added validation, error messages, help tooptips, async question loading and textarea input" />
|
||||||
|
<option name="LAST_COMMIT_MESSAGE" value="added validation, error messages, help tooptips, async question loading and textarea input" />
|
||||||
</component>
|
</component>
|
||||||
<component name="XDebuggerManager">
|
<component name="XDebuggerManager">
|
||||||
<breakpoint-manager />
|
<breakpoint-manager>
|
||||||
|
<option name="time" value="2" />
|
||||||
|
</breakpoint-manager>
|
||||||
<watches-manager />
|
<watches-manager />
|
||||||
</component>
|
</component>
|
||||||
<component name="editorHistoryManager">
|
<component name="editorHistoryManager">
|
||||||
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/inputs/counter-input.component.ts">
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/types/question.interface.js">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="0">
|
<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" />
|
<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#54#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/inputs/custom-input.component.ts">
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/types/question.interface.ts">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="0">
|
<state relative-caret-position="85">
|
||||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
<caret line="5" column="19" lean-forward="false" selection-start-line="5" selection-start-column="19" selection-end-line="5" selection-end-column="19" />
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/inputs/hidden-input.component.ts">
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/dyn-form.component.ts">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="0">
|
<state relative-caret-position="408">
|
||||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
<caret line="24" column="46" lean-forward="false" selection-start-line="24" selection-start-column="46" selection-end-line="24" selection-end-column="46" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#59#0" expanded="true" />
|
<element signature="e#0#95#0" expanded="true" />
|
||||||
|
<marker date="1496417492032" expanded="true" signature="315:695" ph="..." />
|
||||||
|
<marker date="1496417492032" expanded="true" signature="600:683" ph="..." />
|
||||||
</folding>
|
</folding>
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/inputs/tag-input.component.ts">
|
<entry file="file://$PROJECT_DIR$/src/app/app.component.html">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="0">
|
<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" />
|
<caret line="0" column="84" lean-forward="false" selection-start-line="0" selection-start-column="75" selection-end-line="0" selection-end-column="84" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/dyn-question.component.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="323">
|
||||||
|
<caret line="21" column="27" lean-forward="false" selection-start-line="21" selection-start-column="27" selection-end-line="21" selection-end-column="27" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#80#0" expanded="true" />
|
<element signature="e#0#69#0" expanded="true" />
|
||||||
|
<marker date="1496417101926" expanded="true" signature="304:2231" ph="..." />
|
||||||
|
<marker date="1496417101926" expanded="true" signature="766:1071" ph="..." />
|
||||||
|
<marker date="1496417101926" expanded="true" signature="1121:1379" ph="..." />
|
||||||
|
<marker date="1496417101926" expanded="true" signature="1433:1763" ph="..." />
|
||||||
|
<marker date="1496417101926" expanded="true" signature="1816:2082" ph="..." />
|
||||||
|
<marker date="1496417101926" expanded="true" signature="2137:2218" ph="..." />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/dyn-form.module.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="85">
|
||||||
|
<caret line="14" column="17" lean-forward="false" selection-start-line="14" selection-start-column="17" selection-end-line="14" selection-end-column="17" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#53#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/inputs/dropdown-input.component.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="816">
|
||||||
|
<caret line="51" column="38" lean-forward="false" selection-start-line="51" selection-start-column="38" selection-end-line="51" selection-end-column="38" />
|
||||||
|
<folding>
|
||||||
|
<marker date="1496417102661" expanded="true" signature="399:512" ph="..." />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/inputs/textarea-input.component.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="629">
|
||||||
|
<caret line="37" column="21" lean-forward="true" selection-start-line="37" selection-start-column="21" selection-end-line="37" selection-end-column="21" />
|
||||||
|
<folding>
|
||||||
|
<marker date="1496416164940" expanded="true" signature="343:363" ph="..." />
|
||||||
</folding>
|
</folding>
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/services/question.service.ts">
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/services/question.service.ts">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="68">
|
<state relative-caret-position="799">
|
||||||
<caret line="6" column="22" lean-forward="false" selection-start-line="6" selection-start-column="22" selection-end-line="6" selection-end-column="22" />
|
<caret line="47" column="7" lean-forward="true" selection-start-line="47" selection-start-column="7" selection-end-line="47" selection-end-column="7" />
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/inputs/counter-input.component.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="374">
|
||||||
|
<caret line="22" column="6" lean-forward="true" selection-start-line="22" selection-start-column="6" selection-end-line="22" selection-end-column="6" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/types/question.interface.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" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/dyn-form.component.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="408">
|
||||||
|
<caret line="24" column="46" lean-forward="true" selection-start-line="24" selection-start-column="46" selection-end-line="24" selection-end-column="46" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#95#0" expanded="true" />
|
||||||
|
<marker date="1496417492032" expanded="true" signature="315:695" ph="..." />
|
||||||
|
<marker date="1496417492032" expanded="true" signature="600:683" ph="..." />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/app.component.html">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="0">
|
||||||
|
<caret line="0" column="84" lean-forward="false" selection-start-line="0" selection-start-column="75" selection-end-line="0" selection-end-column="84" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/dyn-question.component.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="357">
|
||||||
|
<caret line="21" column="27" lean-forward="true" selection-start-line="21" selection-start-column="27" selection-end-line="21" selection-end-column="27" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#69#0" expanded="true" />
|
||||||
|
<marker date="1496417101926" expanded="true" signature="304:2231" ph="..." />
|
||||||
|
<marker date="1496417101926" expanded="true" signature="766:1071" ph="..." />
|
||||||
|
<marker date="1496417101926" expanded="true" signature="1121:1379" ph="..." />
|
||||||
|
<marker date="1496417101926" expanded="true" signature="1433:1763" ph="..." />
|
||||||
|
<marker date="1496417101926" expanded="true" signature="1816:2082" ph="..." />
|
||||||
|
<marker date="1496417101926" expanded="true" signature="2137:2218" ph="..." />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/dyn-form.module.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="238">
|
||||||
|
<caret line="14" column="17" lean-forward="true" selection-start-line="14" selection-start-column="17" selection-end-line="14" selection-end-column="17" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#53#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/app.component.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="272">
|
||||||
|
<caret line="16" column="7" lean-forward="true" selection-start-line="16" selection-start-column="7" selection-end-line="16" selection-end-column="7" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/inputs/dropdown-input.component.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="867">
|
||||||
|
<caret line="51" column="38" lean-forward="false" selection-start-line="51" selection-start-column="38" selection-end-line="51" selection-end-column="38" />
|
||||||
|
<folding>
|
||||||
|
<marker date="1496417102661" expanded="true" signature="399:512" ph="..." />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/types/question.interface.ts">
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/types/question.interface.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="17">
|
||||||
|
<caret line="1" column="55" lean-forward="false" selection-start-line="1" selection-start-column="55" selection-end-line="1" selection-end-column="55" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/package.json">
|
||||||
|
<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" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/types/question.interface.js.map">
|
||||||
|
<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" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
<provider editor-type-id="sourcemapFileViewerProvider">
|
||||||
|
<state />
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/types/question.interface.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" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/types/question.interface.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="459">
|
||||||
|
<caret line="27" column="23" lean-forward="false" selection-start-line="27" selection-start-column="23" selection-end-line="27" selection-end-column="23" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/tslint.json">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="136">
|
||||||
|
<caret line="8" column="14" lean-forward="false" selection-start-line="8" selection-start-column="14" selection-end-line="8" selection-end-column="14" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/bs-config.json">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="119">
|
||||||
|
<caret line="7" column="21" lean-forward="false" selection-start-line="7" selection-start-column="21" selection-end-line="7" selection-end-column="21" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/sizer.component.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="136">
|
||||||
|
<caret line="8" column="9" lean-forward="true" selection-start-line="8" selection-start-column="9" selection-end-line="8" selection-end-column="9" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/node_modules/@angular/forms/src/directives/validators.d.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="17">
|
||||||
|
<caret line="162" column="3" lean-forward="false" selection-start-line="162" selection-start-column="3" selection-end-line="162" selection-end-column="3" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/inputs/counter-input.component.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="0">
|
||||||
|
<caret line="0" column="29" lean-forward="false" selection-start-line="0" selection-start-column="29" selection-end-line="0" selection-end-column="29" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/inputs/custom-input.component.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="527">
|
||||||
|
<caret line="31" column="18" lean-forward="false" selection-start-line="31" selection-start-column="18" selection-end-line="31" selection-end-column="18" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#94#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/inputs/dropdown-input.component.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="0">
|
||||||
|
<caret line="0" column="47" lean-forward="false" selection-start-line="0" selection-start-column="47" selection-end-line="0" selection-end-column="47" />
|
||||||
|
<folding>
|
||||||
|
<marker date="1496417102661" expanded="true" signature="399:512" ph="..." />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/inputs/hidden-input.component.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="168">
|
||||||
|
<caret line="17" column="6" lean-forward="false" selection-start-line="17" selection-start-column="6" selection-end-line="17" selection-end-column="6" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/inputs/textarea-input.component.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="117">
|
||||||
|
<caret line="38" column="18" lean-forward="false" selection-start-line="38" selection-start-column="18" selection-end-line="38" selection-end-column="18" />
|
||||||
|
<folding>
|
||||||
|
<marker date="1496416164940" expanded="true" signature="343:363" ph="..." />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/services/question.service.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="136">
|
||||||
|
<caret line="10" column="52" lean-forward="false" selection-start-line="10" selection-start-column="52" selection-end-line="10" selection-end-column="52" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/types/keys.pipe.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="17">
|
||||||
|
<caret line="1" column="0" lean-forward="false" selection-start-line="1" selection-start-column="0" selection-end-line="1" selection-end-column="0" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/dyn-form.module.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="527">
|
||||||
|
<caret line="31" column="10" lean-forward="false" selection-start-line="31" selection-start-column="10" selection-end-line="31" selection-end-column="10" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#53#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/app.module.ts">
|
||||||
|
<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#39#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/services/response.interface.ts">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="0">
|
<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" />
|
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||||
@@ -574,13 +966,145 @@
|
|||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/inputs/dropdown-input.component.ts">
|
<entry file="file://$PROJECT_DIR$/src/app/services/http-base.service.ts">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="141">
|
<state relative-caret-position="-1649">
|
||||||
<caret line="45" column="12" lean-forward="false" selection-start-line="45" selection-start-column="12" selection-end-line="45" selection-end-column="12" />
|
<caret line="20" column="7" lean-forward="false" selection-start-line="20" selection-start-column="4" selection-end-line="20" selection-end-column="7" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#114#0" expanded="true" />
|
<element signature="e#0#76#0" expanded="true" />
|
||||||
<marker date="1496129954275" expanded="true" signature="748:861" ph="..." />
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/app.component.html">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="0">
|
||||||
|
<caret line="0" column="115" lean-forward="false" selection-start-line="0" selection-start-column="115" selection-end-line="0" selection-end-column="115" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/index.html">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="255">
|
||||||
|
<caret line="15" column="46" lean-forward="false" selection-start-line="15" selection-start-column="46" selection-end-line="15" selection-end-column="46" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/main.ts">
|
||||||
|
<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 />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/styles.css">
|
||||||
|
<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 />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/systemjs.config.extras.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="n#!!doc" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/systemjs.config.js">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="440">
|
||||||
|
<caret line="35" column="11" lean-forward="false" selection-start-line="35" selection-start-column="11" selection-end-line="35" selection-end-column="11" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/systemjs-angular-loader.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 />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/tsconfig.json">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="102">
|
||||||
|
<caret line="6" column="16" lean-forward="false" selection-start-line="6" selection-start-column="16" selection-end-line="6" selection-end-column="16" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/services/http-cached.service.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="731">
|
||||||
|
<caret line="46" column="0" lean-forward="true" selection-start-line="46" selection-start-column="0" selection-end-line="46" selection-end-column="0" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/dyn-form.component.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="51">
|
||||||
|
<caret line="6" column="13" lean-forward="true" selection-start-line="6" selection-start-column="13" selection-end-line="6" selection-end-column="13" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#95#0" expanded="true" />
|
||||||
|
<marker date="1496417492032" expanded="true" signature="315:695" ph="..." />
|
||||||
|
<marker date="1496417492032" expanded="true" signature="600:683" ph="..." />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/app.component.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="270">
|
||||||
|
<caret line="21" column="8" lean-forward="false" selection-start-line="21" selection-start-column="8" selection-end-line="21" selection-end-column="8" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#40#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/services/value.service.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="17">
|
||||||
|
<caret line="1" column="72" lean-forward="false" selection-start-line="1" selection-start-column="72" selection-end-line="1" selection-end-column="72" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#43#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/inputs/tag-input.component.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="158">
|
||||||
|
<caret line="29" column="10" lean-forward="false" selection-start-line="29" selection-start-column="10" selection-end-line="29" selection-end-column="10" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#59#0" expanded="true" />
|
||||||
|
<marker date="1496417102606" expanded="true" signature="404:466" ph="..." />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/app/modules/dyn-form/dyn-question.component.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="158">
|
||||||
|
<caret line="43" column="2" lean-forward="true" selection-start-line="43" selection-start-column="2" selection-end-line="43" selection-end-column="2" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#69#0" expanded="true" />
|
||||||
|
<marker date="1496417101926" expanded="true" signature="304:2231" ph="..." />
|
||||||
|
<marker date="1496417101926" expanded="true" signature="766:1071" ph="..." />
|
||||||
|
<marker date="1496417101926" expanded="true" signature="1121:1379" ph="..." />
|
||||||
|
<marker date="1496417101926" expanded="true" signature="1433:1763" ph="..." />
|
||||||
|
<marker date="1496417101926" expanded="true" signature="1816:2082" ph="..." />
|
||||||
|
<marker date="1496417101926" expanded="true" signature="2137:2218" ph="..." />
|
||||||
</folding>
|
</folding>
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import {Component, Inject} from '@angular/core';
|
import {Component} from '@angular/core';
|
||||||
import {QuestionInterface} from './modules/dyn-form/types/question.interface';
|
import {QuestionInterface} from './modules/dyn-form/types/question.interface';
|
||||||
import {QuestionService} from './modules/dyn-form/services/question.service';
|
import {QuestionService} from './modules/dyn-form/services/question.service';
|
||||||
|
import {ValueService} from './modules/dyn-form/services/value.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'my-app',
|
selector: 'my-app',
|
||||||
@@ -8,16 +9,21 @@ import {QuestionService} from './modules/dyn-form/services/question.service';
|
|||||||
})
|
})
|
||||||
|
|
||||||
export class AppComponent {
|
export class AppComponent {
|
||||||
public formQuestions: QuestionInterface[] = [];
|
public formQuestions: QuestionInterface[] = null;
|
||||||
|
public formValue: Object = null;
|
||||||
|
|
||||||
constructor(private questionService: QuestionService) {
|
constructor(private questionService: QuestionService, private valueService: ValueService) {
|
||||||
this.questionService.getQuestions((res, err) => {
|
this.questionService.getQuestions((res, err) => {
|
||||||
|
if (!err)
|
||||||
this.formQuestions = res;
|
this.formQuestions = res;
|
||||||
});
|
});
|
||||||
|
this.valueService.getValues((res, err) => {
|
||||||
|
if (!err)
|
||||||
|
this.formValue = res;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static submit(value: any) {
|
||||||
submit(value: any) {
|
|
||||||
console.log('send', value);
|
console.log('send', value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';
|
import {Component, EventEmitter, Input, OnChanges, Output, SimpleChanges} from '@angular/core';
|
||||||
import {QuestionInterface} from './types/question.interface';
|
import {QuestionInterface} from './types/question.interface';
|
||||||
import {FormControl, FormGroup} from '@angular/forms';
|
import {FormControl, FormGroup} from '@angular/forms';
|
||||||
|
|
||||||
@@ -6,33 +6,39 @@ import {FormControl, FormGroup} from '@angular/forms';
|
|||||||
selector: 'dyn-form',
|
selector: 'dyn-form',
|
||||||
template: `
|
template: `
|
||||||
<form (ngSubmit)="submit()" [formGroup]="form">
|
<form (ngSubmit)="submit()" [formGroup]="form">
|
||||||
<dyn-question *ngFor="let question of questions" [hidden]="question.properties.methods && question.properties.methods.indexOf(type)==-1" [question]="question" [form]="form" [type]="type"></dyn-question>
|
<dyn-question *ngFor="let question of questions" [hidden]="question.properties.methods && question.properties.methods.indexOf(type)==-1" [question]="question" [form]="form" [type]="type" (onChange)="valueChange.emit(this.form.value)"></dyn-question>
|
||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
<button type="submit">Save</button>
|
<button [disabled]="form.invalid" type="submit">Save</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
`
|
`
|
||||||
})
|
})
|
||||||
export class DynFormComponent implements OnInit {
|
export class DynFormComponent implements OnChanges {
|
||||||
@Input() questions: QuestionInterface[];
|
@Input() questions: QuestionInterface[];
|
||||||
@Input() value: any;
|
@Input() value: {[_:string]: any};
|
||||||
@Input() type: "'insert'|'update'|'delete'|'view'";
|
@Input() type: "'insert'|'update'|'delete'|'view'";
|
||||||
@Output() valueChange: EventEmitter<any> = new EventEmitter<any>();
|
@Output() valueChange: EventEmitter<any> = new EventEmitter<any>();
|
||||||
@Output() onSubmit: EventEmitter<any> = new EventEmitter<any>();
|
@Output() onSubmit: EventEmitter<any> = new EventEmitter<any>();
|
||||||
|
|
||||||
private form: FormGroup;
|
private form: FormGroup;
|
||||||
|
|
||||||
public ngOnInit () {
|
public ngOnChanges(changes: SimpleChanges) {
|
||||||
|
console.log("changes form", changes);
|
||||||
|
if (changes['questions']) {
|
||||||
let controls = {};
|
let controls = {};
|
||||||
for(let i = 0; i < this.questions.length; i++) {
|
for(let i = 0; this.questions && i < this.questions.length; i++) {
|
||||||
let key = this.questions[i].properties.key;
|
let key = this.questions[i].properties.key;
|
||||||
controls[key] = new FormControl(this.value[key]);
|
controls[key] = new FormControl();
|
||||||
}
|
}
|
||||||
this.form = new FormGroup(controls);
|
this.form = new FormGroup(controls);
|
||||||
}
|
}
|
||||||
|
if ((changes['questions'] || changes['value']) && this.form && this.value) {
|
||||||
|
this.form.patchValue(this.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private submit() {
|
private submit() {
|
||||||
console.log("isValid", this.form.valid);
|
if (this.form.valid)
|
||||||
this.onSubmit.emit(this.form.value);
|
this.onSubmit.emit(this.form.value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,10 +4,13 @@ import { NgModule } from '@angular/core';
|
|||||||
import { DynFormComponent } from './dyn-form.component';
|
import { DynFormComponent } from './dyn-form.component';
|
||||||
import {DynQuestionComponent} from './dyn-question.component';
|
import {DynQuestionComponent} from './dyn-question.component';
|
||||||
import {CounterInputComponent} from './inputs/counter-input.component';
|
import {CounterInputComponent} from './inputs/counter-input.component';
|
||||||
import {KeysPipe, TagInputComponent} from './inputs/tag-input.component';
|
import {TagInputComponent} from './inputs/tag-input.component';
|
||||||
import {HiddenInputComponent} from './inputs/hidden-input.component';
|
import {HiddenInputComponent} from './inputs/hidden-input.component';
|
||||||
import {DropdownInputComponent} from './inputs/dropdown-input.component';
|
import {DropdownInputComponent} from './inputs/dropdown-input.component';
|
||||||
import {QuestionService} from './services/question.service';
|
import {QuestionService} from './services/question.service';
|
||||||
|
import {TextareaInputComponent} from './inputs/textarea-input.component';
|
||||||
|
import {ValueService} from './services/value.service';
|
||||||
|
import {KeysPipe} from './types/keys.pipe';
|
||||||
|
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
@@ -25,10 +28,12 @@ import {QuestionService} from './services/question.service';
|
|||||||
TagInputComponent,
|
TagInputComponent,
|
||||||
HiddenInputComponent,
|
HiddenInputComponent,
|
||||||
DropdownInputComponent,
|
DropdownInputComponent,
|
||||||
|
TextareaInputComponent,
|
||||||
KeysPipe
|
KeysPipe
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
QuestionService
|
QuestionService,
|
||||||
|
ValueService
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
export class DynFormModule { }
|
export class DynFormModule { }
|
||||||
|
|||||||
@@ -1,12 +1,15 @@
|
|||||||
import {Component, EventEmitter, Input, Output} from '@angular/core';
|
import {Component, EventEmitter, Input, Output} from '@angular/core';
|
||||||
import {QuestionInterface} from './types/question.interface';
|
import {QuestionInterface} from './types/question.interface';
|
||||||
import {FormGroup} from '@angular/forms';
|
import {FormGroup, ValidationErrors} from '@angular/forms';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dyn-question',
|
selector: 'dyn-question',
|
||||||
template: `
|
template: `
|
||||||
<div [ngSwitch]="question.type" [formGroup]="form">
|
<div [ngSwitch]="question.type" [formGroup]="form">
|
||||||
<label [for]="question.properties.key">{{question.properties.label}}</label>
|
<label [for]="question.properties.key">{{question.properties.label ? question.properties.label + (question.constraints.optional ? '' : ' *') : ''}}</label>
|
||||||
|
<i [hidden]="question.description" class="help circle icon" (mouseover)="onHover(true)" (mouseout)="onHover(false)">Help</i>
|
||||||
|
<a [hidden]="!hoverState" class="ui pointing red basic label">{{question.description}}</a><br>
|
||||||
|
|
||||||
<tag-input *ngSwitchCase="'flag'"
|
<tag-input *ngSwitchCase="'flag'"
|
||||||
[formControlName]="question.properties.key" [id]="question.properties.key"
|
[formControlName]="question.properties.key" [id]="question.properties.key"
|
||||||
[nullable]="question.constraints.optional" [readonly]="type=='view'"
|
[nullable]="question.constraints.optional" [readonly]="type=='view'"
|
||||||
@@ -21,6 +24,14 @@ import {FormGroup} from '@angular/forms';
|
|||||||
[nullable]="question.constraints.optional" [readonly]="type=='view'"
|
[nullable]="question.constraints.optional" [readonly]="type=='view'"
|
||||||
[items]="question.properties.options"
|
[items]="question.properties.options"
|
||||||
(ngModelChange)="change()"></dropdown-input>
|
(ngModelChange)="change()"></dropdown-input>
|
||||||
|
<textarea-input *ngSwitchCase="'textbox'"
|
||||||
|
[formControlName]="question.properties.key" [id]="question.properties.key"
|
||||||
|
[nullable]="question.constraints.optional" [readonly]="type=='view'"
|
||||||
|
(ngModelChange)="change()"></textarea-input>
|
||||||
|
|
||||||
|
<ul [hidden]="!errorList.length">
|
||||||
|
<li *ngFor="let error of errorList">{{error}}</li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
`
|
`
|
||||||
})
|
})
|
||||||
@@ -29,8 +40,26 @@ export class DynQuestionComponent {
|
|||||||
@Input() type: "'insert'|'update'|'delete'|'view'";
|
@Input() type: "'insert'|'update'|'delete'|'view'";
|
||||||
@Input() form: FormGroup;
|
@Input() form: FormGroup;
|
||||||
@Output() onChange: EventEmitter<any> = new EventEmitter<any>();
|
@Output() onChange: EventEmitter<any> = new EventEmitter<any>();
|
||||||
|
public hoverState: any = false;
|
||||||
|
private errorList: Array<string> = [];
|
||||||
|
|
||||||
|
onHover(state: boolean) {
|
||||||
|
this.hoverState = state;
|
||||||
|
}
|
||||||
|
|
||||||
change() {
|
change() {
|
||||||
|
setTimeout(() => {
|
||||||
|
this.errorList = [];
|
||||||
|
let control = this.form.controls[this.question.properties.key];
|
||||||
|
if (control.untouched || control.valid)
|
||||||
|
return null;
|
||||||
|
let errors: ValidationErrors = control.errors;
|
||||||
|
for (let key in errors) {
|
||||||
|
if (errors.hasOwnProperty(key)) {
|
||||||
|
this.errorList.push(errors[key].message);
|
||||||
|
}
|
||||||
|
}
|
||||||
this.onChange.emit();
|
this.onChange.emit();
|
||||||
|
}, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Component, forwardRef } from '@angular/core';
|
import {Component, forwardRef} from '@angular/core';
|
||||||
import { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormControl, ValidationErrors } from '@angular/forms';
|
import { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormControl, ValidationErrors } from '@angular/forms';
|
||||||
import {CustomInputComponent} from "./custom-input.component";
|
import {CustomInputComponent} from "./custom-input.component";
|
||||||
|
|
||||||
@@ -6,9 +6,9 @@ import {CustomInputComponent} from "./custom-input.component";
|
|||||||
selector: 'counter-input',
|
selector: 'counter-input',
|
||||||
template:
|
template:
|
||||||
`
|
`
|
||||||
<button (click)="onChange(-1)" (blur)="onBlur()">-</button>
|
<button (click)="onChange(-1)">-</button>
|
||||||
{{value}}
|
{{value}}
|
||||||
<button (click)="onChange(1)" (blur)="onBlur()">+</button>
|
<button (click)="onChange(1)">+</button>
|
||||||
`,
|
`,
|
||||||
providers: [
|
providers: [
|
||||||
{
|
{
|
||||||
@@ -23,6 +23,7 @@ import {CustomInputComponent} from "./custom-input.component";
|
|||||||
}]
|
}]
|
||||||
})
|
})
|
||||||
export class CounterInputComponent extends CustomInputComponent {
|
export class CounterInputComponent extends CustomInputComponent {
|
||||||
|
|
||||||
// set initial value
|
// set initial value
|
||||||
public writeValue(obj: any): void {
|
public writeValue(obj: any): void {
|
||||||
if (obj) {
|
if (obj) {
|
||||||
@@ -33,9 +34,12 @@ export class CounterInputComponent extends CustomInputComponent {
|
|||||||
|
|
||||||
// validates the form, returns null when valid else the validation object
|
// validates the form, returns null when valid else the validation object
|
||||||
public validate(c: FormControl): ValidationErrors {
|
public validate(c: FormControl): ValidationErrors {
|
||||||
|
if (!this.initComplete)
|
||||||
|
return null;
|
||||||
return (!this.parseError) ? null : {
|
return (!this.parseError) ? null : {
|
||||||
numberParseError: {
|
numberParseError: {
|
||||||
valid: false,
|
valid: false,
|
||||||
|
message: "Not a valid number!"
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -47,9 +51,4 @@ export class CounterInputComponent extends CustomInputComponent {
|
|||||||
|
|
||||||
super.change();
|
super.change();
|
||||||
}
|
}
|
||||||
|
|
||||||
// on touched
|
|
||||||
protected onBlur(): void {
|
|
||||||
super.blur();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,20 @@
|
|||||||
import {ControlValueAccessor, FormControl, ValidationErrors, Validator} from '@angular/forms';
|
import {ControlValueAccessor, FormControl, ValidationErrors, Validator} from '@angular/forms';
|
||||||
|
import {AfterViewInit} from '@angular/core';
|
||||||
|
|
||||||
export abstract class CustomInputComponent implements ControlValueAccessor, Validator {
|
export abstract class CustomInputComponent implements ControlValueAccessor, Validator, AfterViewInit {
|
||||||
protected value: any;
|
protected value: any;
|
||||||
protected parseError: boolean;
|
protected parseError: boolean;
|
||||||
private propagateChange: (_: any) => void = () => {};
|
private propagateChange: (_: any) => void = () => {};
|
||||||
private propagateTouch: () => void = () => {};
|
private propagateTouch: () => void = () => {};
|
||||||
|
protected initComplete: boolean = false;
|
||||||
|
private isTouched: boolean = false;
|
||||||
|
|
||||||
|
public ngAfterViewInit() {
|
||||||
|
setTimeout(() => {
|
||||||
|
this.initComplete = true;
|
||||||
|
this.change();
|
||||||
|
}, 0);
|
||||||
|
}
|
||||||
|
|
||||||
// set initial value
|
// set initial value
|
||||||
public abstract writeValue(obj: any): void;
|
public abstract writeValue(obj: any): void;
|
||||||
@@ -23,12 +33,17 @@ export abstract class CustomInputComponent implements ControlValueAccessor, Vali
|
|||||||
public abstract validate(c: FormControl): ValidationErrors;
|
public abstract validate(c: FormControl): ValidationErrors;
|
||||||
|
|
||||||
// on change
|
// on change
|
||||||
protected change(): void {
|
protected change(noTouch?: boolean): void {
|
||||||
|
if (!noTouch)
|
||||||
|
this.touch();
|
||||||
this.propagateChange(this.value);
|
this.propagateChange(this.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
// on touch
|
// on change
|
||||||
protected blur(): void {
|
protected touch(): void {
|
||||||
|
if (!this.isTouched) {
|
||||||
this.propagateTouch();
|
this.propagateTouch();
|
||||||
|
this.isTouched = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,18 +1,6 @@
|
|||||||
import {Component, forwardRef, Inject, Input, OnChanges, Pipe, PipeTransform, SimpleChanges} from '@angular/core';
|
import {Component, forwardRef, Input, OnChanges, SimpleChanges} from '@angular/core';
|
||||||
import { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormControl, ValidationErrors } from '@angular/forms';
|
import { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormControl, ValidationErrors } from '@angular/forms';
|
||||||
import {CustomInputComponent} from "./custom-input.component";
|
import {CustomInputComponent} from "./custom-input.component";
|
||||||
import {HttpCachedService} from '../../../services/http-cached.service';
|
|
||||||
|
|
||||||
@Pipe({name: 'keys'})
|
|
||||||
export class KeysPipe implements PipeTransform {
|
|
||||||
transform(value: Object, args:string[]) : any {
|
|
||||||
let keys = [];
|
|
||||||
for (let key in value) {
|
|
||||||
keys.push({key: key, value: value[key]});
|
|
||||||
}
|
|
||||||
return keys;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dropdown-input',
|
selector: 'dropdown-input',
|
||||||
@@ -42,10 +30,6 @@ export class DropdownInputComponent extends CustomInputComponent implements OnCh
|
|||||||
private listedItems: Array<{key: string, value: string}> = [];
|
private listedItems: Array<{key: string, value: string}> = [];
|
||||||
private constVal: string;
|
private constVal: string;
|
||||||
|
|
||||||
constructor(private httpCachedService: HttpCachedService) {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
// set initial value
|
// set initial value
|
||||||
public writeValue(obj: any): void {
|
public writeValue(obj: any): void {
|
||||||
console.log("init: ", obj);
|
console.log("init: ", obj);
|
||||||
@@ -54,14 +38,17 @@ export class DropdownInputComponent extends CustomInputComponent implements OnCh
|
|||||||
}
|
}
|
||||||
|
|
||||||
public ngOnChanges(changes: SimpleChanges) {
|
public ngOnChanges(changes: SimpleChanges) {
|
||||||
if (changes['items'] || changes['nullable']) {
|
console.log("onchnage: ", this.value);
|
||||||
|
if (changes['items'] || changes['nullable'] || changes['readonly']) {
|
||||||
if (this.nullable)
|
if (this.nullable)
|
||||||
this.listedItems = [{key: "", value: "N/A"}, {key: null, value: "N/A"}].concat(this.items);
|
this.listedItems = [{key: "", value: "N/A"}, {key: null, value: "N/A"}].concat(this.items);
|
||||||
else
|
else
|
||||||
this.listedItems = [].concat(this.items);
|
this.listedItems = this.items;
|
||||||
}
|
|
||||||
this.updateConst();
|
this.updateConst();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private updateConst() {
|
private updateConst() {
|
||||||
if (this.readonly) {
|
if (this.readonly) {
|
||||||
@@ -72,19 +59,29 @@ export class DropdownInputComponent extends CustomInputComponent implements OnCh
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log(this.readonly, this.listedItems, this.value, this.constVal);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// validates the form, returns null when valid else the validation object
|
// validates the form, returns null when valid else the validation object
|
||||||
public validate(c: FormControl): ValidationErrors {
|
public validate(c: FormControl): ValidationErrors {
|
||||||
|
console.log("validate", this.value, this.initComplete, this.nullable, this.items);
|
||||||
|
if (!this.initComplete)
|
||||||
|
return null;
|
||||||
if (this.value===null) {
|
if (this.value===null) {
|
||||||
return this.nullable ? null : {notNullable: {valid: false}};
|
return this.nullable ? null : {notNullable: {
|
||||||
|
valid: false,
|
||||||
|
message: "This field is required!"
|
||||||
|
}};
|
||||||
}
|
}
|
||||||
for (let i=0; i<this.items.length; i++) {
|
for (let i=0; i<this.items.length; i++) {
|
||||||
|
console.log(this.items[i].key, this.value);
|
||||||
if (this.items[i].key==this.value)
|
if (this.items[i].key==this.value)
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return {invalidValue: {valid: false}};
|
console.log("ret invalid");
|
||||||
|
return {invalidValue: {
|
||||||
|
valid: false,
|
||||||
|
message: "This value is invalid. Please select another value!"
|
||||||
|
}};
|
||||||
}
|
}
|
||||||
|
|
||||||
// on button click
|
// on button click
|
||||||
|
|||||||
@@ -1,18 +1,7 @@
|
|||||||
import {Component, forwardRef, Input, Pipe, PipeTransform} from '@angular/core';
|
import {Component, forwardRef, Input} from '@angular/core';
|
||||||
import { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormControl, ValidationErrors } from '@angular/forms';
|
import { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormControl, ValidationErrors } from '@angular/forms';
|
||||||
import {CustomInputComponent} from "./custom-input.component";
|
import {CustomInputComponent} from "./custom-input.component";
|
||||||
|
|
||||||
@Pipe({name: 'keys'})
|
|
||||||
export class KeysPipe implements PipeTransform {
|
|
||||||
transform(value: Object, args:string[]) : any {
|
|
||||||
let keys = [];
|
|
||||||
for (let key in value) {
|
|
||||||
keys.push({key: key, value: value[key]});
|
|
||||||
}
|
|
||||||
return keys;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'tag-input',
|
selector: 'tag-input',
|
||||||
template:
|
template:
|
||||||
@@ -61,7 +50,7 @@ export class TagInputComponent extends CustomInputComponent {
|
|||||||
console.log("writeValue", isUpdated, this.value);
|
console.log("writeValue", isUpdated, this.value);
|
||||||
|
|
||||||
if (isUpdated) {
|
if (isUpdated) {
|
||||||
setTimeout(() => super.change(), 0);
|
setTimeout(() => super.change(true), 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
54
src/app/modules/dyn-form/inputs/textarea-input.component.ts
Normal file
54
src/app/modules/dyn-form/inputs/textarea-input.component.ts
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
import {Component, forwardRef, Input} from '@angular/core';
|
||||||
|
import { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormControl, ValidationErrors } from '@angular/forms';
|
||||||
|
import {CustomInputComponent} from "./custom-input.component";
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'textarea-input',
|
||||||
|
template:
|
||||||
|
`
|
||||||
|
<textarea *ngIf="!readonly" (keyup)="onChange($event)">{{value}}</textarea>
|
||||||
|
<span *ngIf="readonly">{{value}}</span>
|
||||||
|
`,
|
||||||
|
providers: [
|
||||||
|
{
|
||||||
|
provide: NG_VALUE_ACCESSOR,
|
||||||
|
useExisting: forwardRef(() => TextareaInputComponent),
|
||||||
|
multi: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provide: NG_VALIDATORS,
|
||||||
|
useExisting: forwardRef(() => TextareaInputComponent),
|
||||||
|
multi: true,
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
export class TextareaInputComponent extends CustomInputComponent {
|
||||||
|
@Input() readonly: boolean = false;
|
||||||
|
@Input() nullable: boolean = false;
|
||||||
|
|
||||||
|
|
||||||
|
// set initial value
|
||||||
|
public writeValue(obj: any): void {
|
||||||
|
if (obj) {
|
||||||
|
this.value = obj + '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// validates the form, returns null when valid else the validation object
|
||||||
|
public validate(c: FormControl): ValidationErrors {
|
||||||
|
if (!this.initComplete)
|
||||||
|
return null;
|
||||||
|
console.log("no error?", !!(this.nullable || this.value));
|
||||||
|
return this.nullable || (this.value) ? null : {notNullable: {
|
||||||
|
valid: false,
|
||||||
|
message: "This field is required!"
|
||||||
|
}};
|
||||||
|
}
|
||||||
|
|
||||||
|
// on button click
|
||||||
|
protected onChange($event: KeyboardEvent): void {
|
||||||
|
this.value = $event.target['value'];
|
||||||
|
console.log("NEW:", this.value, $event.target, $event.target['value']);
|
||||||
|
|
||||||
|
super.change();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,14 +8,14 @@ export class QuestionService {
|
|||||||
|
|
||||||
}
|
}
|
||||||
public getQuestions(cb: (res: QuestionInterface[], err: any) => void) {
|
public getQuestions(cb: (res: QuestionInterface[], err: any) => void) {
|
||||||
setTimeout(() => cb([
|
setTimeout(() => cb(QuestionService.orderItems([
|
||||||
{
|
{
|
||||||
type: 'flag',
|
type: 'flag',
|
||||||
description: 'This is a help tooltip',
|
description: 'This is a help tooltip',
|
||||||
properties: {
|
properties: {
|
||||||
key: 'flags',
|
key: 'flags',
|
||||||
label: 'Form Type Flags',
|
label: 'Form Type Flags',
|
||||||
order: 1,
|
order: 3,
|
||||||
|
|
||||||
// dropdown && flags
|
// dropdown && flags
|
||||||
options: [{key: 'alpha', value: 'A'}, {key: 'beta', value: 'B'}, {key: 'gamma', value: 'C'}, {key: 'delta', value: 'D'}]
|
options: [{key: 'alpha', value: 'A'}, {key: 'beta', value: 'B'}, {key: 'gamma', value: 'C'}, {key: 'delta', value: 'D'}]
|
||||||
@@ -41,11 +41,34 @@ export class QuestionService {
|
|||||||
description: 'ID',
|
description: 'ID',
|
||||||
properties: {
|
properties: {
|
||||||
key: 'ID',
|
key: 'ID',
|
||||||
order: 3
|
order: 1
|
||||||
|
}, constraints: {
|
||||||
|
optional: false
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
type: 'textbox',
|
||||||
|
description: 'This is a very long box. Fill it!',
|
||||||
|
properties: {
|
||||||
|
key: 'textarea',
|
||||||
|
label: 'Textareaaaa',
|
||||||
|
order: 4
|
||||||
}, constraints: {
|
}, constraints: {
|
||||||
optional: false
|
optional: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
], null), 4000);
|
]), null), 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static orderItems(list: Array <any>) {
|
||||||
|
function compare(a: any, b: any) {
|
||||||
|
if (a.properties.order < b.properties.order)
|
||||||
|
return -1;
|
||||||
|
if (a.properties.order > b.properties.order)
|
||||||
|
return 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
list.sort(compare);
|
||||||
|
return list;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
12
src/app/modules/dyn-form/services/value.service.ts
Normal file
12
src/app/modules/dyn-form/services/value.service.ts
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
import { Injectable } from '@angular/core';
|
||||||
|
import {HttpCachedService} from '../../../services/http-cached.service';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class ValueService {
|
||||||
|
constructor(private httpCachedService: HttpCachedService) {
|
||||||
|
|
||||||
|
}
|
||||||
|
public getValues(cb: (res: Object, err: any) => void) {
|
||||||
|
setTimeout(() => cb({flags:{alpha:true}, ID: 50, textarea: "a long text", cooldrop: "u"}, null), 15);
|
||||||
|
}
|
||||||
|
}
|
||||||
12
src/app/modules/dyn-form/types/keys.pipe.ts
Normal file
12
src/app/modules/dyn-form/types/keys.pipe.ts
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
import {Pipe, PipeTransform} from '@angular/core';
|
||||||
|
|
||||||
|
@Pipe({name: 'keys'})
|
||||||
|
export class KeysPipe implements PipeTransform {
|
||||||
|
transform(value: Object, args:string[]) : any {
|
||||||
|
let keys = [];
|
||||||
|
for (let key in value) {
|
||||||
|
keys.push({key: key, value: value[key]});
|
||||||
|
}
|
||||||
|
return keys;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -7,7 +7,7 @@ import { ResponseInterface } from './response.interface';
|
|||||||
export class HttpCachedService extends HttpService {
|
export class HttpCachedService extends HttpService {
|
||||||
private _stored: any = {}; // {data: ResponseInterface, e: Response}
|
private _stored: any = {}; // {data: ResponseInterface, e: Response}
|
||||||
|
|
||||||
get refreshTime() {
|
static get refreshTime() {
|
||||||
return 3*1000;
|
return 3*1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -16,7 +16,7 @@ export class HttpCachedService extends HttpService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getJSON(uri: string, query: {[propName: string]: any}, dataFunc: (data: ResponseInterface, e: Response | any) => void) {
|
getJSON(uri: string, query: {[propName: string]: any}, dataFunc: (data: ResponseInterface, e: Response | any) => void) {
|
||||||
var hash: string = this._hashRequest("GET", uri, query);
|
const hash: string = this._hashRequest('GET', uri, query);
|
||||||
if (this._stored.hasOwnProperty(hash)) {
|
if (this._stored.hasOwnProperty(hash)) {
|
||||||
if (this._stored[hash] instanceof Array) {
|
if (this._stored[hash] instanceof Array) {
|
||||||
// pending request, add to event emitter
|
// pending request, add to event emitter
|
||||||
@@ -31,30 +31,29 @@ export class HttpCachedService extends HttpService {
|
|||||||
super.getJSON(uri, query, (data, e) => {
|
super.getJSON(uri, query, (data, e) => {
|
||||||
// request recieved, emit to caller and event subscriber
|
// request recieved, emit to caller and event subscriber
|
||||||
dataFunc(data, e);
|
dataFunc(data, e);
|
||||||
for (var i = this._stored[hash].length - 1; i >= 0; i--) {
|
for (let i = this._stored[hash].length - 1; i >= 0; i--) {
|
||||||
this._stored[hash][i](data, e);
|
this._stored[hash][i](data, e);
|
||||||
}
|
}
|
||||||
this._stored[hash] = {
|
this._stored[hash] = {
|
||||||
data: data,
|
data: data,
|
||||||
e: e
|
e: e
|
||||||
};
|
};
|
||||||
var that = this;
|
setTimeout(() => {
|
||||||
setTimeout(function() {
|
delete this._stored[hash];
|
||||||
delete that._stored[hash];
|
}, HttpCachedService.refreshTime);
|
||||||
}, this.refreshTime);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private _hashRequest(method: string, uri: string, query?: Object): string {
|
private _hashRequest(method: string, uri: string, query?: Object): string {
|
||||||
function objectToString(obj: Object = {}) {
|
function objectToString(obj: Object = {}) {
|
||||||
var keys: string[] = [];
|
const keys: string[] = [];
|
||||||
var result: string = '{';
|
let result: string = '{';
|
||||||
for (var key in obj)
|
for (let key in obj)
|
||||||
if (obj.hasOwnProperty(key))
|
if (obj.hasOwnProperty(key))
|
||||||
keys.push(key);
|
keys.push(key);
|
||||||
keys.sort();
|
keys.sort();
|
||||||
for (var i = keys.length - 1; i >= 0; i--) {
|
for (let i = keys.length - 1; i >= 0; i--) {
|
||||||
result += keys[i]+':"'+obj[keys[i]]+'",'
|
result += keys[i]+':"'+obj[keys[i]]+'",'
|
||||||
}
|
}
|
||||||
result += '}';
|
result += '}';
|
||||||
|
|||||||
@@ -4,8 +4,8 @@
|
|||||||
"module": "commonjs",
|
"module": "commonjs",
|
||||||
"moduleResolution": "node",
|
"moduleResolution": "node",
|
||||||
"sourceMap": true,
|
"sourceMap": true,
|
||||||
"mapRoot":"/src/",
|
"mapRoot":"/",
|
||||||
"sourceRoot":"/src/",
|
"sourceRoot":"/src/app",
|
||||||
"emitDecoratorMetadata": true,
|
"emitDecoratorMetadata": true,
|
||||||
"experimentalDecorators": true,
|
"experimentalDecorators": true,
|
||||||
"lib": [ "es2015", "dom" ],
|
"lib": [ "es2015", "dom" ],
|
||||||
|
|||||||
Reference in New Issue
Block a user