Loading .gitlab-ci.yml +36 −20 Original line number Diff line number Diff line Loading @@ -17,8 +17,6 @@ maven-build: ELASTIC_XPACKSECURITYUSER: ${DEV_ELASTIC_XPACKSECURITYUSER} only: - branches except: - master cache: paths: - .m2/repository/ Loading @@ -27,12 +25,12 @@ maven-build: after_script: - rm -r .m2/repository/es artifacts: name: "${CI_PROJECT_NAME}" name: "${CI_PROJECT_NAME}-${CI_COMMIT_REF_NAME}" expire_in: '6 months' paths: - dist/*.jar docker-build-commit: docker-build-commit-non-master-branches: stage: package image: docker:stable variables: Loading @@ -52,7 +50,7 @@ docker-build-commit: -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_NAME}-latest . - docker push ${CI_REGISTRY_IMAGE} docker-build-tag: docker-build-commit-master-branch: stage: package image: docker:stable variables: Loading @@ -62,7 +60,7 @@ docker-build-tag: services: - docker:dind only: - tags - master script: - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY} - > Loading @@ -70,6 +68,20 @@ docker-build-tag: -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG} -t ${CI_REGISTRY_IMAGE}:latest . - docker push ${CI_REGISTRY_IMAGE} docker-tag-already-built-image: stage: package image: docker:stable variables: DOCKER_DRIVER: overlay2 services: - docker:dind only: - tags script: - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY} - docker tag ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} ${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG} - docker push ${CI_REGISTRY_IMAGE} container_scanning: stage: test-package image: docker:stable Loading @@ -80,8 +92,6 @@ container_scanning: - docker:stable-dind only: - branches except: - master script: - docker run -d --name db arminc/clair-db:latest - docker run -p 6060:6060 --link db:postgres -d --name clair arminc/clair-local-scan:v2.0.1 Loading @@ -92,7 +102,9 @@ container_scanning: - mv clair-scanner_linux_amd64 clair-scanner - chmod +x clair-scanner - touch clair-whitelist.yml - ./clair-scanner -c http://docker:6060 --ip $(hostname -i) -r gl-sast-container-report.json -l clair.log -w clair-whitelist.yml ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} || true - > ./clair-scanner -c http://docker:6060 --ip $(hostname -i) -r gl-sast-container-report.json -l clair.log -w clair-whitelist.yml ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} || true artifacts: paths: [gl-sast-container-report.json] Loading @@ -110,16 +122,18 @@ deploy-dev: - docker:dind script: - > deploy.sh IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE} SPRING_PROFILES_ACTIVE=pre SPRING_DATASOURCE_USERNAME=${DEV_SPRING_DATASOURCE_USERNAME} deploy.sh IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE} SPRING_PROFILES_ACTIVE=pre SPRING_DATASOURCE_USERNAME=${DEV_SPRING_DATASOURCE_USERNAME} SPRING_DATASOURCE_PASSWORD=${DEV_SPRING_DATASOURCE_PASSWORD} JOBS_DATASOURCE_USERNAME=${DEV_JOBS_DATASOURCE_USERNAME} JOBS_DATASOURCE_PASSWORD=${DEV_JOBS_DATASOURCE_PASSWORD} JOBS_DATASOURCE_USERNAME=${DEV_JOBS_DATASOURCE_USERNAME} JOBS_DATASOURCE_PASSWORD=${DEV_JOBS_DATASOURCE_PASSWORD} ELASTIC_XPACKSECURITYUSER=${DEV_ELASTIC_XPACKSECURITYUSER} environment: name: dev url: https://appdev.${DEV_PUBLIC_HOSTNAME}/api/${CI_PROJECT_NAME} url: https://appdev.${DEV_PUBLIC_HOSTNAME}/${CI_PROJECT_NAME} only: - dev when: manual deploy-supporting-branch: stage: deploy Loading @@ -135,14 +149,15 @@ deploy-supporting-branch: - docker:dind script: - > deploy.sh IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE} SPRING_PROFILES_ACTIVE=pre SPRING_DATASOURCE_USERNAME=${DEV_SPRING_DATASOURCE_USERNAME} deploy.sh IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE} SPRING_PROFILES_ACTIVE=pre SPRING_DATASOURCE_USERNAME=${DEV_SPRING_DATASOURCE_USERNAME} SPRING_DATASOURCE_PASSWORD=${DEV_SPRING_DATASOURCE_PASSWORD} JOBS_DATASOURCE_USERNAME=${DEV_JOBS_DATASOURCE_USERNAME} JOBS_DATASOURCE_PASSWORD=${DEV_JOBS_DATASOURCE_PASSWORD} JOBS_DATASOURCE_USERNAME=${DEV_JOBS_DATASOURCE_USERNAME} JOBS_DATASOURCE_PASSWORD=${DEV_JOBS_DATASOURCE_PASSWORD} ELASTIC_XPACKSECURITYUSER=${DEV_ELASTIC_XPACKSECURITYUSER} environment: name: dev url: https://appdev.${DEV_PUBLIC_HOSTNAME}/api/${CI_PROJECT_NAME} url: https://appdev.${DEV_PUBLIC_HOSTNAME}/${CI_PROJECT_NAME} only: - branches except: Loading @@ -167,11 +182,12 @@ deploy-pro: deploy.sh IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE} SPRING_PROFILES_ACTIVE=prod SPRING_DATASOURCE_USERNAME=${PRO_SPRING_DATASOURCE_USERNAME} SPRING_DATASOURCE_PASSWORD=${PRO_SPRING_DATASOURCE_PASSWORD} JOBS_DATASOURCE_USERNAME=${PRO_JOBS_DATASOURCE_USERNAME} JOBS_DATASOURCE_PASSWORD=${PRO_JOBS_DATASOURCE_PASSWORD} JOBS_DATASOURCE_USERNAME=${PRO_JOBS_DATASOURCE_USERNAME} JOBS_DATASOURCE_PASSWORD=${PRO_JOBS_DATASOURCE_PASSWORD} ELASTIC_XPACKSECURITYUSER=${PRO_ELASTIC_XPACKSECURITYUSER} environment: name: pro url: https://${PRO_PUBLIC_HOSTNAME}/api/${CI_PROJECT_NAME} url: https://${PRO_PUBLIC_HOSTNAME}/${CI_PROJECT_NAME} only: - tags - master when: manual src/main/resources/static/app-client/main.js 0 → 100644 +66 −0 Original line number Diff line number Diff line require([ 'dijit/form/Button' , 'app-client/task/TasksSelect' , 'dijit/form/Select' , 'dojo/dom' , 'app-client/socket/Socket' , 'app-client/tasks' , 'dojo/domReady!' ], function( Button , TasksSelect , Select , dom , Socket , Tasks ){ var socket = new Socket({ url: '/db2es/socket' }); var connectBtn = new Button({ label: 'Connect', onClick: function(){ socket.connect(); } }, 'connectBtn'); var sendBtn = new TasksSelect({ socket: socket }, 'sendBtn'); /* sendBtn.on('subscribed', function() { console.log('Subscrito'); setTimeout(function() { var listTask = ["citation-job", "animaltracking-job"]; socket.sendByTopic('/topic' + sendBtn.reqChannel, listTask); }, 500); });*/ socket.on('connected', function(url) { console.log('Conectado'); /* socket.subscribe('/topic/greeting', function(message) { console.log('Recibo gretting: ' + message); }); socket.subscribe('/topic/jobs/list', function(message) { console.log('Recibo jobs: ' + message); });*/ var tasks = new Tasks({ socket: socket }, 'tasks'); /*socket.subscribe('/topic/jobs/list', function(message) { console.log('Recibo jobs: ' + message); });*/ }); }); No newline at end of file src/main/resources/static/app-client/socket/Socket.js 0 → 100644 +68 −0 Original line number Diff line number Diff line define([ 'dojo/_base/declare' , 'dojo/_base/lang' , 'dojo/Evented' , 'sockjs' , 'stomp' ], function( declare , lang , Evented , SockJS , Stomp ){ return declare([Evented], { _ws: null, _client: null, url: null, constructor: function(args) { this._subscribes = {}; this._isConnected = false; lang.mixin(this, args); this.on('connect', this._connect); this.on('error', this._error); }, connect: function() { this.emit(this.url ? 'connect' : 'error', this.url); }, isConnected: function() { return this._isConnected; }, subscribe: function(channel, callback) { this._subscribes[channel] = callback; this._client.subscribe(channel, function(message) { console.debug('SUBSCRIBE', channel, message); message.body = JSON.parse(message.body); callback(message); }); }, send: function(channel, message) { console.debug('SEND', channel, message); this._client.send(channel, {}, JSON.stringify(message)); }, _connect: function() { this._ws = new SockJS(this.url); this._client = window.Stomp.over(this._ws); this._client.connect({}, lang.hitch(this, this._connected)); }, _connected: function() { this._isConnected = true; this.emit('connected', this); }, _error: function(url) { console.error('ERROR'); } }); }); No newline at end of file src/main/resources/static/app-client/socket/SocketMock.js 0 → 100644 +30 −0 Original line number Diff line number Diff line define([ 'dojo/_base/declare' , 'dojo/_base/lang' , 'app-client/socket/Socket' ], function( declare , lang , Socket ){ return declare([Socket], { subscribe: function(channel, callback) { this._subscribes[channel] = callback; }, sendByTopic: function(channel, message) { this._subscribes[channel] && this._subscribes[channel](message); }, send: function(channel, message) { console.log('Send', channel, message); }, _connect: function() { console.log('Connect'); setTimeout(lang.hitch(this, this._connected), 500); } }); }); No newline at end of file src/main/resources/static/app-client/task/TasksSelect.js 0 → 100644 +144 −0 Original line number Diff line number Diff line define([ 'dojo/_base/declare' , 'dojo/_base/lang' , 'dojo/on' , 'dojo/Evented' , 'dojo/dom-construct' , 'dijit/_WidgetBase' , 'dijit/form/Select' , 'dijit/form/Button' ], function( declare , lang , on , Evented , domConstruct , _Widget , Select , Button ){ return declare([_Widget, Evented], { socket: null, reqChannel: '/jobs/list', url: null, jobsList: null, constructor: function(args) { this._subscriptions = {}; this.i18n = { "indexing-animalTracking-job": "Tracking de animales", "indexing-platformTracking-job": "Tracking de plataformas", "indexing-citation-job": "Citas corológicas", "indexing-timeseriesSurvey-job": "Estaciones fijas con series temporales", "indexing-timeSeries-job": "Series temporales", "indexing-attributeSeries-job": "Series de atributo de Infrastructuras", "indexing-isolines-job": "Isolíneas", "indexing-area-job": "Áreas", "indexing-objectCollectingSurvey-job": "Indexar object survey", "indexing-objectCollectingseries-job": "Serie de colección de objetos", "indexing-infrastructure-job": "Infrastructuras", "indexing-administrativeDomains-job": "Dominios de administración", "indexing-document-job": "Indexar documentos", "indexing-classificationsDomains-job": "Dominios de clasificación", "indexing-parametersDomains-job": "Dominios de parámetros", "indexing-qualityDomains-job": "Dominios de calidad de los datos", "indexing-qualifyDomains-job": "Dominios de calificación de objetos", "indexing-taxonomyDomains-job": "Dominios de taxonomía", "indexing-ancillaryDataDomains-job": "Dominios de datos auxiliares", "indexing-toponymias-job": "Toponimias", "indexing-taxonomy-job": "Taxonomía", "indexing-administrative-job": "Administración", "indexing-atlas-job": "Atlas" }; lang.mixin(this, args); }, postCreate: function() { this._createLayout(); this._startSocket(); }, _createLayout: function() { this._selectNode = domConstruct.create('span', null, this.domNode); this._btnNode = domConstruct.create('span', null, this.domNode); }, _startSocket: function(value) { if (this.socket) { this.socket.isConnected() && this._onSocketOpened(); this.socket.on('connected', lang.hitch(this, this._onSocketOpened)); } }, _onSocketOpened: function() { this.emit('socket-opened'); this._onSubscriptions(); }, _onSubscriptions: function() { this.socket.subscribe('/topic' + this.reqChannel, lang.hitch(this, this._onReceivedJobsList)); this.emit('subscribed'); this.socket.send('/app' + this.reqChannel, {}); }, _onReceivedJobsList: function(message) { this.jobsList = this._parseJobsList(message.body); this.emit('received-jobs-list', this.jobsList); this._createSelectJob(); this._createBtnRunJob(); }, _parseJobsList: function(jobsIn) { var jobs = []; for (var i = 0; i < jobsIn.length; i++) { jobs.push({ value: jobsIn[i], label: this.i18n[jobsIn[i]] }); } return jobs; }, _createSelectJob: function() { this._selectWidget = new Select({ name: 'selectJob', options: this.jobsList, style: 'width: 90%' }, this._selectNode); }, _createBtnRunJob: function() { this._btnWidget = new Button({ onClick: lang.hitch(this, this._runJob), iconClass: 'dijitIconTask', label: null }, this._btnNode); }, _runJob: function() { var jobId = this._selectWidget.get('value'); this.socket.send('/app/jobs/indexing', { jobName: jobId }); }, _sendRequest: function() { this.socket.send(this.reqChannel, {}); }, _createJobList: function() { }, _error: function(url) { console.error('ERROR'); } }); }); No newline at end of file Loading
.gitlab-ci.yml +36 −20 Original line number Diff line number Diff line Loading @@ -17,8 +17,6 @@ maven-build: ELASTIC_XPACKSECURITYUSER: ${DEV_ELASTIC_XPACKSECURITYUSER} only: - branches except: - master cache: paths: - .m2/repository/ Loading @@ -27,12 +25,12 @@ maven-build: after_script: - rm -r .m2/repository/es artifacts: name: "${CI_PROJECT_NAME}" name: "${CI_PROJECT_NAME}-${CI_COMMIT_REF_NAME}" expire_in: '6 months' paths: - dist/*.jar docker-build-commit: docker-build-commit-non-master-branches: stage: package image: docker:stable variables: Loading @@ -52,7 +50,7 @@ docker-build-commit: -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_NAME}-latest . - docker push ${CI_REGISTRY_IMAGE} docker-build-tag: docker-build-commit-master-branch: stage: package image: docker:stable variables: Loading @@ -62,7 +60,7 @@ docker-build-tag: services: - docker:dind only: - tags - master script: - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY} - > Loading @@ -70,6 +68,20 @@ docker-build-tag: -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG} -t ${CI_REGISTRY_IMAGE}:latest . - docker push ${CI_REGISTRY_IMAGE} docker-tag-already-built-image: stage: package image: docker:stable variables: DOCKER_DRIVER: overlay2 services: - docker:dind only: - tags script: - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY} - docker tag ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} ${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG} - docker push ${CI_REGISTRY_IMAGE} container_scanning: stage: test-package image: docker:stable Loading @@ -80,8 +92,6 @@ container_scanning: - docker:stable-dind only: - branches except: - master script: - docker run -d --name db arminc/clair-db:latest - docker run -p 6060:6060 --link db:postgres -d --name clair arminc/clair-local-scan:v2.0.1 Loading @@ -92,7 +102,9 @@ container_scanning: - mv clair-scanner_linux_amd64 clair-scanner - chmod +x clair-scanner - touch clair-whitelist.yml - ./clair-scanner -c http://docker:6060 --ip $(hostname -i) -r gl-sast-container-report.json -l clair.log -w clair-whitelist.yml ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} || true - > ./clair-scanner -c http://docker:6060 --ip $(hostname -i) -r gl-sast-container-report.json -l clair.log -w clair-whitelist.yml ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} || true artifacts: paths: [gl-sast-container-report.json] Loading @@ -110,16 +122,18 @@ deploy-dev: - docker:dind script: - > deploy.sh IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE} SPRING_PROFILES_ACTIVE=pre SPRING_DATASOURCE_USERNAME=${DEV_SPRING_DATASOURCE_USERNAME} deploy.sh IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE} SPRING_PROFILES_ACTIVE=pre SPRING_DATASOURCE_USERNAME=${DEV_SPRING_DATASOURCE_USERNAME} SPRING_DATASOURCE_PASSWORD=${DEV_SPRING_DATASOURCE_PASSWORD} JOBS_DATASOURCE_USERNAME=${DEV_JOBS_DATASOURCE_USERNAME} JOBS_DATASOURCE_PASSWORD=${DEV_JOBS_DATASOURCE_PASSWORD} JOBS_DATASOURCE_USERNAME=${DEV_JOBS_DATASOURCE_USERNAME} JOBS_DATASOURCE_PASSWORD=${DEV_JOBS_DATASOURCE_PASSWORD} ELASTIC_XPACKSECURITYUSER=${DEV_ELASTIC_XPACKSECURITYUSER} environment: name: dev url: https://appdev.${DEV_PUBLIC_HOSTNAME}/api/${CI_PROJECT_NAME} url: https://appdev.${DEV_PUBLIC_HOSTNAME}/${CI_PROJECT_NAME} only: - dev when: manual deploy-supporting-branch: stage: deploy Loading @@ -135,14 +149,15 @@ deploy-supporting-branch: - docker:dind script: - > deploy.sh IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE} SPRING_PROFILES_ACTIVE=pre SPRING_DATASOURCE_USERNAME=${DEV_SPRING_DATASOURCE_USERNAME} deploy.sh IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE} SPRING_PROFILES_ACTIVE=pre SPRING_DATASOURCE_USERNAME=${DEV_SPRING_DATASOURCE_USERNAME} SPRING_DATASOURCE_PASSWORD=${DEV_SPRING_DATASOURCE_PASSWORD} JOBS_DATASOURCE_USERNAME=${DEV_JOBS_DATASOURCE_USERNAME} JOBS_DATASOURCE_PASSWORD=${DEV_JOBS_DATASOURCE_PASSWORD} JOBS_DATASOURCE_USERNAME=${DEV_JOBS_DATASOURCE_USERNAME} JOBS_DATASOURCE_PASSWORD=${DEV_JOBS_DATASOURCE_PASSWORD} ELASTIC_XPACKSECURITYUSER=${DEV_ELASTIC_XPACKSECURITYUSER} environment: name: dev url: https://appdev.${DEV_PUBLIC_HOSTNAME}/api/${CI_PROJECT_NAME} url: https://appdev.${DEV_PUBLIC_HOSTNAME}/${CI_PROJECT_NAME} only: - branches except: Loading @@ -167,11 +182,12 @@ deploy-pro: deploy.sh IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE} SPRING_PROFILES_ACTIVE=prod SPRING_DATASOURCE_USERNAME=${PRO_SPRING_DATASOURCE_USERNAME} SPRING_DATASOURCE_PASSWORD=${PRO_SPRING_DATASOURCE_PASSWORD} JOBS_DATASOURCE_USERNAME=${PRO_JOBS_DATASOURCE_USERNAME} JOBS_DATASOURCE_PASSWORD=${PRO_JOBS_DATASOURCE_PASSWORD} JOBS_DATASOURCE_USERNAME=${PRO_JOBS_DATASOURCE_USERNAME} JOBS_DATASOURCE_PASSWORD=${PRO_JOBS_DATASOURCE_PASSWORD} ELASTIC_XPACKSECURITYUSER=${PRO_ELASTIC_XPACKSECURITYUSER} environment: name: pro url: https://${PRO_PUBLIC_HOSTNAME}/api/${CI_PROJECT_NAME} url: https://${PRO_PUBLIC_HOSTNAME}/${CI_PROJECT_NAME} only: - tags - master when: manual
src/main/resources/static/app-client/main.js 0 → 100644 +66 −0 Original line number Diff line number Diff line require([ 'dijit/form/Button' , 'app-client/task/TasksSelect' , 'dijit/form/Select' , 'dojo/dom' , 'app-client/socket/Socket' , 'app-client/tasks' , 'dojo/domReady!' ], function( Button , TasksSelect , Select , dom , Socket , Tasks ){ var socket = new Socket({ url: '/db2es/socket' }); var connectBtn = new Button({ label: 'Connect', onClick: function(){ socket.connect(); } }, 'connectBtn'); var sendBtn = new TasksSelect({ socket: socket }, 'sendBtn'); /* sendBtn.on('subscribed', function() { console.log('Subscrito'); setTimeout(function() { var listTask = ["citation-job", "animaltracking-job"]; socket.sendByTopic('/topic' + sendBtn.reqChannel, listTask); }, 500); });*/ socket.on('connected', function(url) { console.log('Conectado'); /* socket.subscribe('/topic/greeting', function(message) { console.log('Recibo gretting: ' + message); }); socket.subscribe('/topic/jobs/list', function(message) { console.log('Recibo jobs: ' + message); });*/ var tasks = new Tasks({ socket: socket }, 'tasks'); /*socket.subscribe('/topic/jobs/list', function(message) { console.log('Recibo jobs: ' + message); });*/ }); }); No newline at end of file
src/main/resources/static/app-client/socket/Socket.js 0 → 100644 +68 −0 Original line number Diff line number Diff line define([ 'dojo/_base/declare' , 'dojo/_base/lang' , 'dojo/Evented' , 'sockjs' , 'stomp' ], function( declare , lang , Evented , SockJS , Stomp ){ return declare([Evented], { _ws: null, _client: null, url: null, constructor: function(args) { this._subscribes = {}; this._isConnected = false; lang.mixin(this, args); this.on('connect', this._connect); this.on('error', this._error); }, connect: function() { this.emit(this.url ? 'connect' : 'error', this.url); }, isConnected: function() { return this._isConnected; }, subscribe: function(channel, callback) { this._subscribes[channel] = callback; this._client.subscribe(channel, function(message) { console.debug('SUBSCRIBE', channel, message); message.body = JSON.parse(message.body); callback(message); }); }, send: function(channel, message) { console.debug('SEND', channel, message); this._client.send(channel, {}, JSON.stringify(message)); }, _connect: function() { this._ws = new SockJS(this.url); this._client = window.Stomp.over(this._ws); this._client.connect({}, lang.hitch(this, this._connected)); }, _connected: function() { this._isConnected = true; this.emit('connected', this); }, _error: function(url) { console.error('ERROR'); } }); }); No newline at end of file
src/main/resources/static/app-client/socket/SocketMock.js 0 → 100644 +30 −0 Original line number Diff line number Diff line define([ 'dojo/_base/declare' , 'dojo/_base/lang' , 'app-client/socket/Socket' ], function( declare , lang , Socket ){ return declare([Socket], { subscribe: function(channel, callback) { this._subscribes[channel] = callback; }, sendByTopic: function(channel, message) { this._subscribes[channel] && this._subscribes[channel](message); }, send: function(channel, message) { console.log('Send', channel, message); }, _connect: function() { console.log('Connect'); setTimeout(lang.hitch(this, this._connected), 500); } }); }); No newline at end of file
src/main/resources/static/app-client/task/TasksSelect.js 0 → 100644 +144 −0 Original line number Diff line number Diff line define([ 'dojo/_base/declare' , 'dojo/_base/lang' , 'dojo/on' , 'dojo/Evented' , 'dojo/dom-construct' , 'dijit/_WidgetBase' , 'dijit/form/Select' , 'dijit/form/Button' ], function( declare , lang , on , Evented , domConstruct , _Widget , Select , Button ){ return declare([_Widget, Evented], { socket: null, reqChannel: '/jobs/list', url: null, jobsList: null, constructor: function(args) { this._subscriptions = {}; this.i18n = { "indexing-animalTracking-job": "Tracking de animales", "indexing-platformTracking-job": "Tracking de plataformas", "indexing-citation-job": "Citas corológicas", "indexing-timeseriesSurvey-job": "Estaciones fijas con series temporales", "indexing-timeSeries-job": "Series temporales", "indexing-attributeSeries-job": "Series de atributo de Infrastructuras", "indexing-isolines-job": "Isolíneas", "indexing-area-job": "Áreas", "indexing-objectCollectingSurvey-job": "Indexar object survey", "indexing-objectCollectingseries-job": "Serie de colección de objetos", "indexing-infrastructure-job": "Infrastructuras", "indexing-administrativeDomains-job": "Dominios de administración", "indexing-document-job": "Indexar documentos", "indexing-classificationsDomains-job": "Dominios de clasificación", "indexing-parametersDomains-job": "Dominios de parámetros", "indexing-qualityDomains-job": "Dominios de calidad de los datos", "indexing-qualifyDomains-job": "Dominios de calificación de objetos", "indexing-taxonomyDomains-job": "Dominios de taxonomía", "indexing-ancillaryDataDomains-job": "Dominios de datos auxiliares", "indexing-toponymias-job": "Toponimias", "indexing-taxonomy-job": "Taxonomía", "indexing-administrative-job": "Administración", "indexing-atlas-job": "Atlas" }; lang.mixin(this, args); }, postCreate: function() { this._createLayout(); this._startSocket(); }, _createLayout: function() { this._selectNode = domConstruct.create('span', null, this.domNode); this._btnNode = domConstruct.create('span', null, this.domNode); }, _startSocket: function(value) { if (this.socket) { this.socket.isConnected() && this._onSocketOpened(); this.socket.on('connected', lang.hitch(this, this._onSocketOpened)); } }, _onSocketOpened: function() { this.emit('socket-opened'); this._onSubscriptions(); }, _onSubscriptions: function() { this.socket.subscribe('/topic' + this.reqChannel, lang.hitch(this, this._onReceivedJobsList)); this.emit('subscribed'); this.socket.send('/app' + this.reqChannel, {}); }, _onReceivedJobsList: function(message) { this.jobsList = this._parseJobsList(message.body); this.emit('received-jobs-list', this.jobsList); this._createSelectJob(); this._createBtnRunJob(); }, _parseJobsList: function(jobsIn) { var jobs = []; for (var i = 0; i < jobsIn.length; i++) { jobs.push({ value: jobsIn[i], label: this.i18n[jobsIn[i]] }); } return jobs; }, _createSelectJob: function() { this._selectWidget = new Select({ name: 'selectJob', options: this.jobsList, style: 'width: 90%' }, this._selectNode); }, _createBtnRunJob: function() { this._btnWidget = new Button({ onClick: lang.hitch(this, this._runJob), iconClass: 'dijitIconTask', label: null }, this._btnNode); }, _runJob: function() { var jobId = this._selectWidget.get('value'); this.socket.send('/app/jobs/indexing', { jobName: jobId }); }, _sendRequest: function() { this.socket.send(this.reqChannel, {}); }, _createJobList: function() { }, _error: function(url) { console.error('ERROR'); } }); }); No newline at end of file