123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- /**
- * BCFService.js
- *
- * @author realor
- */
- import { Service } from './Service.js'
- import { ServiceManager } from './ServiceManager.js'
- import { WebUtils } from '../utils/WebUtils.js'
- class BCFService extends Service {
- constructor(name, description = null, url = null, username = null, password = null) {
- super(name, description, url, username, password)
- }
- getProjects(onCompleted, onError) {
- this.invoke('GET', 'projects', null, onCompleted, onError)
- }
- getProject(projectId, onCompleted, onError) {
- this.invoke('GET', 'projects/' + projectId, null, onCompleted, onError)
- }
- updateProject(projectId, project, onCompleted, onError) {
- this.invoke('PUT', 'projects/' + projectId, project, onCompleted, onError)
- }
- getExtensions(projectId, onCompleted, onError) {
- this.invoke('GET', 'projects/' + projectId + '/extensions', null, onCompleted, onError)
- }
- updateExtensions(projectId, extensions, onCompleted, onError) {
- this.invoke('PUT', 'projects/' + projectId + '/extensions', extensions, onCompleted, onError)
- }
- getTopics(projectId, filter, onCompleted, onError) {
- let status = filter.status
- let priority = filter.priority
- let assignedTo = filter.assignedTo
- let filters = []
- if (status) {
- filters.push("topic_status eq '" + status + "'")
- }
- if (priority) {
- filters.push("priority eq '" + priority + "'")
- }
- if (assignedTo) {
- filters.push("assigned_to eq '" + assignedTo + "'")
- }
- let filterText = filters.length > 0 ? filters.join(' and ') : ''
- let orderBy = 'creation_date,index'
- let query = ''
- if (filterText.length > 0 || orderBy.length > 0) {
- query = '?'
- if (filterText) {
- query += '$filter=' + filterText
- if (orderBy) query += '&'
- }
- if (orderBy) query += '$orderBy=' + orderBy
- }
- this.invoke('GET', 'projects/' + projectId + '/topics' + query, null, onCompleted, onError)
- }
- getTopic(projectId, topicGuid, onCompleted, onError) {
- this.invoke('GET', 'projects/' + projectId + '/topics/' + topicGuid, null, onCompleted, onError)
- }
- createTopic(projectId, topic, onCompleted, onError) {
- this.invoke('POST', 'projects/' + projectId + '/topics', topic, onCompleted, onError)
- }
- updateTopic(projectId, topicGuid, topic, onCompleted, onError) {
- this.invoke('PUT', 'projects/' + projectId + '/topics/' + topicGuid, topic, onCompleted, onError)
- }
- deleteTopic(projectId, topicGuid, onCompleted, onError) {
- this.invoke('DELETE', 'projects/' + projectId + '/topics/' + topicGuid, null, onCompleted, onError)
- }
- getViewpoints(projectId, topicGuid, onCompleted, onError) {
- this.invoke('GET', 'projects/' + projectId + '/topics/' + topicGuid + '/viewpoints', null, onCompleted, onError)
- }
- getViewpoint(projectId, topicGuid, viewpointGuid, onCompleted, onError) {
- this.invoke('GET', 'projects/' + projectId + '/topics/' + topicGuid + '/viewpoints/' + viewpointGuid, null, onCompleted, onError)
- }
- createViewpoint(projectId, topicGuid, viewpoint, onCompleted, onError) {
- this.invoke('POST', 'projects/' + projectId + '/topics/' + topicGuid + '/viewpoints', viewpoint, onCompleted, onError)
- }
- deleteViewpoint(projectId, topicGuid, viewpointGuid, onCompleted, onError) {
- this.invoke('DELETE', 'projects/' + projectId + '/topics/' + topicGuid + '/viewpoints/' + viewpointGuid, null, onCompleted, onError)
- }
- getComments(projectId, topicGuid, onCompleted, onError) {
- this.invoke('GET', 'projects/' + projectId + '/topics/' + topicGuid + '/comments', null, onCompleted, onError)
- }
- getComment(projectId, topicGuid, commentGuid, onCompleted, onError) {
- this.invoke('GET', 'projects/' + projectId + '/topics/' + topicGuid + '/comments/' + commentGuid, null, onCompleted, onError)
- }
- createComment(projectId, topicGuid, comment, onCompleted, onError) {
- this.invoke('POST', 'projects/' + projectId + '/topics/' + topicGuid + '/comments', comment, onCompleted, onError)
- }
- updateComment(projectId, topicGuid, commentGuid, comment, onCompleted, onError) {
- this.invoke('PUT', 'projects/' + projectId + '/topics/' + topicGuid + '/comments/' + commentGuid, comment, onCompleted, onError)
- }
- deleteComment(projectId, topicGuid, commentGuid, onCompleted, onError) {
- this.invoke('DELETE', 'projects/' + projectId + '/topics/' + topicGuid + '/comments/' + commentGuid, null, onCompleted, onError)
- }
- getDocumentReferences(projectId, topicGuid, onCompleted, onError) {
- this.invoke('GET', 'projects/' + projectId + '/topics/' + topicGuid + '/document_references', null, onCompleted, onError)
- }
- createDocumentReference(projectId, topicGuid, docRef, onCompleted, onError) {
- this.invoke('POST', 'projects/' + projectId + '/topics/' + topicGuid + '/document_references', docRef, onCompleted, onError)
- }
- updateDocumentReference(projectId, topicGuid, docRefGuid, docRef, onCompleted, onError) {
- this.invoke('PUT', 'projects/' + projectId + '/topics/' + topicGuid + '/document_references/' + docRefGuid, docRef, onCompleted, onError)
- }
- deleteDocumentReference(projectId, topicGuid, docRefGuid, onCompleted, onError) {
- this.invoke('DELETE', 'projects/' + projectId + '/topics/' + topicGuid + '/document_references/' + docRefGuid, null, onCompleted, onError)
- }
- invoke(method, path, data, onCompleted, onError) {
- const request = new XMLHttpRequest()
- if (onError) {
- request.onerror = error => {
- onError({ code: 0, message: 'Connection error' })
- }
- }
- if (onCompleted)
- request.onload = () => {
- if (request.status === 200) {
- if (request.response) {
- try {
- onCompleted(JSON.parse(request.responseText))
- } catch (ex) {
- if (onError) onError({ code: 0, message: ex })
- }
- } else {
- onCompleted()
- }
- } else {
- let error
- try {
- error = JSON.parse(request.responseText)
- } catch (ex) {
- error = { code: request.status, message: 'Error ' + request.status }
- }
- if (onError) onError(error)
- }
- }
- request.open(method, this.url + '/bcf/2.1/' + path)
- request.setRequestHeader('Content-Type', 'application/json')
- WebUtils.setBasicAuthorization(request, this.username, this.password)
- if (data) {
- request.send(JSON.stringify(data))
- } else {
- request.send()
- }
- }
- }
- ServiceManager.addClass(BCFService)
- export { BCFService }
|