Skip to content

Commit

Permalink
Fixes fossasia#160: adding support to generate documentation from mul…
Browse files Browse the repository at this point in the history
…tiple repository in WEBUI
  • Loading branch information
poonai committed Jun 29, 2017
1 parent 1838f53 commit f807ff5
Show file tree
Hide file tree
Showing 7 changed files with 77 additions and 22 deletions.
7 changes: 6 additions & 1 deletion backend/generator.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ exports.executeScript = function (socket, formData) {
var debug = formData.debug;
var uniqueId = uuidV4();
var webUI = "true";
var subProject = ""
if (formData.subProject != undefined) {
subProject = formData.subProject.join(",")
}

var donePercent = 0;

Expand All @@ -25,7 +29,8 @@ exports.executeScript = function (socket, formData) {
"-m", email,
"-d", debug,
"-u", uniqueId,
"-w", webUI
"-w", webUI,
"-s", subProject
];

var process = spawn("./generate.sh", args);
Expand Down
1 change: 1 addition & 0 deletions multiple_generate.sh
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ if [ "${WEBUI:-false}" == "true" ]; then
cd ..
mv ${UNIQUEID} ${UNIQUEID}_preview
zip -r -q ${UNIQUEID}.zip ${UNIQUEID}_preview
exit 0
else
source <(curl -s https://raw.githubusercontent.com/fossasia/yaydoc/master/publish_docs.sh)
fi
23 changes: 22 additions & 1 deletion public/scripts/form.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ $(function () {
if (validation.isValid(formData)) {
socket.emit('execute', formData);
$(this).attr("disabled", "none");
$("#subProject").attr("disabled", "none");
} else {
$('.notification').append($('<li>')).text(validation.getMessages());
$('#notification-container').css("visibility", "visible");
Expand All @@ -29,14 +30,20 @@ $(function () {

socket.on('logs', function (data) {
$('#messages').append($('<li class="info">').text(data.data));
$("#progress").css("width", data.donePercent + "%");
if (data.donePercent >= 100) {
$("#progress").css("width", "90%");
} else {
$("#progress").css("width", data.donePercent + "%");
}

});

socket.on('err-logs', function (msg) {
$('#messages').append($('<li class="error">').text(msg));
});

socket.on('success', function (data) {
$("#progress").css("width", "100%");
$('#btnDownload').css("display", "inline");
$('#btnDownload').attr("href", "/download/" + data.email +"/" + data.uniqueId);
$('#btnPreview').css("display", "inline");
Expand Down Expand Up @@ -90,7 +97,21 @@ function getData() {
if (field.name === "debug" ) { data.debug = field.value; }
if (field.name === "heroku_api_key" ) { data.herokuAPIKey = field.value.trim(); }
if (field.name === "heroku_app_name" ) { data.herokuAppName = field.value.trim(); }
if (field.name === "subproject_url[]") {
if (data.subProject == undefined) {
data.subProject = [field.value];
} else {
data.subProject.push(field.value);
}
}
});

return data;
}

var tempSubProjectId = 1
function addSubProject() {
$("#subproject").append(`<select id="subproject_${tempSubProjectId}" placeholder="Enter URL for Sub Project" name="subproject_url[]" class="form-control subproject" type="text"></select>`)
addSuggestion(`#subproject_${tempSubProjectId}`)
tempSubProjectId += 1;
}
48 changes: 28 additions & 20 deletions public/scripts/suggestion.js
Original file line number Diff line number Diff line change
@@ -1,22 +1,30 @@
var insertedItem = [];
$( document ).ready(function() {
var insertedItem = [];
$('#git_url').editableSelect();
$('#git_url').keyup(() => {
var q = $('#git_url').val()
if (q.length > 3) {
$.get(`https://api.github.com/search/repositories?q=${q}+fork%3Atrue`,
(result) => {
if (result.items != undefined) {
for (var i = 0; i < result.items.length; i++) {
if (insertedItem.indexOf(result.items[i].clone_url) < 0) {
insertedItem.push(result.items[i].clone_url);
$('#git_url').editableSelect('add', result.items[i].clone_url);
}
}
}
})
} else if (q.length == 0) {
$('#git_url').editableSelect('hide')
}
});
addSuggestion('#git_url')
})

function addSuggestion(selector) {
$(selector).editableSelect();
insertedItem.forEach((x) => {
$(selector).editableSelect('add', x);
})
$(selector).keyup(() => {
console.log(`hi iam ${selector}`);
var q = $(selector).val()
if (q.length > 3) {
$.get(`https://api.github.com/search/repositories?q=${q}+fork%3Atrue`,
(result) => {
if (result.items != undefined) {
for (var i = 0; i < result.items.length; i++) {
if (insertedItem.indexOf(result.items[i].clone_url) < 0) {
insertedItem.push(result.items[i].clone_url);
$(selector).editableSelect('add', result.items[i].clone_url);
}
}
}
})
} else if (q.length == 0) {
$(selector).editableSelect('hselectore')
}
});
}
9 changes: 9 additions & 0 deletions public/scripts/validation.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,15 @@
}
}

if (formData.subProject != undefined) {
for (var i = 0; i < formData.subProject.length; i++) {
regex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/;
if(!regex.test(formData.subProject[i])) {
messages.push("Invalid URL");
valid = false;
}
}
}
return valid;
},

Expand Down
9 changes: 9 additions & 0 deletions public/stylesheets/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ a {
text-align: left;
}

.subproject {
margin-bottom: 8px;
}

#messages li {
margin-bottom: 5px;
}
Expand All @@ -38,6 +42,11 @@ a {
margin-bottom: 20px;
}

#subProject {
margin-bottom: 20px;
margin-left: 10px;
}

#btnDownload {
display: none;
width: -moz-fit-content;
Expand Down
2 changes: 2 additions & 0 deletions views/index.jade
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ block content
.form-group
label.control-label(for='git_url') GITURL:
select#git_url.form-control(type='text', placeholder='Enter URL of Github Repository', name='git_url')
.div#subproject
.form-group
label.control-label(for='doc_theme') Doc Theme:
select#doc_theme.form-control(name='doc_theme')
Expand All @@ -42,6 +43,7 @@ block content
input#debug(type='checkbox', value='true', name='debug', checked=false)
.form-group#buttons
button.btn.btn-default(type='button' id='btnGenerate') Generate Docs
button.btn.btn-default(type='button' id='subProject' onclick="addSubProject()") Add Sub Project
.row(style='padding-bottom: 25px;')
a.btn.btn-default(id='btnDownload') Download
a.btn.btn-default(id='btnPreview' target='_blank') Preview
Expand Down

0 comments on commit f807ff5

Please sign in to comment.