From bfd04ddbe8f0dd491dc7a0c278289f1a1f6f7c44 Mon Sep 17 00:00:00 2001 From: Are Almaas Date: Mon, 24 Jul 2017 12:23:18 +0200 Subject: [PATCH 1/3] chore: add differ infrastructure config --- .circleci/config.differ.yml | 62 +++++++++++++++++++++++++++ .gitignore | 3 ++ charts/eddi/.helmignore | 21 +++++++++ charts/eddi/Chart.yaml | 14 ++++++ charts/eddi/requirements.yaml | 4 ++ charts/eddi/templates/deployment.yaml | 36 ++++++++++++++++ charts/eddi/values.production.yaml | 22 ++++++++++ charts/eddi/values.yaml | 33 ++++++++++++++ tools/ensure-gcloud-installed.sh | 15 +++++++ tools/ensure-helm-installed.sh | 10 +++++ 10 files changed, 220 insertions(+) create mode 100644 .circleci/config.differ.yml create mode 100644 charts/eddi/.helmignore create mode 100755 charts/eddi/Chart.yaml create mode 100644 charts/eddi/requirements.yaml create mode 100644 charts/eddi/templates/deployment.yaml create mode 100644 charts/eddi/values.production.yaml create mode 100644 charts/eddi/values.yaml create mode 100755 tools/ensure-gcloud-installed.sh create mode 100755 tools/ensure-helm-installed.sh diff --git a/.circleci/config.differ.yml b/.circleci/config.differ.yml new file mode 100644 index 000000000..d2bd61d51 --- /dev/null +++ b/.circleci/config.differ.yml @@ -0,0 +1,62 @@ +version: 2 +branches: + ignore: + - gh-pages +jobs: + build: + docker: + - image: labsai/ci-build + - environment: + ACCT_AUTH: ${ACCT_AUTH} + APP_NAME: differ-bot-eddi + DOCKER_IMAGE: eu.gcr.io/differ-140008/etf-service-eddi + PROJECT_NAME: differ-140008 + CLUSTER_NAME: differ-dev + CLOUDSDK_COMPUTE_ZONE: europe-west1-d + working_directory: ~/eddi + steps: + - checkout + - setup_remote_docker + + - restore_cache: + key: eddi + paths: + - /root/.m2 + + - run: ./tools/ensure-gcloud-installed.sh + + - run: ./tools/ensure-helm-installed.sh + + - run: mvn clean package + + - run: mkdir -p $CIRCLE_TEST_REPORTS/junit/ + - run: find . -type f -regex ".*/target/surefire-reports/.*xml" -exec cp {} $CIRCLE_TEST_REPORTS/junit/ \; + + - save_cache: + key: eddi + paths: + - /root/.m2 + + - run: + name: Start container and verify it's working + command: | + set -x + chmod +x integration-tests.sh + ./integration-tests.sh + + - deploy: + name: Build and push Docker image + command: | + if [ "${CIRCLE_BRANCH}" == "master" ]; then + + # todo: get version dynamically? + export version=4.0.1 + + sudo /opt/google-cloud-sdk/bin/gcloud docker build -t $DOCKER_IMAGE:$version-$CIRCLE_BUILD_NUM . + sudo /opt/google-cloud-sdk/bin/gcloud docker build -t $DOCKER_IMAGE:latest . + + sudo /opt/google-cloud-sdk/bin/gcloud docker push $DOCKER_IMAGE:$version-$CIRCLE_BUILD_NUM + sudo /opt/google-cloud-sdk/bin/gcloud docker push $DOCKER_IMAGE:latest + + sudo helm upgrade $APP_NAME charts/$APP_NAME --set image.tag=$version-$IMAGE_TAG --install + fi diff --git a/.gitignore b/.gitignore index af2b05f06..1a5386fe0 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,6 @@ # ignore intellij files .idea/ *.iml + +charts/eddi/charts +charts/eddi/requirements.lock \ No newline at end of file diff --git a/charts/eddi/.helmignore b/charts/eddi/.helmignore new file mode 100644 index 000000000..f0c131944 --- /dev/null +++ b/charts/eddi/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/charts/eddi/Chart.yaml b/charts/eddi/Chart.yaml new file mode 100755 index 000000000..3ca2e43ba --- /dev/null +++ b/charts/eddi/Chart.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +description: A Helm chart for the EDDI bot service +name: eddi +version: 1.1.2 +tier: api +engine: gotpl +keywords: +- microservice +- java +- bot +- nosql +maintainers: +- email: hello@edtechfoundry.com + name: Edtech Foundry diff --git a/charts/eddi/requirements.yaml b/charts/eddi/requirements.yaml new file mode 100644 index 000000000..be760fdcc --- /dev/null +++ b/charts/eddi/requirements.yaml @@ -0,0 +1,4 @@ +dependencies: + - name: mongodb + version: 4.0.0 + repository: https://differ-charts.storage.googleapis.com diff --git a/charts/eddi/templates/deployment.yaml b/charts/eddi/templates/deployment.yaml new file mode 100644 index 000000000..c6a6bba05 --- /dev/null +++ b/charts/eddi/templates/deployment.yaml @@ -0,0 +1,36 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ .Values.appName }} + namespace: {{ .Values.namespace }} + labels: + app: {{ .Values.appName }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + tier: api +spec: + replicas: {{ .Values.replicaCount }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + app: {{ .Values.appName }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + tier: api + spec: + containers: + - name: {{ .Chart.Name }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - containerPort: {{ .Values.containers.internalPort }} + env: +{{ toYaml .Values.env | indent 12 }} + livenessProbe: + httpGet: + path: /health + port: {{ .Values.containers.internalPort }} + initialDelaySeconds: 50 + timeoutSeconds: 5 + resources: +{{ toYaml .Values.resources | indent 12 }} diff --git a/charts/eddi/values.production.yaml b/charts/eddi/values.production.yaml new file mode 100644 index 000000000..3024cbb83 --- /dev/null +++ b/charts/eddi/values.production.yaml @@ -0,0 +1,22 @@ +namespace: default +env: + - name: GET_HOSTS_FROM + value: dns + - name: GCLOUD_PROJECT + value: 'differ-140008' + - name: MONGODB_HOST + value: 'mongodb://eddi-storage-0.eddi-storage' +resources: + limits: + cpu: 200m + # nodejs heap limit + memory: 1536Mi + requests: + cpu: 100m + memory: 128Mi +mongodb: + diskSize: 20G + resources: + requests: + memory: 256Mi + cpu: 100m diff --git a/charts/eddi/values.yaml b/charts/eddi/values.yaml new file mode 100644 index 000000000..20bf5145f --- /dev/null +++ b/charts/eddi/values.yaml @@ -0,0 +1,33 @@ +appName: eddi +namespace: default +replicaCount: 1 +image: + repository: eu.gcr.io/differ-140008/etf-service-bot-eddi + tag: latest + pullPolicy: IfNotPresent +containers: + internalPort: 7070 +resources: + limits: + cpu: 100m + # nodejs heap limit + memory: 1536Mi + requests: + cpu: 20m + memory: 64Mi +env: + - name: GET_HOSTS_FROM + value: dns + - name: GCLOUD_PROJECT + value: 'differ-140008' + - name: MONGODB_HOST + value: 'mongodb://eddi-storage-0.eddi-storage' +mongodb: + appName: eddi-storage + namespace: default + mongodbVersion: 3.4 + imagePullPolicy: IfNotPresent + resources: + requests: + memory: 128Mi + cpu: 20m diff --git a/tools/ensure-gcloud-installed.sh b/tools/ensure-gcloud-installed.sh new file mode 100755 index 000000000..e0f4568d1 --- /dev/null +++ b/tools/ensure-gcloud-installed.sh @@ -0,0 +1,15 @@ +#!/bin/bash +set -e +set -x + +# Install and configure gcloud +sudo /opt/google-cloud-sdk/bin/gcloud --quiet components update --version 120.0.0 +sudo /opt/google-cloud-sdk/bin/gcloud --quiet components update --version 120.0.0 kubectl +echo $ACCT_AUTH | base64 --decode -i > ${HOME}/account-auth.json +sudo /opt/google-cloud-sdk/bin/gcloud auth activate-service-account --key-file ${HOME}/account-auth.json +sudo /opt/google-cloud-sdk/bin/gcloud config set project $PROJECT_NAME +sudo /opt/google-cloud-sdk/bin/gcloud --quiet config set container/cluster $CLUSTER_NAME + +# Reading the zone from the env var is not working so we set it here +sudo /opt/google-cloud-sdk/bin/gcloud config set compute/zone ${CLOUDSDK_COMPUTE_ZONE} +sudo /opt/google-cloud-sdk/bin/gcloud --quiet container clusters get-credentials $CLUSTER_NAME diff --git a/tools/ensure-helm-installed.sh b/tools/ensure-helm-installed.sh new file mode 100755 index 000000000..8217ee0f5 --- /dev/null +++ b/tools/ensure-helm-installed.sh @@ -0,0 +1,10 @@ +#!/bin/bash +set -e +set -x + +curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get > get_helm.sh +chmod 700 get_helm.sh +./get_helm.sh +sudo helm init +sudo helm repo add differ-charts https://differ-charts.storage.googleapis.com +sudo helm repo update From a0a275a828e45a5568c5f2c89d95b66bf8607f4a Mon Sep 17 00:00:00 2001 From: Are Almaas Date: Mon, 24 Jul 2017 12:32:51 +0200 Subject: [PATCH 2/3] rm blankspace --- .circleci/config.differ.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.differ.yml b/.circleci/config.differ.yml index d2bd61d51..289257972 100644 --- a/.circleci/config.differ.yml +++ b/.circleci/config.differ.yml @@ -54,7 +54,7 @@ jobs: sudo /opt/google-cloud-sdk/bin/gcloud docker build -t $DOCKER_IMAGE:$version-$CIRCLE_BUILD_NUM . sudo /opt/google-cloud-sdk/bin/gcloud docker build -t $DOCKER_IMAGE:latest . - + sudo /opt/google-cloud-sdk/bin/gcloud docker push $DOCKER_IMAGE:$version-$CIRCLE_BUILD_NUM sudo /opt/google-cloud-sdk/bin/gcloud docker push $DOCKER_IMAGE:latest From 2982883e724612d97d4420c913462cd7da052f70 Mon Sep 17 00:00:00 2001 From: Are Almaas Date: Mon, 24 Jul 2017 12:34:47 +0200 Subject: [PATCH 3/3] Revert "Merge remote-tracking branch 'labsai/master' into chore--add-differ-infrastrcture-config" This reverts commit bb5f6b9cd1842c5bfcd1429ce1c8b52aabc2ad3b, reversing changes made to a0a275a828e45a5568c5f2c89d95b66bf8607f4a. --- .circleci/config.yml | 13 +- .../development/systemRuntime.properties | 2 +- apiserver/pom.xml | 5 - .../src/main/java/ai/labs/api/ApiServer.java | 2 - apiserver/src/main/resources/css/chat.css | 24 -- apiserver/src/main/resources/js/chat.js | 253 +++++++++--------- .../rest/bots/model/BotConfiguration.java | 17 +- .../rest/bots/model/ChannelConnector.java | 17 ++ .../output/model/OutputConfiguration.java | 17 +- .../output/model/OutputConfigurationSet.java | 2 - .../packages/model/PackageConfiguration.java | 8 +- .../impl/ConversationCallbackTask.java | 3 +- .../ai/labs/lifecycle/ILifecycleTask.java | 21 +- .../labs/lifecycle/AbstractLifecycleTask.java | 25 ++ .../ai/labs/memory/IConversationMemory.java | 12 +- .../src/main/java/ai/labs/memory/IData.java | 8 +- .../java/ai/labs/memory/IDataFactory.java | 12 - .../SimpleConversationMemorySnapshot.java | 6 +- .../ai/labs/memory/ConversationMemory.java | 31 ++- .../memory/ConversationMemoryUtilities.java | 9 +- .../java/ai/labs/memory/ConversationStep.java | 47 ++-- .../src/main/java/ai/labs/memory/Data.java | 65 +++-- .../main/java/ai/labs/memory/DataFactory.java | 18 -- .../bootstrap/ConversationMemoryModule.java | 5 +- .../ai/labs/memory/ConversationStepTest.java | 32 +-- .../main/java/ai/labs/core/CoreRuntime.java | 10 + .../ai/labs/core/behavior/BehaviorGroup.java | 25 +- .../ai/labs/core/behavior/BehaviorRule.java | 76 +++--- .../core/behavior/BehaviorRuleSetParser.java | 10 + .../behavior/BehaviorRulesEvaluationTask.java | 25 +- .../core/behavior/BehaviorRulesEvaluator.java | 23 +- ...zation.java => BehaviorSerialization.java} | 52 +++- .../ai/labs/core/behavior/BehaviorSet.java | 22 +- .../labs/core/behavior/BehaviorSetResult.java | 54 +++- ...ation.java => IBehaviorSerialization.java} | 6 +- .../core/behavior/extensions/Connector.java | 41 ++- .../core/behavior/extensions/Dependency.java | 21 +- .../core/behavior/extensions/IExtension.java | 14 +- .../behavior/extensions/InputMatcher.java | 24 +- .../core/behavior/extensions/Negation.java | 14 +- .../core/behavior/extensions/Occurrence.java | 39 ++- .../behavior/extensions/OutputReference.java | 147 ++++++++++ .../behavior/extensions/PropertyMatcher.java | 88 ++++++ .../core/behavior/extensions/ResultSize.java | 42 ++- .../BehaviorRuleExtensionRegistry.java | 8 +- .../ExtensionDescriptorBuilder.java | 11 +- .../ai/labs/core/bootstrap/CoreModule.java | 10 +- .../core/normalizing/NormalizeInputTask.java | 9 +- .../ai/labs/core}/output/IOutputFilter.java | 2 +- .../ai/labs/core}/output/ISimpleOutput.java | 4 +- .../ai/labs/core/output}/OutputEntry.java | 13 +- .../ai/labs/core/output}/OutputFilter.java | 3 +- .../ai/labs/core/output}/SimpleOutput.java | 24 +- .../labs/core/output}/SimpleOutputTask.java | 85 ++---- .../core/rest/internal/RestBotEngine.java | 15 +- .../DeseralizeJsonBehaviorRulesTest.java | 4 +- .../SerializeJsonBehaviorRulesTest.java | 16 +- .../core/output/OutputSerializationTest.java | 47 ++++ .../labs/core/output}/SimpleOutputTest.java | 14 +- .../endpoint/FacebookEndpoint.java | 7 +- outputgeneration-definition/pom.xml | 26 -- .../main/java/ai/labs/output/IQuickReply.java | 10 - outputgeneration-impl/pom.xml | 41 --- .../bootstrap/OutputGenerationModule.java | 18 -- .../java/ai/labs/output/impl/QuickReply.java | 17 -- .../output/impl/OutputSerializationTest.java | 54 ---- pom.xml | 2 - .../java/ai/labs/runtime/BaseRuntime.java | 17 +- .../ai/labs/parser/rest/model/Solution.java | 6 +- semanticparser-impl/pom.xml | 5 - .../ai/labs/parser/DictionaryUtilities.java | 57 ---- .../java/ai/labs/parser/IInputParser.java | 3 - .../java/ai/labs/parser/InputParserTask.java | 77 +++--- .../java/ai/labs/parser/TestDictionary.java | 21 +- .../ai/labs/parser/internal/InputHolder.java | 8 +- .../ai/labs/parser/internal/InputParser.java | 147 +++++----- .../internal/matches/IterationCounter.java | 4 +- .../parser/internal/matches/MatchMatrix.java | 12 +- .../internal/matches/MatchingResult.java | 17 +- .../parser/internal/matches/Permutation.java | 8 +- .../parser/internal/matches/Suggestion.java | 6 +- .../ai/labs/parser/model/DictionaryEntry.java | 20 +- .../main/java/ai/labs/parser/model/Word.java | 2 +- .../parser/rest/impl/RestSemanticParser.java | 8 +- .../java/ai/labs/parser/InputParserTest.java | 54 ++-- .../parser/TemporaryDictionaryParserTest.java | 86 ------ .../phrases/PhraseExpressionTest.java | 78 ++++++ .../internal/phrases/PhraseRegexTest.java | 38 +++ 88 files changed, 1368 insertions(+), 1133 deletions(-) create mode 100644 configurationrepository-definition/src/main/java/ai/labs/resources/rest/bots/model/ChannelConnector.java create mode 100644 conversationlifecycle-impl/src/main/java/ai/labs/lifecycle/AbstractLifecycleTask.java delete mode 100644 conversationmemory-definition/src/main/java/ai/labs/memory/IDataFactory.java delete mode 100644 conversationmemory-impl/src/main/java/ai/labs/memory/DataFactory.java create mode 100644 coreserver/src/main/java/ai/labs/core/behavior/BehaviorRuleSetParser.java rename coreserver/src/main/java/ai/labs/core/behavior/{BehaviorDeserialization.java => BehaviorSerialization.java} (62%) rename coreserver/src/main/java/ai/labs/core/behavior/{IBehaviorDeserialization.java => IBehaviorSerialization.java} (59%) create mode 100644 coreserver/src/main/java/ai/labs/core/behavior/extensions/OutputReference.java create mode 100644 coreserver/src/main/java/ai/labs/core/behavior/extensions/PropertyMatcher.java rename {outputgeneration-definition/src/main/java/ai/labs => coreserver/src/main/java/ai/labs/core}/output/IOutputFilter.java (78%) rename {outputgeneration-definition/src/main/java/ai/labs => coreserver/src/main/java/ai/labs/core}/output/ISimpleOutput.java (76%) rename {outputgeneration-definition/src/main/java/ai/labs/output/model => coreserver/src/main/java/ai/labs/core/output}/OutputEntry.java (60%) rename {outputgeneration-impl/src/main/java/ai/labs/output/impl => coreserver/src/main/java/ai/labs/core/output}/OutputFilter.java (76%) rename {outputgeneration-impl/src/main/java/ai/labs/output/impl => coreserver/src/main/java/ai/labs/core/output}/SimpleOutput.java (92%) rename {outputgeneration-impl/src/main/java/ai/labs/output/impl => coreserver/src/main/java/ai/labs/core/output}/SimpleOutputTask.java (55%) create mode 100644 coreserver/src/test/java/ai/labs/core/output/OutputSerializationTest.java rename {outputgeneration-impl/src/test/java/ai/labs/output/impl => coreserver/src/test/java/ai/labs/core/output}/SimpleOutputTest.java (89%) delete mode 100644 outputgeneration-definition/pom.xml delete mode 100644 outputgeneration-definition/src/main/java/ai/labs/output/IQuickReply.java delete mode 100644 outputgeneration-impl/pom.xml delete mode 100644 outputgeneration-impl/src/main/java/ai/labs/output/bootstrap/OutputGenerationModule.java delete mode 100644 outputgeneration-impl/src/main/java/ai/labs/output/impl/QuickReply.java delete mode 100644 outputgeneration-impl/src/test/java/ai/labs/output/impl/OutputSerializationTest.java delete mode 100644 semanticparser-impl/src/main/java/ai/labs/parser/DictionaryUtilities.java rename semanticparser-impl/src/{test => main}/java/ai/labs/parser/TestDictionary.java (67%) delete mode 100644 semanticparser-impl/src/test/java/ai/labs/parser/TemporaryDictionaryParserTest.java create mode 100644 semanticparser-impl/src/test/java/ai/labs/parser/internal/phrases/PhraseExpressionTest.java create mode 100644 semanticparser-impl/src/test/java/ai/labs/parser/internal/phrases/PhraseRegexTest.java diff --git a/.circleci/config.yml b/.circleci/config.yml index 464b9c2a8..a01cd515f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -39,18 +39,9 @@ jobs: if [ "${CIRCLE_BRANCH}" == "master" ]; then docker login -u $DOCKER_USER -p $DOCKER_PASS - docker build -t labsai/eddi:4.1.0-b$CIRCLE_BUILD_NUM . - docker push labsai/eddi:4.1.0-b$CIRCLE_BUILD_NUM + docker build -t labsai/eddi:4.0.1-b$CIRCLE_BUILD_NUM . + docker push labsai/eddi:4.0.1-b$CIRCLE_BUILD_NUM docker build -t labsai/eddi:latest . docker push labsai/eddi:latest - - # docker build -t labsai/eddi:4.1.0 . - # docker push labsai/eddi:4.1.0 - - # docker build -t labsai/eddi:4.1 . - # docker push labsai/eddi:4.1 - - # docker build -t labsai/eddi:4 . - # docker push labsai/eddi:4 fi diff --git a/apiserver/config/development/systemRuntime.properties b/apiserver/config/development/systemRuntime.properties index 823e2d3c3..273b7712c 100644 --- a/apiserver/config/development/systemRuntime.properties +++ b/apiserver/config/development/systemRuntime.properties @@ -1,5 +1,5 @@ systemRuntime.projectName=eddi -systemRuntime.projectVersion=4.1.0 +systemRuntime.projectVersion=4.0.1 systemRuntime.configDir=config/development systemRuntime.resourceDir=resources systemRuntime.logDir=logs diff --git a/apiserver/pom.xml b/apiserver/pom.xml index 7b7220efc..3ce702048 100644 --- a/apiserver/pom.xml +++ b/apiserver/pom.xml @@ -175,11 +175,6 @@ semanticparser-impl ${project.version} - - ai.labs - outputgeneration-impl - ${project.version} - ai.labs caching-impl-infinispan diff --git a/apiserver/src/main/java/ai/labs/api/ApiServer.java b/apiserver/src/main/java/ai/labs/api/ApiServer.java index eb4a62598..8c5306ed1 100644 --- a/apiserver/src/main/java/ai/labs/api/ApiServer.java +++ b/apiserver/src/main/java/ai/labs/api/ApiServer.java @@ -8,7 +8,6 @@ import ai.labs.facebookmessenger.bootstrap.FacebookMessengerModule; import ai.labs.httpclient.guice.HttpClientModule; import ai.labs.memory.bootstrap.ConversationMemoryModule; -import ai.labs.output.bootstrap.OutputGenerationModule; import ai.labs.parser.bootstrap.SemanticParserModule; import ai.labs.permission.bootstrap.PermissionModule; import ai.labs.persistence.bootstrap.PersistenceModule; @@ -61,7 +60,6 @@ public static void main(String[] args) throws Exception { new UserModule(), new CachingModule(new FileInputStream(configDir + "infinispan.xml")), new SemanticParserModule(), - new OutputGenerationModule(), new AutomatedtestingModule(), new StaticResourcesModule(), new HttpClientModule(), diff --git a/apiserver/src/main/resources/css/chat.css b/apiserver/src/main/resources/css/chat.css index fd305a354..2a7cf22d5 100644 --- a/apiserver/src/main/resources/css/chat.css +++ b/apiserver/src/main/resources/css/chat.css @@ -65,30 +65,6 @@ body { opacity: 0; } -.messages .quick_reply { - position: relative; - clear: both; - overflow: hidden; - transition: all 0.5s linear; - opacity: 0; - background-color: #ffe6cb; - color: #c48843; - border: 2px dashed #c48843; - padding: 15px 32px; - text-align: center; - text-decoration: none; - display: inline-block; - font-size: 16px; - border-radius: 6px; - cursor: pointer; - box-shadow: 2px 2px gray; - margin: 5px; -} - -.messages .quick_reply.appeared { - opacity: 1; -} - .typing { background-color: #8c8c8c; font-weight: bolder; diff --git a/apiserver/src/main/resources/js/chat.js b/apiserver/src/main/resources/js/chat.js index 92605da93..b16312d95 100644 --- a/apiserver/src/main/resources/js/chat.js +++ b/apiserver/src/main/resources/js/chat.js @@ -1,99 +1,58 @@ -const eddi = {}; +var eddi = {}; -class Message { - constructor(text, message_side) { - this.text = text; - this.message_side = message_side; - } - - get draw() { +var Message; +Message = function (arg) { + this.text = arg.text, this.message_side = arg.message_side; + this.draw = function (_this) { return function () { - const $message = $($('.message_template').clone().html()); - $message.addClass(this.message_side).find('.text').html(this.text); + var $message; + $message = $($('.message_template').clone().html()); + $message.addClass(_this.message_side).find('.text').html(_this.text); $('.messages').append($message); return setTimeout(function () { return $message.addClass('appeared'); }, 0); }; - } -} - -class QuickReply { - constructor(text, message_side) { - this.text = text; - this.message_side = message_side; - } - - get draw() { - return function () { - const _this = this; - const $quickReply = $('