mirror of
https://github.com/datahub-project/datahub.git
synced 2025-07-07 09:11:47 +00:00
279 lines
8.4 KiB
JavaScript
279 lines
8.4 KiB
JavaScript
![]() |
import Ember from 'ember';
|
||
|
|
||
|
export default Ember.Component.extend({
|
||
|
totalPages: null,
|
||
|
commentsLoading: true,
|
||
|
itemsPerPage: 3,
|
||
|
page: 1,
|
||
|
count: null,
|
||
|
comments: [],
|
||
|
comment: {},
|
||
|
isEdit: false,
|
||
|
commentTypes: [
|
||
|
'Comment',
|
||
|
'Question',
|
||
|
'Description',
|
||
|
'Partition',
|
||
|
'ETL Schedule',
|
||
|
'Grain',
|
||
|
'DQ Issue'
|
||
|
],
|
||
|
getComments: function(params){
|
||
|
if (this.isDestroyed || this.isDestroying)
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
var _this = this;
|
||
|
datasetCommentsComponent = this;
|
||
|
var datasetId = this.get('dataset.model.id')
|
||
|
var url = '/api/v1/datasets/' + datasetId + '/comments'
|
||
|
params =
|
||
|
{ size: (params || {}).size || this.get('itemsPerPage')
|
||
|
, page: (params || {}).page || this.get('page')
|
||
|
}
|
||
|
url += '?' + $.param(params)
|
||
|
$.get
|
||
|
( url
|
||
|
, function(data) {
|
||
|
if (_this.isDestroyed || _this.isDestroying)
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
_this.set('totalPages', data.data.totalPages)
|
||
|
_this.set('page', data.data.page)
|
||
|
_this.set('count', data.data.count)
|
||
|
_this.set('itemsPerPage', data.data.itemsPerPage)
|
||
|
_this.set('commentsLoading', false)
|
||
|
var comments = data.data.comments
|
||
|
comments.forEach(function(cmnt){
|
||
|
cmnt.html = marked(cmnt.text).htmlSafe();
|
||
|
})
|
||
|
_this.set('comments', comments);
|
||
|
}
|
||
|
)
|
||
|
.fail(function(){
|
||
|
_this.set('comments', [])
|
||
|
_this.set('commentsLoading', false)
|
||
|
})
|
||
|
}.on('init'),
|
||
|
defaultCommentText: function(){
|
||
|
return "#We Support Markdown ([GitHub Flavored][gh])! \n##Secondary Header \n* bullet \n* bullet\n\n\n| Col 1 | Col 2 | Col 3|\n|:--|:--:|--:|\n|Left|Center|Right|\n```sql\nSELECT * FROM ABOOK_DATA WHERE modified_date > 1436830358700;\n```\n[ABOOK_DATA](/#/dataset/1/ABOOK_DATA) All links will open in a new tab\n\n[gh]: https://help.github.com/articles/github-flavored-markdown/"
|
||
|
|
||
|
},
|
||
|
setDefaultCommentText: function(){
|
||
|
this.set('comment', {type: 'Comment'});
|
||
|
this.set('comment.text', this.defaultCommentText());
|
||
|
},
|
||
|
actions: {
|
||
|
insertImageOrLink: function(param) {
|
||
|
var target = $('#datasetcomment');
|
||
|
insertImageAtCursor(target, param);
|
||
|
var text = $("#datasetComment-write > textarea").val()
|
||
|
$("#datasetComment-preview").html(marked(text))
|
||
|
},
|
||
|
insertSourcecode: function() {
|
||
|
var target = $('#datasetcomment');
|
||
|
insertSourcecodeAtCursor(target);
|
||
|
var text = $("#datasetComment-write > textarea").val()
|
||
|
$("#datasetComment-preview").html(marked(text))
|
||
|
},
|
||
|
insertList: function(param) {
|
||
|
var target = $('#datasetcomment');
|
||
|
var value = "Apple\nBananna\nOrange";
|
||
|
insertListAtCursor(target, value, param);
|
||
|
var text = $("#datasetComment-write > textarea").val()
|
||
|
$("#datasetComment-preview").html(marked(text))
|
||
|
},
|
||
|
insertElement: function(param) {
|
||
|
var target = $('#datasetcomment');
|
||
|
var value;
|
||
|
var selectedValue;
|
||
|
if( target[0].selectionStart || target[0].selectionStart == '0' ) {
|
||
|
var startPos = target[0].selectionStart;
|
||
|
var endPos = target[0].selectionEnd;
|
||
|
selectedValue = target.val().substring(startPos, endPos);
|
||
|
}
|
||
|
var insertedValue;
|
||
|
if (selectedValue)
|
||
|
{
|
||
|
insertedValue = selectedValue;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
insertedValue = param + " text";
|
||
|
}
|
||
|
switch(param)
|
||
|
{
|
||
|
case 'bold':
|
||
|
value = "**" + insertedValue + "**";
|
||
|
break;
|
||
|
case 'italic':
|
||
|
value = "*" + insertedValue + "*";
|
||
|
break;
|
||
|
case 'heading_1':
|
||
|
value = "#" + insertedValue + "#";
|
||
|
break;
|
||
|
case 'heading_2':
|
||
|
value = "##" + insertedValue + "##";
|
||
|
break;
|
||
|
case 'heading_3':
|
||
|
value = "###" + insertedValue + "###";
|
||
|
break;
|
||
|
}
|
||
|
insertAtCursor(target, value, false);
|
||
|
var text = $("#datasetComment-write > textarea").val()
|
||
|
$("#datasetComment-preview").html(marked(text))
|
||
|
},
|
||
|
importCSVTable: function(){
|
||
|
var input = $('#tsv-input');
|
||
|
var output = $('#table-output');
|
||
|
var headerCheckbox = $('#has-headers');
|
||
|
var delimiterMarker = $('#delimiter-marker');
|
||
|
var getDelimiter = function() {
|
||
|
var delim = delimiterMarker.val();
|
||
|
if( delim == 'tab' ) {
|
||
|
delim = "\t";
|
||
|
}
|
||
|
return delim;
|
||
|
};
|
||
|
|
||
|
input.keydown(function( e ) {
|
||
|
if( e.key == 'tab' ) {
|
||
|
e.stop();
|
||
|
insertAtCursor(e.target, "\t");
|
||
|
}
|
||
|
});
|
||
|
|
||
|
var renderTable = function() {
|
||
|
var value = input.val().trim();
|
||
|
var hasHeader = headerCheckbox.is(":checked");
|
||
|
var t = csvToMarkdown(value, getDelimiter(), hasHeader);
|
||
|
output.val(csvToMarkdown(value, getDelimiter(), hasHeader));
|
||
|
};
|
||
|
|
||
|
input.keyup(renderTable);
|
||
|
headerCheckbox.change(renderTable);
|
||
|
delimiterMarker.change(renderTable);
|
||
|
$('#submitConvertForm').click(function(){
|
||
|
$("#convertTableModal").modal('hide');
|
||
|
var target = $('#datasetcomment');
|
||
|
insertAtCursor(target, output.val(), true);
|
||
|
var text = $("#datasetComment-write > textarea").val();
|
||
|
$("#datasetComment-preview").html(marked(text));
|
||
|
});
|
||
|
renderTable();
|
||
|
$("#convertTableModal").modal('show');
|
||
|
},
|
||
|
remove: function(comment) {
|
||
|
var url = '/api/v1/datasets/' + comment.datasetId + '/comments/' + comment.id
|
||
|
var token = $("#csrfToken").val().replace('/', '')
|
||
|
var _this = this
|
||
|
$.ajax({
|
||
|
url: url,
|
||
|
method: 'DELETE',
|
||
|
headers: {
|
||
|
'Csrf-Token': token
|
||
|
},
|
||
|
dataType: 'json',
|
||
|
data: {
|
||
|
csrfToken: token
|
||
|
}
|
||
|
}).done(function(data, txt, xhr){
|
||
|
_this.getComments()
|
||
|
}).fail(function(xhr, txt, err){
|
||
|
console.log('Error: Could not remove comment.')
|
||
|
})
|
||
|
},
|
||
|
updatePreview: function(){
|
||
|
var text = $("#datasetComment-write > textarea").val()
|
||
|
$("#datasetComment-preview").html(marked(text))
|
||
|
},
|
||
|
update: function() {
|
||
|
var token = $("#csrfToken").val().replace('/', '')
|
||
|
var _this = this;
|
||
|
comment.datasetId = this.get('dataset.id')
|
||
|
var cmnt = {}
|
||
|
cmnt.text = comment.text
|
||
|
cmnt.type = comment.type
|
||
|
var url = '/api/v1/datasets/' + comment.datasetId + '/comments/' + comment.id
|
||
|
cmnt.csrfToken = token
|
||
|
$.ajax({
|
||
|
url: url,
|
||
|
method: 'PUT',
|
||
|
headers: {
|
||
|
'Csrf-Token': token
|
||
|
},
|
||
|
dataType: 'json',
|
||
|
data: {
|
||
|
csrfToken: token
|
||
|
}
|
||
|
}).done(function(data, txt, xhr){
|
||
|
_this.getComments()
|
||
|
}).fail(function(xhr, txt, err){
|
||
|
console.log('Error: Could not update comment.')
|
||
|
})
|
||
|
|
||
|
},
|
||
|
create: function(comment) {
|
||
|
var token = $("#csrfToken").val().replace('/', '')
|
||
|
var _this = this;
|
||
|
var cmnt = {}
|
||
|
var isEdit = this.get('isEdit')
|
||
|
cmnt.datasetId = this.get('dataset.model.id')
|
||
|
cmnt.text = comment.text
|
||
|
cmnt.type = comment.type
|
||
|
cmnt.id = comment.id
|
||
|
var url = '/api/v1/datasets/' + cmnt.datasetId + '/comments'
|
||
|
cmnt.csrfToken = token
|
||
|
console.log('comment data: ', cmnt)
|
||
|
$.ajax({
|
||
|
url: url,
|
||
|
method: 'POST',
|
||
|
headers: {
|
||
|
'Csrf-Token': token
|
||
|
},
|
||
|
dataType: 'json',
|
||
|
data: cmnt
|
||
|
}).done(function(data, txt, xhr){
|
||
|
_this.getComments()
|
||
|
_this.send('hideModal')
|
||
|
}).fail(function(xhr, txt, err){
|
||
|
console.log('Error: Could not create comment.')
|
||
|
})
|
||
|
},
|
||
|
showModal: function(comment) {
|
||
|
if(comment) {
|
||
|
this.set('comment', comment)
|
||
|
this.set('isEdit', true)
|
||
|
this.set('isEdit', false)
|
||
|
} else {
|
||
|
//this.set('comment', {type: 'Comment'})
|
||
|
this.setDefaultCommentText();
|
||
|
$("#datasetComment-preview").html(marked(this.defaultCommentText()));
|
||
|
}
|
||
|
$("#datasetCommentModal").modal('show')
|
||
|
},
|
||
|
hideModal: function(){
|
||
|
this.set('isEdit', false)
|
||
|
this.set('comment', {})
|
||
|
$("#datasetCommentModal").modal('hide')
|
||
|
},
|
||
|
pageForward: function() {
|
||
|
var totalPages = this.get('totalPages');
|
||
|
var currentPage = this.get('page');
|
||
|
if (currentPage < totalPages)
|
||
|
{
|
||
|
this.getComments({page: this.get('page') + 1});
|
||
|
}
|
||
|
|
||
|
},
|
||
|
pageBack: function() {
|
||
|
var currentPage = this.get('page');
|
||
|
if (currentPage > 1)
|
||
|
{
|
||
|
this.getComments({page: this.get('page') - 1});
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
});
|