Commit 2bc412d7 by Arturo Montejo Ráez

merge

parents 94853dec 45745e9a
...@@ -62,6 +62,10 @@ android/Pictogram/commonlibrary/build ...@@ -62,6 +62,10 @@ android/Pictogram/commonlibrary/build
android/Pictogram/tablet/build android/Pictogram/tablet/build
android/Pictogram/watch/build android/Pictogram/watch/build
android/Pictogram/build android/Pictogram/build
android/Pictogram/supervisor_tablet/supervisor_tablet.iml
android/Pictogram/tabletlibrary/tabletlibrary.iml
android/Pictogram/yotta_tablet/yotta_tablet.iml
android/Pictogram/watch/watch.iml
# OS generated files # # OS generated files #
###################### ######################
......
...@@ -9,7 +9,6 @@ ...@@ -9,7 +9,6 @@
<facet type="android" name="Android"> <facet type="android" name="Android">
<configuration> <configuration>
<option name="SELECTED_BUILD_VARIANT" value="DevFlavorDebug" /> <option name="SELECTED_BUILD_VARIANT" value="DevFlavorDebug" />
<option name="SELECTED_TEST_ARTIFACT" value="_android_test_" />
<option name="ASSEMBLE_TASK_NAME" value="assembleDevFlavorDebug" /> <option name="ASSEMBLE_TASK_NAME" value="assembleDevFlavorDebug" />
<option name="COMPILE_JAVA_TASK_NAME" value="compileDevFlavorDebugSources" /> <option name="COMPILE_JAVA_TASK_NAME" value="compileDevFlavorDebugSources" />
<afterSyncTasks> <afterSyncTasks>
...@@ -40,7 +39,6 @@ ...@@ -40,7 +39,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/DevFlavorDebug/assets" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/DevFlavorDebug/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/DevFlavorDebug/aidl" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/DevFlavorDebug/aidl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/DevFlavorDebug/java" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/DevFlavorDebug/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/DevFlavorDebug/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/DevFlavorDebug/rs" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/DevFlavorDebug/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/DevFlavorDebug/shaders" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/DevFlavorDebug/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/DevFlavor/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/DevFlavor/debug" isTestSource="true" generated="true" />
...@@ -55,7 +53,6 @@ ...@@ -55,7 +53,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavorDebug/assets" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/testDevFlavorDebug/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavorDebug/aidl" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testDevFlavorDebug/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavorDebug/java" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testDevFlavorDebug/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavorDebug/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavorDebug/rs" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testDevFlavorDebug/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavorDebug/shaders" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testDevFlavorDebug/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/DevFlavor/res" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/DevFlavor/res" type="java-resource" />
...@@ -63,7 +60,6 @@ ...@@ -63,7 +60,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/DevFlavor/assets" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/DevFlavor/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/DevFlavor/aidl" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/DevFlavor/aidl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/DevFlavor/java" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/DevFlavor/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/DevFlavor/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/DevFlavor/rs" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/DevFlavor/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/DevFlavor/shaders" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/DevFlavor/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/res" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/res" type="java-test-resource" />
...@@ -71,7 +67,6 @@ ...@@ -71,7 +67,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/assets" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/aidl" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/java" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/rs" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/shaders" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDevFlavor/res" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTestDevFlavor/res" type="java-test-resource" />
...@@ -79,7 +74,6 @@ ...@@ -79,7 +74,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDevFlavor/assets" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTestDevFlavor/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDevFlavor/aidl" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTestDevFlavor/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDevFlavor/java" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTestDevFlavor/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDevFlavor/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDevFlavor/rs" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTestDevFlavor/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDevFlavor/shaders" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTestDevFlavor/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
...@@ -87,7 +81,6 @@ ...@@ -87,7 +81,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" />
...@@ -95,7 +88,6 @@ ...@@ -95,7 +88,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
...@@ -126,6 +118,15 @@ ...@@ -126,6 +118,15 @@
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/animated-vector-drawable/24.2.1/jars" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/animated-vector-drawable/24.2.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/appcompat-v7/24.2.1/jars" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/appcompat-v7/24.2.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-compat/24.2.1/jars" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-compat/24.2.1/jars" />
...@@ -136,17 +137,6 @@ ...@@ -136,17 +137,6 @@
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/24.2.1/jars" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/24.2.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-vector-drawable/24.2.1/jars" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-vector-drawable/24.2.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
</content> </content>
<orderEntry type="jdk" jdkName="Android API 24 Platform" jdkType="Android SDK" /> <orderEntry type="jdk" jdkName="Android API 24 Platform" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
...@@ -161,7 +151,6 @@ ...@@ -161,7 +151,6 @@
<orderEntry type="library" exported="" name="support-vector-drawable-24.2.1" level="project" /> <orderEntry type="library" exported="" name="support-vector-drawable-24.2.1" level="project" />
<orderEntry type="library" exported="" name="support-core-utils-24.2.1" level="project" /> <orderEntry type="library" exported="" name="support-core-utils-24.2.1" level="project" />
<orderEntry type="module" module-name="tabletlibrary" exported="" /> <orderEntry type="module" module-name="tabletlibrary" exported="" />
<orderEntry type="library" exported="" name="android-android-24" level="project" />
<orderEntry type="library" exported="" name="okhttp-ws-2.3.0" level="project" /> <orderEntry type="library" exported="" name="okhttp-ws-2.3.0" level="project" />
<orderEntry type="library" exported="" name="play-services-base-9.2.1" level="project" /> <orderEntry type="library" exported="" name="play-services-base-9.2.1" level="project" />
<orderEntry type="library" exported="" name="socket.io-client-0.5.0" level="project" /> <orderEntry type="library" exported="" name="socket.io-client-0.5.0" level="project" />
...@@ -188,4 +177,4 @@ ...@@ -188,4 +177,4 @@
<orderEntry type="library" exported="" scope="TEST" name="json-20090211" level="project" /> <orderEntry type="library" exported="" scope="TEST" name="json-20090211" level="project" />
<orderEntry type="library" exported="" name="play-services-ads-lite-9.2.1" level="project" /> <orderEntry type="library" exported="" name="play-services-ads-lite-9.2.1" level="project" />
</component> </component>
</module> </module>
\ No newline at end of file
...@@ -15,7 +15,6 @@ ...@@ -15,7 +15,6 @@
<facet type="android" name="Android"> <facet type="android" name="Android">
<configuration> <configuration>
<option name="SELECTED_BUILD_VARIANT" value="debug" /> <option name="SELECTED_BUILD_VARIANT" value="debug" />
<option name="SELECTED_TEST_ARTIFACT" value="_android_test_" />
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" /> <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" /> <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
<afterSyncTasks> <afterSyncTasks>
...@@ -26,7 +25,7 @@ ...@@ -26,7 +25,7 @@
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" /> <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" /> <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" />
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" /> <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
<option name="LIBRARY_PROJECT" value="true" /> <option name="PROJECT_TYPE" value="1" />
</configuration> </configuration>
</facet> </facet>
</component> </component>
...@@ -54,7 +53,6 @@ ...@@ -54,7 +53,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" />
...@@ -62,7 +60,6 @@ ...@@ -62,7 +60,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
...@@ -70,7 +67,6 @@ ...@@ -70,7 +67,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
...@@ -78,7 +74,6 @@ ...@@ -78,7 +74,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
...@@ -105,16 +100,10 @@ ...@@ -105,16 +100,10 @@
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-vector-drawable/24.2.1/jars" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-vector-drawable/24.2.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/typedefs.txt" />
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
<excludeFolder url="file://$MODULE_DIR$/build/tmp" /> <excludeFolder url="file://$MODULE_DIR$/build/tmp" />
</content> </content>
<orderEntry type="jdk" jdkName="Android API 24 Platform" jdkType="Android SDK" /> <orderEntry type="jdk" jdkName="Android API 24 Platform" jdkType="Android SDK" />
...@@ -130,7 +119,6 @@ ...@@ -130,7 +119,6 @@
<orderEntry type="library" exported="" name="support-vector-drawable-24.2.1" level="project" /> <orderEntry type="library" exported="" name="support-vector-drawable-24.2.1" level="project" />
<orderEntry type="library" exported="" name="support-core-utils-24.2.1" level="project" /> <orderEntry type="library" exported="" name="support-core-utils-24.2.1" level="project" />
<orderEntry type="module" module-name="commonlibrary" exported="" /> <orderEntry type="module" module-name="commonlibrary" exported="" />
<orderEntry type="library" exported="" name="android-android-24" level="project" />
<orderEntry type="library" exported="" name="okhttp-ws-2.3.0" level="project" /> <orderEntry type="library" exported="" name="okhttp-ws-2.3.0" level="project" />
<orderEntry type="library" exported="" name="play-services-base-9.2.1" level="project" /> <orderEntry type="library" exported="" name="play-services-base-9.2.1" level="project" />
<orderEntry type="library" exported="" name="socket.io-client-0.5.0" level="project" /> <orderEntry type="library" exported="" name="socket.io-client-0.5.0" level="project" />
...@@ -157,4 +145,4 @@ ...@@ -157,4 +145,4 @@
<orderEntry type="library" exported="" scope="TEST" name="json-20090211" level="project" /> <orderEntry type="library" exported="" scope="TEST" name="json-20090211" level="project" />
<orderEntry type="library" exported="" name="play-services-ads-lite-9.2.1" level="project" /> <orderEntry type="library" exported="" name="play-services-ads-lite-9.2.1" level="project" />
</component> </component>
</module> </module>
\ No newline at end of file
...@@ -366,6 +366,7 @@ CREATE TABLE IF NOT EXISTS `supervisor` ( ...@@ -366,6 +366,7 @@ CREATE TABLE IF NOT EXISTS `supervisor` (
`gender` char(1) COLLATE utf8_unicode_ci NOT NULL, `gender` char(1) COLLATE utf8_unicode_ci NOT NULL,
`pic` varchar(255) COLLATE utf8_unicode_ci DEFAULT 'defaultAvatar.jpg', `pic` varchar(255) COLLATE utf8_unicode_ci DEFAULT 'defaultAvatar.jpg',
`address` varchar(180) COLLATE utf8_unicode_ci DEFAULT NULL, `address` varchar(180) COLLATE utf8_unicode_ci DEFAULT NULL,
`postal_code` char(10) COLLATE utf8_unicode_ci NOT NULL,
`country` varchar(2) COLLATE utf8_unicode_ci DEFAULT NULL, `country` varchar(2) COLLATE utf8_unicode_ci DEFAULT NULL,
`email` varchar(80) COLLATE utf8_unicode_ci NOT NULL, `email` varchar(80) COLLATE utf8_unicode_ci NOT NULL,
`phone` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, `phone` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
......
...@@ -9,3 +9,9 @@ AngularJS ...@@ -9,3 +9,9 @@ AngularJS
Database Database
- reload trigers-enrolments-integrity-constraints.sql - reload trigers-enrolments-integrity-constraints.sql
- alter table supervisor to add postal_code:
`alter table supervisor add column `postal_code` char(10) COLLATE utf8_unicode_ci NOT NULL;`
- copy postal_code value from office to its supervisors
`update supervisor as sup inner join office as off on off.id = sup.id_off set sup.postal_code = off.postal_code;`
- alter table office
`alter table office modify logo_url varchar(240) default null;`
...@@ -102,7 +102,8 @@ module.exports = { ...@@ -102,7 +102,8 @@ module.exports = {
*/ */
getAll: function (req, res) { getAll: function (req, res) {
Office.find().populate('admin').then(function (offices) { Office.find().populate('admin').then(function (offices) {
res.ok(offices); // return all offices filtering out personal ones
res.ok(offices.filter(o => o.name !== 'no_office'));
}) })
.catch(function () { .catch(function () {
res.serverError(); res.serverError();
......
...@@ -71,10 +71,13 @@ module.exports = { ...@@ -71,10 +71,13 @@ module.exports = {
Supervisor.findOneByEmail(email).then(function (supervisor) { Supervisor.findOneByEmail(email).then(function (supervisor) {
if (!supervisor) if (!supervisor)
return res.notFound("Supervisor not found") throw new Error("Supervisor not found")
if (!bcrypt.compareSync(password, supervisor.password)) if (!bcrypt.compareSync(password, supervisor.password))
throw res.unauthorized("Invalid email/password") throw new Error("Invalid email/password");
if (supervisor.active == 0)
throw new Error("This account has not been activated");
return (supervisor); return (supervisor);
...@@ -100,7 +103,7 @@ module.exports = { ...@@ -100,7 +103,7 @@ module.exports = {
} }
if (!supervisor.isSupAdmin && !stuSup) if (!supervisor.isSupAdmin && !stuSup)
throw res.unauthorized("Supervisor without students"); throw new Error("Supervisor without students");
return res.ok({ return res.ok({
user: supervisor, user: supervisor,
...@@ -108,9 +111,8 @@ module.exports = { ...@@ -108,9 +111,8 @@ module.exports = {
token: sailsTokenAuth.issueToken(supervisor, sails.config.jwt.expiresInMinutes) token: sailsTokenAuth.issueToken(supervisor, sails.config.jwt.expiresInMinutes)
}); });
}) })
.catch(function (err) { .catch(function (err) {
return res.serverError("Error when connecting to database"); return res.badRequest(err.message);
}); });
}, },
...@@ -119,7 +121,7 @@ module.exports = { ...@@ -119,7 +121,7 @@ module.exports = {
* Activate the user account specified * Activate the user account specified
* @param {request} req * @param {request} req
* { * {
* "token": "12398123aas78sf798as7d987234" // Encryted code with supervisor ID * "token": "12398123aas78sf798as7d987234" // Encryted code with supervisor ID, siging role and id_off
* } * }
* @param {response} login view * @param {response} login view
* { * {
...@@ -132,21 +134,67 @@ module.exports = { ...@@ -132,21 +134,67 @@ module.exports = {
* } * }
*/ */
activate: function (req, res) { activate: function (req, res) {
if (!req.params.token) if (!req.params.token)
return res.badRequest("Invalid activation URL"); return res.badRequest("Invalid activation URL");
sailsTokenAuth.verifyToken(req.params.token, function(err, token) { sailsTokenAuth.verifyToken(req.params.token, function(err, token) {
if (err) if (err)
return res.badRequest("Invalid token"); return res.badRequest("Invalid token");
Supervisor.findOne(token).then(function (supervisor) {
Supervisor.findOne(token.id_sup)
.then(function (supervisor) {
if (!supervisor) if (!supervisor)
throw new Error("Error when looking for user"); throw new Error("Error when looking for user");
supervisor.active = true; supervisor.active = true;
delete supervisor.password; delete supervisor.password;
supervisor.save(); supervisor.save();
return res.view('accountActivated', {sup: supervisor, login_url: 'https://' + req.headers.host + '/app'});
// an email has to be sent to office administrators
if (token.role == 'tutor_office' || token.role === 'therapist_office') {
Office.findOne(token.id_off)
.populate('admin')
.then((off) => {
if (!off)
throw new Error("Office not found: ");
var message = sails.__({
phrase: token.role + '_request',
locale: supervisor.lang
}, {name: supervisor.name + " " + supervisor.surname, email: supervisor.email});
mailService.mailer()
.send({
to: off.admin.email,
text: message
})
.then(() => {})
.catch((err) => {throw err});
})
.catch((err) => {throw err;});
}
// welcome message is returned
return res.view('accountActivated', {
welcome_msg1: sails.__({
phrase: 'welcome_msg1',
locale: supervisor.lang
}, {name: supervisor.name}),
welcome_msg2: sails.__({
phrase: 'welcome_msg2',
locale: supervisor.lang
}),
login_url: 'https://' + req.headers.host + '/app',
login: sails.__('login')
});
}) })
.catch(function (err) { .catch(function (err) {
return res.serverError("Error when activating account " + err); return res.serverError(err.message ? err.message : 'Supervisor not found');
}); });
}); });
}, },
...@@ -212,61 +260,97 @@ module.exports = { ...@@ -212,61 +260,97 @@ module.exports = {
*/ */
create: function (req, res) { create: function (req, res) {
var params = req.params.all(); var params = req.params.all();
var supervisor;
// Send email confirmation
function sendConfirmationMail(cb) {
console.log("mail------------\n" + JSON.stringify(supervisor));
var token = sailsTokenAuth.issueToken({
id_sup: supervisor.id,
role: params.role,
id_off: params.id_off,
}, 60*24*7); // expires in 1 week
var message = sails.__({
phrase: 'signin_mail',
locale: params.lang || 'es-es'
}) + 'https://' + req.headers.host + '/sup/activate/' + token; // expires in 1 week
sails.log.debug("Sending activation email: \n" + message);
mailService.mailer()
.send({
to: params.email,
text: message
})
.then(() => {cb();})
.catch((err) => {cb(err);});
} // /sendConfirmationEmail()
sails.log.debug("Creating supervisor with params " + JSON.stringify(params)); sails.log.debug("Creating supervisor with params " + JSON.stringify(params));
if (params.name && if (!params.name || !params.surname || !params.gender || !params.password || !params.email )
params.surname && res.badRequest("Invalid params");
params.gender &&
params.password &&
params.email) {
Supervisor.create({
name: params.name,
surname: params.surname,
gender: params.gender,
password: params.password,
email: params.email,
pic: sails.config.pictogram.paths.defaultAvatarFileName,
address: params.address || null,
country: params.country || null,
phone: params.phone || null,
lang: params.lang || null,
ttsEngine: params.ttsEngine || null
}).then(function (supervisor) {
if (!supervisor) var supData = {
res.serverError("Supervisor created but returned null"); name: params.name,
surname: params.surname,
gender: params.gender,
password: params.password,
email: params.email,
pic: sails.config.pictogram.paths.defaultAvatarFileName,
address: params.address || '',
postalCode: params.postalCode || '',
country: params.country || '',
phone: params.phone || '',
lang: params.lang || 'es-es',
};
if (params.id_off)
supData.id_off = params.id_off;
console.log("supData:\n" + JSON.stringify(supData));
Supervisor.create(supData)
.then(function (sup) {
sails.log.debug("SUPERVISOR: " + JSON.stringify(supervisor)); if (!sup)
res.serverError("Supervisor created but returned null");
/* Send email confirmation */ supervisor = sup;
var message = sails.__({
phrase: 'signin_mail',
locale: params.lang || 'es-es'
}) + 'https://' + req.headers.host + '/sup/activate/' + sailsTokenAuth.issueToken(supervisor.id, 60*24*7); // expires in 1 week
sails.log.debug("Sending activation email: \n" + message);
mailService.mailer() if (params.role === 'therapist_office' || params.role === 'tutor_office') {
.send({ sendConfirmationMail((err) => {
to: params.email, if (err) throw err;
text: message return res.ok();
})
.then(() => {
res.ok({
user: supervisor,
token: sailsTokenAuth.issueToken(supervisor.id)
});
})
.catch((err) => {
res.serverError("Mail could not be sent " + err);
}); });
} else if (params.role === 'therapist_nooffice' || params.role === 'tutor_nooffice') {
}).catch(function (err) { Office.create(params.office)
res.serverError("Supervisor could not be created: " + err); .then((off) => {
});
} else { // link supervisor with office
res.badRequest("Invalid params"); supervisor.id_off = off.id;
} delete supervisor.password;
supervisor.save();
// set supervisor as admin in the office
off.admin = supervisor.id;
off.save();
sendConfirmationMail((err) => {
if (err) throw err;
return res.ok();
});
})
.catch(err => {throw err});
} else
return res.badRequest("Invalid role");
}).catch(function (err) {
return res.serverError("Supervisor could not be created: " + err);
});
}, },
/* /*
......
...@@ -26,15 +26,25 @@ module.exports = { ...@@ -26,15 +26,25 @@ module.exports = {
type: "string", type: "string",
size: 80 size: 80
}, },
logoUrl: {
columnName: 'logo_url',
type: "string",
size: 240
},
address: { address: {
required: true, required: true,
type: "string", type: "string",
size: 80 size: 80
}, },
logo_url: { country: {
required: true, type: "string",
type: "string", size: 5,
size: 240 required: true
},
lang: {
required: true,
type: "string",
size: 2
}, },
contactPerson: { contactPerson: {
columnName: "contact_person", columnName: "contact_person",
...@@ -57,37 +67,33 @@ module.exports = { ...@@ -57,37 +67,33 @@ module.exports = {
type: "string", type: "string",
size: 20 size: 20
}, },
lang: { admin: {
required: true, columnName: 'admin',
type: "string", type: 'integer',
size: 2 model: 'Supervisor'
}, },
country: { postalCode: {
columnName: 'postal_code',
required: true,
type: "string", type: "string",
size: 5 size: 10
},
maxStudents: {
columnName: "max_students",
type: "integer"
},
currentStudents: {
columnName: "current_students",
type: "integer"
},
admin: {
model: 'supervisor',
required: false
//type: 'integer'
}, },
// Relación con Teacher. [1 Office to N Teacher] // Relación con Teacher. [1 Office to N Teacher]
supervisors: { supervisors: {
collection: "Supervisor", collection: "Supervisor",
via: 'office' via: 'office'
}, },
// Relación con Student. [1 Office to N Student] // Relación con Student. [1 Office to N Student]
students: { students: {
collection: "Student", collection: "Student",
via: 'office' via: 'office'
} }
},
beforeCreate: function (attrs, next) {
if (!attrs.logoUrl)
attrs.logoUrl = '/app/img/logo_pictogram.png';
next();
} }
}; };
...@@ -52,6 +52,11 @@ module.exports = { ...@@ -52,6 +52,11 @@ module.exports = {
type: "string", type: "string",
size: 180 size: 180
}, },
postalCode: {
columnName: 'postal_code',
type: "string",
size: 10
},
country: { country: {
type: "string", type: "string",
size: 2 size: 2
......
...@@ -63,6 +63,8 @@ ...@@ -63,6 +63,8 @@
"contact_person": "Contact person", "contact_person": "Contact person",
"continue_session": "Resume_session", "continue_session": "Resume_session",
"country": "Country", "country": "Country",
"country_requested": "Country requested",
"country_office_requested": "Country for office/center is mandatory",
"create_account": "Create account", "create_account": "Create account",
"create_an_account": "Create an account", "create_an_account": "Create an account",
"credentials": "Credentials", "credentials": "Credentials",
...@@ -136,6 +138,7 @@ ...@@ -136,6 +138,7 @@
"highlighted": "Highlighted", "highlighted": "Highlighted",
"hours": "hours", "hours": "hours",
"how_many": "How many?", "how_many": "How many?",
"inactive_account": "This account has not been activated. Please, follow the link sent to your email address.",
"input_selection": "How to place a pictogram", "input_selection": "How to place a pictogram",
"instruction": "Instruction", "instruction": "Instruction",
"instruction_begin": "Begin instruction", "instruction_begin": "Begin instruction",
...@@ -204,6 +207,7 @@ ...@@ -204,6 +207,7 @@
"no": "No", "no": "No",
"nobegin": "No started", "nobegin": "No started",
"no_method": "No method defined", "no_method": "No method defined",
"no_office": "No office",
"no_subscribed": "No connection to student account", "no_subscribed": "No connection to student account",
"no_instruction": "No instruction defined", "no_instruction": "No instruction defined",
"no_students_for_user": "You are not associated to any students. Please ask your office to link your account to a Pictogram student.", "no_students_for_user": "You are not associated to any students. Please ask your office to link your account to a Pictogram student.",
......
...@@ -63,6 +63,8 @@ ...@@ -63,6 +63,8 @@
"contact_person": "Persona de contacto", "contact_person": "Persona de contacto",
"continue_session": "Reanudar sesión", "continue_session": "Reanudar sesión",
"country": "País", "country": "País",
"country_requested": "Debe especificar el país",
"country_office_requested": "Debe especificar el país del gabinete/centro",
"create_account": "Crear cuenta", "create_account": "Crear cuenta",
"create_an_account": "Crear una cuenta", "create_an_account": "Crear una cuenta",
"credentials": "Credenciales", "credentials": "Credenciales",
...@@ -136,6 +138,7 @@ ...@@ -136,6 +138,7 @@
"highlighted": "Resaltado", "highlighted": "Resaltado",
"hours": "horas", "hours": "horas",
"how_many": "¿Cuántas?", "how_many": "¿Cuántas?",
"inactive_account": "Esta cuenta no ha sido activada. Por favor, siga el enlace de confirmación enviado a su dirección de correo electrónico.",
"input_selection": "Cómo colocar un pictograma", "input_selection": "Cómo colocar un pictograma",
"instruction": "Instrucción", "instruction": "Instrucción",
"instruction_begin": "Primer intento", "instruction_begin": "Primer intento",
...@@ -203,6 +206,7 @@ ...@@ -203,6 +206,7 @@
"next_sessions": "Sesiones posteriores", "next_sessions": "Sesiones posteriores",
"no": "No", "no": "No",
"no_method": "Método sin definir", "no_method": "Método sin definir",
"no_office": "Sin centro",
"no_instruction": "Instrucción sin definir", "no_instruction": "Instrucción sin definir",
"no_students_for_user": "Su cuenta no está asociada a ningún estudiante. Por favor, contacte con su gabinete para enlazar su cuenta a un estudiante.", "no_students_for_user": "Su cuenta no está asociada a ningún estudiante. Por favor, contacte con su gabinete para enlazar su cuenta a un estudiante.",
"no_space_in_category": "No queda espacio en la categoría", "no_space_in_category": "No queda espacio en la categoría",
......
...@@ -24,7 +24,7 @@ function LoginCtrl( ...@@ -24,7 +24,7 @@ function LoginCtrl(
}; };
$scope.office = { $scope.office = {
logo_url : 'img/logo_pictogram.png', logoUrl : 'img/logo_pictogram.png',
name : 'Pictogram' name : 'Pictogram'
}; };
...@@ -48,8 +48,8 @@ function LoginCtrl( ...@@ -48,8 +48,8 @@ function LoginCtrl(
data.user.isTutor = true; data.user.isTutor = true;
} else } else
data.user.isTutor = false; data.user.isTutor = false;
if (data.user.office.logo_url.length < 5) if (data.user.office.logoUrl.length < 5)
data.user.office.logo_url = 'img/logo_pictogram.png'; data.user.office.logoUrl = 'img/logo_pictogram.png';
$window.sessionStorage.token = data.token; $window.sessionStorage.token = data.token;
...@@ -88,8 +88,8 @@ function LoginCtrl( ...@@ -88,8 +88,8 @@ function LoginCtrl(
$translate('no_students_for_user').then(function (translation) { $translate('no_students_for_user').then(function (translation) {
ngToast.warning({ content: translation }); ngToast.warning({ content: translation });
}); });
} else { } else if (err.search("not been activated") > 0) {
$translate('login_fail').then(function (translation) { $translate('inactive_account').then(function (translation) {
ngToast.danger({ content: translation }); ngToast.danger({ content: translation });
}); });
} }
......
...@@ -21,16 +21,25 @@ function SignInCtrl($scope, ...@@ -21,16 +21,25 @@ function SignInCtrl($scope,
name: '', name: '',
surname: '', surname: '',
address: '', address: '',
postal_code: '',
country: '00',
phone: '', phone: '',
gender: 'M', gender: 'F',
email: '', email: '',
email_confirm: '', email_confirm: '',
password: '', password: '',
password_confirm: '', password_confirm: '',
lang: 'es', lang: '00',
role: null, role: 'therapist_office',
office: { office: {
country: 'NULL' name: '',
address: '',
postalCode: '',
country: '00',
contactPerson: '',
phone1: '',
email: '',
logoUrl: ''
}, },
office_idx: -1 office_idx: -1
}; };
...@@ -48,6 +57,17 @@ function SignInCtrl($scope, ...@@ -48,6 +57,17 @@ function SignInCtrl($scope,
ngToast.danger({ content: $translate.instant('server_error') }); ngToast.danger({ content: $translate.instant('server_error') });
}); });
// Copy fields from supervisor to office
$scope.copyFields = function () {
$scope.formdata.office.address = $scope.formdata.address;
$scope.formdata.office.postalCode = $scope.formdata.postalCode;
$scope.formdata.office.country = $scope.formdata.country;
$scope.formdata.office.lang = $scope.formdata.lang;
$scope.formdata.office.email = $scope.formdata.email;
$scope.formdata.office.phone1 = $scope.formdata.phone;
$scope.formdata.office.contactPerson = $scope.formdata.name + " " + $scope.formdata.surname;
};
// Form submit // Form submit
$scope.signin = function () { $scope.signin = function () {
// Validate email match // Validate email match
...@@ -67,6 +87,16 @@ function SignInCtrl($scope, ...@@ -67,6 +87,16 @@ function SignInCtrl($scope,
return; return;
} }
if ($scope.formdata.country == '00') {
ngToast.danger({ content: $translate.instant('country_requested') });
return;
}
if ($scope.formdata.role == 'therapist_nooffice' && $scope.formdata.office.country == '00') {
ngToast.danger({ content: $translate.instant('country_office_requested') });
return;
}
if (!$scope.formdata.disclaimer_accepted) { if (!$scope.formdata.disclaimer_accepted) {
ngToast.danger({ content: $translate.instant('disclaimer_requested') }); ngToast.danger({ content: $translate.instant('disclaimer_requested') });
return; return;
...@@ -82,10 +112,26 @@ function SignInCtrl($scope, ...@@ -82,10 +112,26 @@ function SignInCtrl($scope,
$scope.showdialog = true; $scope.showdialog = true;
if ($scope.formdata.office_idx != -1) {
$scope.formdata.id_off = $scope.offices[$scope.formdata.office_idx].id;
delete $scope.formdata.office_idx;
}
if ($scope.formdata.role === 'tutor_nooffice') {
$scope.formdata.office.name = 'no_office';
$scope.formdata.office.address = $scope.formdata.address;
$scope.formdata.office.postalCode = $scope.formdata.postalCode;
$scope.formdata.office.country = $scope.formdata.country;
$scope.formdata.office.contactPerson = $scope.formdata.name + " " + $scope.formdata.surname;
$scope.formdata.office.phone1 = $scope.formdata.phone;
$scope.formdata.office.email = $scope.formdata.email;
$scope.formdata.office.lang = $scope.formdata.lang;
}
$http $http
.post(config.backend + '/sup', $scope.formdata) .post(config.backend + '/sup', $scope.formdata)
.success(function () { .success(function () {
ngToast.success({ content: $translate.instant('user_created') }); ngToast.success({ content: $translate.instant('user_created', { name: $scope.formdata.name, surname: $scope.formdata.surname }) });
$scope.reset(); $scope.reset();
}) })
.error(function () { .error(function () {
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
</p> </p>
--> -->
<p class="text-center"> <p class="text-center">
<img ng-src="{{office.logo_url}}" alt="{{office.name}}" title="{{office.name}}"> <img ng-src="{{office.logoUrl}}" alt="{{office.name}}" title="{{office.name}}">
</p> </p>
<!-- Formulario --> <!-- Formulario -->
<!-- LoginCtrl controls here, see app.js --> <!-- LoginCtrl controls here, see app.js -->
......
...@@ -33,7 +33,25 @@ ...@@ -33,7 +33,25 @@
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<input type="text" class="form-control" id="signin_address" placeholder="{{ 'address' | translate }}" ng-model="formdata.address"/> <input type="text" class="form-control" id="signin_address" placeholder="{{ 'address' | translate }}" ng-model="formdata.address"/ required>
</div>
<div class="row">
<div class="col-md-4">
<div class="form-group">
<input type="text" class="form-control" id="signin_postal_code" placeholder="{{ 'postal_code' | translate }}" required ng-model="formdata.postalCode" ng-change="formdata.postalCode = formdata.postalCode.toUpperCase()"/>
</div>
</div>
<div class="col-md-8">
<div class="form-group">
<select class="form-control" ng-model="formdata.country" required>
<option value="00" selected disabled hidden>{{ 'country' | translate }}</option>
<option value="ES">España</option>
<option value="US">United States</option>
<option value="UK">United Kingdom</option>
<option value="IE">Ireland</option>
</select>
</div>
</div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-md-6"> <div class="col-md-6">
...@@ -90,9 +108,9 @@ ...@@ -90,9 +108,9 @@
<fieldset> <fieldset>
<fieldset> <fieldset>
<label translate>language</label>
<div class="form-group"> <div class="form-group">
<select class="form-control" name="signin_language" id="signin_language" ng-model="formdata.lang"> <select class="form-control" name="signin_language" id="signin_language" ng-model="formdata.lang" required>
<option value="00" selected disabled hidden>{{ 'language' | translate }}</option>
<option value="es-es" selected>Español</option> <option value="es-es" selected>Español</option>
<option value="en-gb">English</option> <option value="en-gb">English</option>
</select> </select>
...@@ -124,7 +142,8 @@ ...@@ -124,7 +142,8 @@
type="radio" type="radio"
ng-model="formdata.role" ng-model="formdata.role"
value="therapist_nooffice" value="therapist_nooffice"
onClick="$('#office_selection').slideUp(); $('#office_form').slideDown();"> onClick="$('#office_selection').slideUp(); $('#office_form').slideDown();"
ng-click="copyFields();">
</div> </div>
<div class="col-md-11"> <div class="col-md-11">
{{ 'case_therapist_nooffice' | translate }} {{ 'case_therapist_nooffice' | translate }}
...@@ -154,7 +173,8 @@ ...@@ -154,7 +173,8 @@
type="radio" type="radio"
ng-model="formdata.role" ng-model="formdata.role"
value="tutor_nooffice" value="tutor_nooffice"
onClick="$('#office_selection').slideUp(); $('#office_form').slideUp();"> onClick="$('#office_selection').slideUp(); $('#office_form').slideUp(); copyFields();"
ng-click="copyFields();">
</div> </div>
<div class="col-md-11"> <div class="col-md-11">
{{ 'case_tutor_nooffice' | translate }} {{ 'case_tutor_nooffice' | translate }}
...@@ -166,54 +186,45 @@ ...@@ -166,54 +186,45 @@
<div class="form-group" id="office_form" hidden> <div class="form-group" id="office_form" hidden>
<legend translate>office_center</legend> <legend translate>office_center</legend>
<div class="form-group"> <div class="form-group">
<input type="text" class="form-control" placeholder="{{ 'name' | translate }}" ng-model="formdata.office.name"/> <input type="text" class="form-control" placeholder="{{ 'name' | translate }}" ng-model="formdata.office.name" ng-required="formdata.role == 'therapist_nooffice'"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<input type="text" class="form-control" placeholder="{{ 'logo_url' | translate }}" ng-model="formdata.office.logo_url"/> <input type="text" class="form-control" placeholder="{{ 'logo_url' | translate }}" ng-model="formdata.office.logoUrl"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<input type="text" class="form-control" placeholder="{{ 'address' | translate }}" ng-model="formdata.office.address"/> <input type="text" class="form-control" placeholder="{{ 'address' | translate }}" ng-model="formdata.office.address" ng-required="formdata.role == 'therapist_nooffice'"/>
</div> </div>
<div class="row"> <div class="row">
<div class="col-md-6"> <div class="col-md-6">
<div class="form-group"> <div class="form-group">
<input type="text" class="form-control" placeholder="{{ 'postal_code' | translate }}" ng-model="formdata.office.postal_code"/> <input type="text" class="form-control" placeholder="{{ 'postal_code' | translate }}" ng-model="formdata.office.postalCode" ng-change="formdata.office.postalCode = formdata.office.postalCode.toUpperCase()" ng-required="formdata.role == 'therapist_nooffice'"/>
</div> </div>
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
<div class="form-group"> <div class="form-group">
<select class="form-control" ng-model="formdata.office.country"> <input type="text" class="form-control" placeholder="{{ 'contact_person' | translate }}" ng-model="formdata.office.contactPerson" ng-required="formdata.role == 'therapist_nooffice'"/>
<option value="NULL" selected disabled hidden>{{ 'country' | translate }}</option>
<option value="ES">España</option>
<option value="US">United States</option>
<option value="UK">United Kingdom</option>
<option value="IE">Ireland</option>
</select>
</div> </div>
</div> </div>
</div> </div>
<div class="form-group">
<input type="text" class="form-control" placeholder="{{ 'contact_person' | translate }}" ng-model="formdata.office.contact_person"/>
</div>
<div class="row"> <div class="row">
<div class="col-md-6"> <div class="col-md-6">
<div class="form-group"> <div class="form-group">
<input type="email" class="form-control" placeholder="{{ 'email' | translate }}" ng-model="formdata.office.email"/> <input type="email" class="form-control" placeholder="{{ 'email' | translate }}" ng-model="formdata.office.email" ng-required="formdata.role == 'therapist_nooffice'"/>
</div> </div>
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
<div class="form-group"> <div class="form-group">
<input type="text" class="form-control" placeholder="{{ 'phone' | translate }}" ng-model="formdata.office.phone1"/> <input type="text" class="form-control" placeholder="{{ 'phone' | translate }}" ng-model="formdata.office.phone1" ng-required="formdata.role == 'therapist_nooffice'"/>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="form-group" id="office_selection" hidden> <div class="form-group" id="office_selection">
<legend translate>office_center</legend> <legend translate>office_center</legend>
<select class="form-control" ng-model="formdata.office_idx"> <select class="form-control" ng-model="formdata.office_idx" ng-required="formdata.role == 'therapist_office' || formdata.role == 'tutor_office'">
<option selected disabled hidden value="-1">{{ 'select_office' | translate }}</option> <option selected disabled hidden value="-1">{{ 'select_office' | translate }}</option>
<option ng-repeat="office in offices | orderBy: 'name' track by $index" value="$index"> {{ office.name }} </option> <option ng-repeat="office in offices | orderBy: 'name' track by $index" ng-value="$index"> {{ office.name }} </option>
</select> </select>
</div> </div>
...@@ -229,6 +240,7 @@ ...@@ -229,6 +240,7 @@
</div> </div>
<p class="text-center"> <p class="text-center">
<a href="/app/#/login" class="btn btn-default" translate>cancel</a>
<button type="submit" class="btn btn-primary" ng-disabled="signInForm.$invalid" translate>create_account</button> <button type="submit" class="btn btn-primary" ng-disabled="signInForm.$invalid" translate>create_account</button>
</p> </p>
......
...@@ -35,9 +35,6 @@ dashboardControllers.controller('StudentsCtrl', function StudentsCtrl( ...@@ -35,9 +35,6 @@ dashboardControllers.controller('StudentsCtrl', function StudentsCtrl(
if ($scope.user.office.admin === $scope.user.id) { if ($scope.user.office.admin === $scope.user.id) {
$scope.user.isAdmin = true; $scope.user.isAdmin = true;
} }
console.log("currentStudents: " + $scope.user.office.currentStudents);
console.log("maxStudents: " + $scope.user.office.maxStudents);
} else { } else {
$scope.user.office = { name: '' }; $scope.user.office = { name: '' };
} }
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
//----------------------- //-----------------------
// Supervisor Controller // Supervisor Controller
//----------------------- //-----------------------
dashboardControllers.controller('SupervisorCtrl', function SupervisorCtrl($scope, $window, $location, IOService, $modal) { dashboardControllers.controller('SupervisorCtrl', function SupervisorCtrl($scope, $window, $location, IOService, $modal, $translate) {
// Restore user data from session // Restore user data from session
var user = JSON.parse($window.sessionStorage.user); var user = JSON.parse($window.sessionStorage.user);
...@@ -16,6 +16,8 @@ dashboardControllers.controller('SupervisorCtrl', function SupervisorCtrl($scope ...@@ -16,6 +16,8 @@ dashboardControllers.controller('SupervisorCtrl', function SupervisorCtrl($scope
$scope.user.surname = user.surname; $scope.user.surname = user.surname;
$scope.user.pic = user.pic; $scope.user.pic = user.pic;
$scope.user.office = user.office; $scope.user.office = user.office;
if ($scope.user.office.name == 'no_office')
$scope.user.office.name = $translate.instant('no_office');
$scope.user.lang = user.lang; $scope.user.lang = user.lang;
$scope.user.isSupAdmin = user.isSupAdmin; $scope.user.isSupAdmin = user.isSupAdmin;
$scope.user.isTutor = user.isTutor; $scope.user.isTutor = user.isTutor;
......
...@@ -5,31 +5,16 @@ ...@@ -5,31 +5,16 @@
//-------------------------- //--------------------------
dashboardControllers.controller('SupervisorsCtrl', function SupervisorsCtrl($scope, $window, $http, config, $translate, ngToast) { dashboardControllers.controller('SupervisorsCtrl', function SupervisorsCtrl($scope, $window, $http, config, $translate, ngToast) {
//Office ID
$http $http
.get(config.backend+'/office/get_all') .get(config.backend+'/office/get/' + $scope.user.office.id + '/supervisors')
.success(function(data, status, headers, config) { .success(function(data, status, headers, config) {
// Add to list $scope.supervisors_list = data;
$scope.office = data[0]; console.log($scope.supervisors_list);
$scope.supervisors_list();
}) })
.error(function(data, status, headers, config) { .error(function(data, status, headers, config) {
console.log("Error from API: " + data.error); $translate('error_downloading_supervisors').then(function (translation) {
ngToast.danger({ content: translation });
});
}); });
// List of supervisors
$scope.supervisors_list = function(){
$http
.get(config.backend+'/office/get/' + $scope.office.id + '/supervisors')
.success(function(data, status, headers, config) {
$scope.supervisors_list = data;
console.log($scope.supervisors_list);
})
.error(function(data, status, headers, config) {
$translate('error_downloading_supervisors').then(function (translation) {
ngToast.danger({ content: translation });
});
});
};
}); });
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
href="/app/#/students"> href="/app/#/students">
<img <img
class="topbar__logo__image" class="topbar__logo__image"
ng-src="{{user.office.logo_url}}" ng-src="{{user.office.logoUrl}}"
alt="{{user.office.name}}" alt="{{user.office.name}}"
title="{{user.office.name}}" /> title="{{user.office.name}}" />
</a> </a>
......
...@@ -3,5 +3,10 @@ ...@@ -3,5 +3,10 @@
"A brand new app.": "A brand new app.", "A brand new app.": "A brand new app.",
"notification_from_pictogram": "Notification from Pictogram", "notification_from_pictogram": "Notification from Pictogram",
"signin_mail": "To activate your Pictogram account, click on this link:\n", "signin_mail": "To activate your Pictogram account, click on this link:\n",
"change_password_mail": "To change your password, please click on the following link:\n" "change_password_mail": "To change your password, please click on the following link:\n",
"login": "login",
"therapist_office_request": "{{ name }}, with email {{ email }}, is requesting to be linked as therapist to any of your students.",
"tutor_office_request": "{{ name }}, with email {{ email }}, is requesting to be linked as tutor/father/mother to any of your students.",
"welcome_msg1": "Welcome to Pictogram, {{ name }}!",
"welcome_msg2": "Your account is now active. You can proceed to"
} }
...@@ -3,5 +3,10 @@ ...@@ -3,5 +3,10 @@
"A brand new app.": "Una aplicación de la nueva marca.", "A brand new app.": "Una aplicación de la nueva marca.",
"notification_from_pictogram": "Notificación desde Pictogram", "notification_from_pictogram": "Notificación desde Pictogram",
"signin_mail": "Para activar su cuenta en Pictogram, haga click en el siguiente enlace:\n", "signin_mail": "Para activar su cuenta en Pictogram, haga click en el siguiente enlace:\n",
"change_password_mail": "Para cambiar su contraseña, haga click en el siguiente enlace:\n" "change_password_mail": "Para cambiar su contraseña, haga click en el siguiente enlace:\n",
"login": "acceder",
"therapist_office_request": "El/la terapeuta {{ name }}, con correo electrónico {{ email }}, pide ser asociado a algún estudiante.",
"tutor_office_request": "El/la tutor/a/padre/madre {{ name }}, con correo electrónico {{ email }}, pide ser asociado a algún estudiante.",
"welcome_msg1": "¡Bienvenido a Pictogram, {{ name }}!",
"welcome_msg2": "Su cuenta está ahora activa, por lo que puede"
} }
...@@ -112,6 +112,9 @@ module.exports.pictogram = { ...@@ -112,6 +112,9 @@ module.exports.pictogram = {
}, },
error_codes: { error_codes: {
'DUPLICATED_PICTO': 1 'DUPLICATED_PICTO': 1,
'OFFICE_NOT_FOUND': 2,
'SUPERVISOR_NOT_FOUND': 3,
'STUDENT_NOT_FOUND': 4
} }
}; };
...@@ -2,21 +2,31 @@ ...@@ -2,21 +2,31 @@
<html lang="es"> <html lang="es">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>Pictogram Dashboard</title> <title>Pictogram Web</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" href="/app/css/main.css"> <link rel="stylesheet" href="/app/css/main.css">
</head> </head>
<body> <body>
<img title="Pictogram" alt="Pictogram" src="/app/img/logo_pictogram.png"> <div class="container">
<div class="row">
<div class="col-md-2">
<img title="Pictogram" alt="Pictogram" src="/app/img/logo_pictogram.png" style="margin-top:40px">
</div>
<div class="col-md-10">
<div class="page-header">
<h1><%= welcome_msg1 %></h1>
</div>
<p class="lead"><%= welcome_msg2 %> <a href="<%= login_url %>"><%= login %></a>.</p>
</div>
</div>
</div>
<p><strong>Welcome to Pictogram, <%= sup.name %>!</strong></p> <footer class="footer">
<p>Your account is now active, so you can proceed to <a href="<%= login_url %>">login</a>.</p> <div class="container">
<p class="text-muted">Pictogram Web - Yottacode S.L.</p>
<p></p> </div>
</footer>
<p><strong>¡Bienvenido a Pictogram, <%= sup.name %>!</strong></p>
<p>Su cuenta está ahora activa, por lo que puede <a href="<%= login_url %>">acceder</a>.</p>
</body> </body>
</html> </html>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment