From 240371d1b754ed66479e9f59cf8750a049b80765 Mon Sep 17 00:00:00 2001 From: mohiit1502 Date: Fri, 11 Jan 2019 03:03:44 +0530 Subject: [PATCH] Clean up --- src/js/app-event-triggers.js | 6 +- src/js/services/dom-ops.js | 864 +++++++++++++++--------------- src/js/services/persistent-ops.js | 28 +- 3 files changed, 457 insertions(+), 441 deletions(-) diff --git a/src/js/app-event-triggers.js b/src/js/app-event-triggers.js index b6f5169..09242fb 100644 --- a/src/js/app-event-triggers.js +++ b/src/js/app-event-triggers.js @@ -6,6 +6,8 @@ import * as microbotOps from './services/microbot-ops'; import { Helper } from './helpers/helper'; +import { store } from "./services/persistent-ops.js"; + const recastclient = new recastOps.Recast(); const dom = new domManipulator.DomManipulator(); const app = new microbotOps.Microbot(); @@ -71,7 +73,9 @@ $(document).ready(() => { const intent = $(`#${$config.constants.hiddenIntentFieldId}`).val(); if (intent) { data.intent = intent; - // store.dispatch($) + var action = $config.intentSlugToOperations[intent].action; + action.payload = data; + store.dispatch(action); const operation = $config.intentSlugToOperations[intent].githubOperation; app[operation](data); } diff --git a/src/js/services/dom-ops.js b/src/js/services/dom-ops.js index 45c009c..d195017 100644 --- a/src/js/services/dom-ops.js +++ b/src/js/services/dom-ops.js @@ -6,7 +6,7 @@ import { createissue } from "../views/createissue.js"; import { createrepo } from "../views/createrepo.js"; import { displaylastcomment } from "../views/displaylastcomment.js"; import { viewrepos } from "../views/viewrepos.js"; -import { PersistentOps } from "./persistent-ops.js"; +// import { PersistentOps } from "./persistent-ops.js"; import { store } from "./persistent-ops.js"; const $config = require("../config.js"); @@ -14,490 +14,500 @@ const $config = require("../config.js"); const helper = new helperOps.Helper(); export class DomManipulator { - constructor() { - this.createRepoWidgetCreated = false; - this.commandCardCounter = 1; - this.map = { - addcollab, - addissuecomment, - closeissue, - createissue, - createrepo, - displaylastcomment, - viewrepos, - }; - } + constructor() { + this.createRepoWidgetCreated = false; + this.commandCardCounter = 1; + this.map = { + addcollab, + addissuecomment, + closeissue, + createissue, + createrepo, + displaylastcomment, + viewrepos, + }; + } - showWidget(intent) { - let widget = document.getElementById(intent); - if (widget) { - if (!this.isVisible(widget)) { - widget.classList.remove("hide"); - $("#underWidgetLine").removeClass("hide"); - } - } else { - const template = document.createElement("template"); - template.innerHTML = this.map[intent]; - widget = template.content.firstChild; - if (!this.isVisible(widget)) { - widget.classList.remove("hide"); - $("#underWidgetLine").removeClass("hide"); - } - widgets.prepend(template.content.firstElementChild); - } + showWidget(intent) { + let widget = document.getElementById(intent); + if (!widget) { + widget = this.getWidget(intent); + widgets.prepend(widget); } - - displayIntentBox(intent) { - const intentBox = document.getElementById("intentBox"); - if (!this.isVisible(intentBox)) { - intentBox.classList.remove("hide"); - } - $("#intentName").text(`${$config.intentSlugToOperations[intent].intentMessage} [slug: ${intent}].`); + if (!this.isVisible(widget)) { + widget.classList.remove("hide"); + $("#underWidgetLine").removeClass("hide"); } + } - showEmptyCommandMessage(message) { - $("#randomModal").text(message); - $("#emptyCommandMsgDisplayer").click(); + getWidget(intent) { + const template = document.createElement("template"); + template.innerHTML = this.map[intent]; + let widget = template.content.firstChild; + return widget; + } + + displayIntentBox(intent) { + const intentBox = document.getElementById("intentBox"); + if (!this.isVisible(intentBox)) { + intentBox.classList.remove("hide"); } + $("#intentName").text(`${$config.intentSlugToOperations[intent].intentMessage} [slug: ${intent}].`); + } - populateRecastData(widgetName, recastResponse) { + showEmptyCommandMessage(message) { + $("#randomModal").text(message); + $("#emptyCommandMsgDisplayer").click(); + } + + populateRecastData(widgetName, recastResponse) { // var requestMethod = $config.intentSlugToOperations[widgetName]['requestMethod']; - const operation = $config.intentSlugToOperations[widgetName].populateDataOperation; - if (typeof this[operation] === "function") { - this[operation](recastResponse); - } + const operation = $config.intentSlugToOperations[widgetName].populateDataOperation; + if (typeof this[operation] === "function") { + this[operation](recastResponse); } + } - populateCreateRepoData(recastResponse) { - const repoNameTextField = document.getElementById("repositoryName"); - if (repoNameTextField && recastResponse && recastResponse.entities["git-repository"] && recastResponse.entities["git-repository"].length > 0 + populateCreateRepoData(recastResponse) { + const repoNameTextField = document.getElementById("repositoryName"); + if (repoNameTextField && recastResponse && recastResponse.entities["git-repository"] && recastResponse.entities["git-repository"].length > 0 && recastResponse.entities["git-repository"]["0"].value) { - const repoName = recastResponse.entities["git-repository"]["0"].value; - repoNameTextField.value = repoName; - } + const repoName = recastResponse.entities["git-repository"]["0"].value; + repoNameTextField.value = repoName; } + } - populateCreateIssueData(recastResponse) { - const issueTitleTextField = document.getElementById("issueTitle"); - const issueRepositoryTextField = document.getElementById("issueRepository"); - if (issueTitleTextField && recastResponse && recastResponse.entities.issue_title && recastResponse.entities.issue_title.length > 0 + populateCreateIssueData(recastResponse) { + const issueTitleTextField = document.getElementById("issueTitle"); + const issueRepositoryTextField = document.getElementById("issueRepository"); + if (issueTitleTextField && recastResponse && recastResponse.entities.issue_title && recastResponse.entities.issue_title.length > 0 && recastResponse.entities.issue_title["0"].value) { - const issueTitle = recastResponse.entities.issue_title["0"].value; - issueTitleTextField.value = issueTitle; - } - if (issueRepositoryTextField && recastResponse && recastResponse.entities["git-repository"] && recastResponse.entities["git-repository"].length > 0 - && recastResponse.entities["git-repository"]["0"].value) { - const repoName = recastResponse.entities["git-repository"]["0"].value; - issueRepositoryTextField.value = repoName; - } + const issueTitle = recastResponse.entities.issue_title["0"].value; + issueTitleTextField.value = issueTitle; } + if (issueRepositoryTextField && recastResponse && recastResponse.entities["git-repository"] && recastResponse.entities["git-repository"].length > 0 + && recastResponse.entities["git-repository"]["0"].value) { + const repoName = recastResponse.entities["git-repository"]["0"].value; + issueRepositoryTextField.value = repoName; + } + } - populateCloseIssueData(recastResponse) { - const issueNumberTextField = document.getElementById("issueNumerToClose"); - const issueRepositoryTextField = document.getElementById("repoForIssueClose"); - if (issueNumberTextField && recastResponse && recastResponse.entities.issue_id && recastResponse.entities.issue_id.length > 0 + populateCloseIssueData(recastResponse) { + const issueNumberTextField = document.getElementById("issueNumerToClose"); + const issueRepositoryTextField = document.getElementById("repoForIssueClose"); + if (issueNumberTextField && recastResponse && recastResponse.entities.issue_id && recastResponse.entities.issue_id.length > 0 && recastResponse.entities.issue_id["0"].value) { - const issueNumber = recastResponse.entities.issue_id["0"].value; - issueNumberTextField.value = issueNumber; - } - if (issueRepositoryTextField && recastResponse && recastResponse.entities["git-repository"] && recastResponse.entities["git-repository"].length > 0 - && recastResponse.entities["git-repository"]["0"].value) { - const repoName = recastResponse.entities["git-repository"]["0"].value; - issueRepositoryTextField.value = repoName; - } + const issueNumber = recastResponse.entities.issue_id["0"].value; + issueNumberTextField.value = issueNumber; } + if (issueRepositoryTextField && recastResponse && recastResponse.entities["git-repository"] && recastResponse.entities["git-repository"].length > 0 + && recastResponse.entities["git-repository"]["0"].value) { + const repoName = recastResponse.entities["git-repository"]["0"].value; + issueRepositoryTextField.value = repoName; + } + } - populateAddCollaboratorData(recastResponse) { - const collaboratorNameTextField = document.getElementById("collaboratorName"); - const repoForCollabTextField = document.getElementById("repoForCollab"); - if (collaboratorNameTextField && recastResponse && recastResponse.entities.git_collaborator && recastResponse.entities.git_collaborator.length > 0 + populateAddCollaboratorData(recastResponse) { + const collaboratorNameTextField = document.getElementById("collaboratorName"); + const repoForCollabTextField = document.getElementById("repoForCollab"); + if (collaboratorNameTextField && recastResponse && recastResponse.entities.git_collaborator && recastResponse.entities.git_collaborator.length > 0 && recastResponse.entities.git_collaborator["0"].value) { - const collaboratorName = recastResponse.entities.git_collaborator["0"].value; - collaboratorNameTextField.value = collaboratorName; - } - if (repoForCollabTextField && recastResponse && recastResponse.entities["git-repository"] && recastResponse.entities["git-repository"].length > 0 - && recastResponse.entities["git-repository"]["0"].value) { - const repoName = recastResponse.entities["git-repository"]["0"].value; - repoForCollabTextField.value = repoName; - } + const collaboratorName = recastResponse.entities.git_collaborator["0"].value; + collaboratorNameTextField.value = collaboratorName; } - - populateAddCommentData(recastResponse) { - const repoForIssueCommentTextField = document.getElementById("repoForIssueComment"); - const issueNumberTextField = document.getElementById("issueNumber"); - const issueCommentTextArea = document.getElementById("issueComment"); - if (repoForIssueCommentTextField && recastResponse && recastResponse.entities["git-repository"] && recastResponse.entities["git-repository"].length > 0 + if (repoForCollabTextField && recastResponse && recastResponse.entities["git-repository"] && recastResponse.entities["git-repository"].length > 0 && recastResponse.entities["git-repository"]["0"].value) { - const repoForIssueComment = recastResponse.entities["git-repository"]["0"].value; - repoForIssueCommentTextField.value = repoForIssueComment; - } - if (issueNumberTextField && recastResponse && recastResponse.entities.issue_id && recastResponse.entities.issue_id.length > 0 + const repoName = recastResponse.entities["git-repository"]["0"].value; + repoForCollabTextField.value = repoName; + } + } + + populateAddCommentData(recastResponse) { + const repoForIssueCommentTextField = document.getElementById("repoForIssueComment"); + const issueNumberTextField = document.getElementById("issueNumber"); + const issueCommentTextArea = document.getElementById("issueComment"); + if (repoForIssueCommentTextField && recastResponse && recastResponse.entities["git-repository"] && recastResponse.entities["git-repository"].length > 0 + && recastResponse.entities["git-repository"]["0"].value) { + const repoForIssueComment = recastResponse.entities["git-repository"]["0"].value; + repoForIssueCommentTextField.value = repoForIssueComment; + } + if (issueNumberTextField && recastResponse && recastResponse.entities.issue_id && recastResponse.entities.issue_id.length > 0 && recastResponse.entities.issue_id["0"].value) { - const issueNumber = recastResponse.entities.issue_id["0"].value; - issueNumberTextField.value = issueNumber; - } - if (issueCommentTextArea && recastResponse && recastResponse.entities.issue_comment && recastResponse.entities.issue_comment.length > 0 + const issueNumber = recastResponse.entities.issue_id["0"].value; + issueNumberTextField.value = issueNumber; + } + if (issueCommentTextArea && recastResponse && recastResponse.entities.issue_comment && recastResponse.entities.issue_comment.length > 0 && recastResponse.entities.issue_comment["0"].value) { - const issueComment = recastResponse.entities.issue_comment["0"].value; - issueCommentTextArea.value = issueComment; - } + const issueComment = recastResponse.entities.issue_comment["0"].value; + issueCommentTextArea.value = issueComment; } + } - populateDisplayCommentData(recastResponse) { - const issueNumberTextField = document.getElementById("issueNumberForCommentView"); - const issueRepositoryTextField = document.getElementById("repoForCommentView"); - if (issueNumberTextField && recastResponse && recastResponse.entities.issue_id && recastResponse.entities.issue_id.length > 0 + populateDisplayCommentData(recastResponse) { + const issueNumberTextField = document.getElementById("issueNumberForCommentView"); + const issueRepositoryTextField = document.getElementById("repoForCommentView"); + if (issueNumberTextField && recastResponse && recastResponse.entities.issue_id && recastResponse.entities.issue_id.length > 0 && recastResponse.entities.issue_id["0"].value) { - const issueNumber = recastResponse.entities.issue_id["0"].value; - issueNumberTextField.value = issueNumber; - } - if (issueRepositoryTextField && recastResponse && recastResponse.entities["git-repository"] && recastResponse.entities["git-repository"].length > 0 + const issueNumber = recastResponse.entities.issue_id["0"].value; + issueNumberTextField.value = issueNumber; + } + if (issueRepositoryTextField && recastResponse && recastResponse.entities["git-repository"] && recastResponse.entities["git-repository"].length > 0 && recastResponse.entities["git-repository"]["0"].value) { - const repoName = recastResponse.entities["git-repository"]["0"].value; - issueRepositoryTextField.value = repoName; - } + const repoName = recastResponse.entities["git-repository"]["0"].value; + issueRepositoryTextField.value = repoName; } + } - isVisible(element) { - return element ? !element.classList.contains("hide") : false; + isVisible(element) { + return element ? !element.classList.contains("hide") : false; + } + + getDataFromFormAsJSON() { + let data = {}; + const intent = $(`#${$config.constants.hiddenIntentFieldId}`).val(); + const requestMethod = $config.intentSlugToOperations[intent].requestMethod; + if (intent) { + const operation = $config.intentSlugToOperations[intent].getDataOperation; + if (typeof this[operation] === "function") { + data = this[operation](); + } } + return data; + } - getDataFromFormAsJSON() { - let data = {}; - const intent = $(`#${$config.constants.hiddenIntentFieldId}`).val(); - const requestMethod = $config.intentSlugToOperations[intent].requestMethod; - if (intent) { - const operation = $config.intentSlugToOperations[intent].getDataOperation; - if (typeof this[operation] === "function") { - data = this[operation](); - } - } - return data; + getCreateRepoJson() { + const data = {}; + const request = {}; + if (this.isVisible(document.getElementById("createrepo"))) { + request.name = document.getElementById("repositoryName").value; + request.description = document.getElementById("description").value; + request.homepage = document.getElementById("homePageURL").value; + request.private = document.getElementById("privateRepoChk").checked; + request.has_issues = document.getElementById("issuesChk").checked; + request.has_wiki = document.getElementById("wikiChk").checked; } + data.request = request; + return data; + } - getCreateRepoJson() { - const data = {}; - const request = {}; - if (this.isVisible(document.getElementById("createrepo"))) { - request.name = document.getElementById("repositoryName").value; - request.description = document.getElementById("description").value; - request.homepage = document.getElementById("homePageURL").value; - request.private = document.getElementById("privateRepoChk").checked; - request.has_issues = document.getElementById("issuesChk").checked; - request.has_wiki = document.getElementById("wikiChk").checked; - } - data.request = request; - return data; + getCreateIssueJson() { + const data = {}; + data.urlParams = {}; + const request = {}; + if (this.isVisible(document.getElementById("createissue"))) { + request.title = document.getElementById("issueTitle").value; + request.body = document.getElementById("description").value; + request.assignees = document.getElementById("assignees").value ? document.getElementById("assignees").value.split(",") : []; + request.labels = document.getElementById("labels").value ? document.getElementById("labels").value.split(",") : []; + data.urlParams.repoName = document.getElementById("issueRepository").value; } + data.request = request; + return data; + } - getCreateIssueJson() { - const data = {}; - data.urlParams = {}; - const request = {}; - if (this.isVisible(document.getElementById("createissue"))) { - request.title = document.getElementById("issueTitle").value; - request.body = document.getElementById("description").value; - request.assignees = document.getElementById("assignees").value ? document.getElementById("assignees").value.split(",") : []; - request.labels = document.getElementById("labels").value ? document.getElementById("labels").value.split(",") : []; - data.urlParams.repoName = document.getElementById("issueRepository").value; - } - data.request = request; - return data; + getCloseIssueJson() { + const data = {}; + data.urlParams = {}; + if (this.isVisible(document.getElementById("closeissue"))) { + data.urlParams.issueId = document.getElementById("issueNumerToClose").value; + data.urlParams.repoName = document.getElementById("repoForIssueClose").value; } + return data; + } - getCloseIssueJson() { - const data = {}; - data.urlParams = {}; - if (this.isVisible(document.getElementById("closeissue"))) { - data.urlParams.issueId = document.getElementById("issueNumerToClose").value; - data.urlParams.repoName = document.getElementById("repoForIssueClose").value; - } - return data; + getAddCollaboratorJson() { + const data = {}; + data.urlParams = {}; + if (this.isVisible(document.getElementById("addcollab"))) { + data.urlParams.collaborator = document.getElementById("collaboratorName").value; + data.urlParams.repoName = document.getElementById("repoForCollab").value; } + return data; + } - getAddCollaboratorJson() { - const data = {}; - data.urlParams = {}; - if (this.isVisible(document.getElementById("addcollab"))) { - data.urlParams.collaborator = document.getElementById("collaboratorName").value; - data.urlParams.repoName = document.getElementById("repoForCollab").value; - } - return data; + getAddCommentJson() { + const data = {}; + data.urlParams = {}; + const request = {}; + if (this.isVisible(document.getElementById("addissuecomment"))) { + request.body = document.getElementById("issueComment").value; + data.urlParams.issueId = document.getElementById("issueNumber").value; + data.urlParams.repoName = document.getElementById("repoForIssueComment").value; } + data.request = request; + return data; + } - getAddCommentJson() { - const data = {}; - data.urlParams = {}; - const request = {}; - if (this.isVisible(document.getElementById("addissuecomment"))) { - request.body = document.getElementById("issueComment").value; - data.urlParams.issueId = document.getElementById("issueNumber").value; - data.urlParams.repoName = document.getElementById("repoForIssueComment").value; - } - data.request = request; - return data; + getDisplayCommentJson() { + const data = {}; + data.urlParams = {}; + if (this.isVisible(document.getElementById("displaylastcomment"))) { + data.urlParams.issueId = document.getElementById("issueNumberForCommentView").value; + data.urlParams.repoName = document.getElementById("repoForCommentView").value; } + return data; + } - getDisplayCommentJson() { - const data = {}; - data.urlParams = {}; - if (this.isVisible(document.getElementById("displaylastcomment"))) { - data.urlParams.issueId = document.getElementById("issueNumberForCommentView").value; - data.urlParams.repoName = document.getElementById("repoForCommentView").value; - } - return data; + addGitOperationHistory(data) { + const intent = data.intent; + let requestMethod = ""; + if (intent) { + requestMethod = $config.intentSlugToOperations[intent].requestMethod; } - - addGitOperationHistory(data) { - const intent = data.intent; - let requestMethod = ""; - if (intent) { - requestMethod = $config.intentSlugToOperations[intent].requestMethod; - } - const conversations = document.getElementById("conversations"); - let table; - let comment; - // Create Elements - const card = document.createElement("div"); - const cardBody = document.createElement("div"); - const cardTitle = document.createElement("h5"); - const closeAnchor = document.createElement("a"); - const closeHeader = document.createElement("h6"); - const cardText = document.createElement("p"); - const cardFooter = document.createElement("div"); - const textMuted = document.createElement("small"); - const underCardLine = document.createElement("div"); - - - // Add Attributes - card.classList.add("card"); - cardBody.classList.add("card-body"); - cardTitle.classList.add("card-title"); - closeAnchor.classList.add("close"); - // closeAnchor.setAttribute('href', '#'); - cardText.classList.add("card-text"); - cardFooter.classList.add("card-footer"); - textMuted.classList.add("text-muted"); - underCardLine.classList.add("line"); - - // Add content - closeHeader.innerHTML = "x"; - - const x = this.display_ct(0, textMuted); - if (data.type === "command") { - // Add content - cardTitle.innerHTML = "You Said"; - cardText.innerHTML = data.command; - card.classList.add("light-red"); - const repeat = document.createElement("a"); - repeat.classList.add("btn", "btn-info", "float-right"); - repeat.setAttribute("role", "button"); - repeat.setAttribute("href", "#"); - repeat.setAttribute("id", `btnRepeatCommand${data.insertionCounter}`); - repeat.innerHTML = "Repeat"; - cardText.appendChild(repeat); - } else if (data.type === "response") { - // Add content - cardTitle.innerHTML = "Server Responded As.."; - if (requestMethod == "post") { - cardText.innerHTML = `${$config.intentSlugToOperations[intent].cardMsg}${this.getVariable(data, $config.intentSlugToOperations[intent].cardDataName)}`; - } else if (requestMethod == "get") { - cardText.innerHTML = $config.intentSlugToOperations[intent].cardMsg; - if (data && data.length && data.length > 0) { - if (intent === "viewrepos") { - table = this.createRepoTable(data); - } else if (intent === "displaylastcomment") { - comment = this.createCommentBody(data); - } - } - } else if (requestMethod == "purge") { - cardTitle.innerHTML = "Operation Completed!"; - cardText.innerHTML = data.command; - } - } else { - cardTitle.innerHTML = "Server Responded As.."; - cardText.innerHTML = `Operation failed with status: ${data.status}`; - } - - // Associations - closeAnchor.appendChild(closeHeader); - cardTitle.appendChild(closeAnchor); - cardBody.appendChild(cardTitle); - cardBody.appendChild(cardText); - if (comment) { cardBody.appendChild(comment); } - cardFooter.appendChild(textMuted); - card.appendChild(cardBody); - if (table) { card.appendChild(table); } - card.appendChild(cardFooter); - - conversations.insertBefore(underCardLine, conversations.firstChild); - conversations.insertBefore(card, conversations.firstChild); - } - - getVariable(data, commaSeparatedValue) { - const arr = commaSeparatedValue.split(","); - for (let i = 0; i < arr.length; i++) { - data = data[arr[i]]; - } - return data; - } - - // Create table of repositories ================================================================================================== - createRepoTable(data) { + const conversations = document.getElementById("conversations"); + let table; + let comment; // Create Elements - const table = document.createElement("table"); - const thead = document.createElement("thead"); - const tr_head = document.createElement("tr"); - const th_1 = document.createElement("th"); - const th_2 = document.createElement("th"); - const th_3 = document.createElement("th"); - const th_4 = document.createElement("th"); - const th_5 = document.createElement("th"); - const th_6 = document.createElement("th"); - const th_7 = document.createElement("th"); - - // Add Attributes - table.classList.add("table", "tabled-bordered", "table-striped", "table-hover"); - thead.classList.add("thead-dark"); - th_1.setAttribute("scope", "col"); - th_2.setAttribute("scope", "col"); - th_3.setAttribute("scope", "col"); - th_4.setAttribute("scope", "col"); - th_5.setAttribute("scope", "col"); - th_6.setAttribute("scope", "col"); - th_7.setAttribute("scope", "col"); - - // Add Inner HTML - th_1.innerHTML = "#"; - th_2.innerHTML = "Repository Name"; - th_3.innerHTML = "Repository ID"; - th_4.innerHTML = "Created On"; - th_5.innerHTML = "Created By"; - th_6.innerHTML = "View Raw"; - th_7.innerHTML = "Delete Repository"; - - // Associations - tr_head.appendChild(th_1); - tr_head.appendChild(th_2); - tr_head.appendChild(th_3); - tr_head.appendChild(th_4); - tr_head.appendChild(th_5); - tr_head.appendChild(th_6); - tr_head.appendChild(th_7); - thead.appendChild(tr_head); - table.appendChild(thead); + const card = document.createElement("div"); + const cardBody = document.createElement("div"); + const cardTitle = document.createElement("h5"); + const closeAnchor = document.createElement("a"); + const closeHeader = document.createElement("h6"); + const cardText = document.createElement("p"); + const cardFooter = document.createElement("div"); + const textMuted = document.createElement("small"); + const underCardLine = document.createElement("div"); - for (let i = 0; i < data.length; i++) { - const currentRepo = data[i]; - // Create Elements - const tbody = document.createElement("tbody"); - const tr_body = document.createElement("tr"); - const th_vertical = document.createElement("th"); - const td_1 = document.createElement("td"); - const td_2 = document.createElement("td"); - const td_3 = document.createElement("td"); - const td_4 = document.createElement("td"); - const td_5 = document.createElement("td"); - const td_6 = document.createElement("td"); + // Add Attributes + card.classList.add("card"); + cardBody.classList.add("card-body"); + cardTitle.classList.add("card-title"); + closeAnchor.classList.add("close"); + // closeAnchor.setAttribute('href', '#'); + cardText.classList.add("card-text"); + cardFooter.classList.add("card-footer"); + textMuted.classList.add("text-muted"); + underCardLine.classList.add("line"); - // Add Attributes - th_vertical.setAttribute("scope", "row"); - tr_body.setAttribute("id", `repoRow${i}`); + // Add content + closeHeader.innerHTML = "x"; - // Add Inner HTML - th_vertical.innerHTML = i + 1; - td_1.innerHTML = currentRepo.name; - td_2.innerHTML = `${currentRepo.id}`; - td_3.innerHTML = currentRepo.created_at; - td_4.innerHTML = `${currentRepo.owner.login}`; - td_5.innerHTML = `View`; - td_6.innerHTML = `Delete`; - - // Associations - tr_body.appendChild(th_vertical); - tr_body.appendChild(td_1); - tr_body.appendChild(td_2); - tr_body.appendChild(td_3); - tr_body.appendChild(td_4); - tr_body.appendChild(td_5); - tr_body.appendChild(td_6); - tbody.appendChild(tr_body); - table.appendChild(tbody); + const x = this.display_ct(0, textMuted); + if (data.type === "command") { + // Add content + cardTitle.innerHTML = "You Said"; + cardText.innerHTML = data.command; + card.classList.add("light-red"); + const repeat = document.createElement("a"); + repeat.classList.add("btn", "btn-info", "float-right"); + repeat.setAttribute("role", "button"); + repeat.setAttribute("href", "#"); + repeat.setAttribute("id", `btnRepeatCommand${data.insertionCounter}`); + repeat.innerHTML = "Repeat"; + cardText.appendChild(repeat); + } else if (data.type === "response") { + // Add content + cardTitle.innerHTML = "Server Responded As.."; + if (requestMethod == "post") { + cardText.innerHTML = `${$config.intentSlugToOperations[intent].cardMsg}${this.getVariable(data, $config.intentSlugToOperations[intent].cardDataName)}`; + } else if (requestMethod == "get") { + cardText.innerHTML = $config.intentSlugToOperations[intent].cardMsg; + if (data && data.length && data.length > 0) { + if (intent === "viewrepos") { + table = this.createRepoTable(data); + } else if (intent === "displaylastcomment") { + comment = this.createCommentBody(data); + } } - - return table; + } else if (requestMethod == "purge") { + cardTitle.innerHTML = "Operation Completed!"; + cardText.innerHTML = data.command; + } + } else if (data.type = 'widget') { + cardTitle.innerHTML = "Operation recorded with below data, click submit to repeat."; + cardText.innerHTML = $config.intentSlugToOperations[intent].cardMsg; + if (data && data.length && data.length > 0) { + if (intent === "viewrepos") { + table = this.createRepoTable(data); + } else if (intent === "displaylastcomment") { + comment = this.createCommentBody(data); + } + } + } else { + cardTitle.innerHTML = "Server Responded As.."; + cardText.innerHTML = `Operation failed with status: ${data.status}`; } - loadConversations(historyAll) { - if (historyAll) { - historyAll.forEach((element) => { - this.addGitOperationHistory(element); - }); - } + // Associations + closeAnchor.appendChild(closeHeader); + cardTitle.appendChild(closeAnchor); + cardBody.appendChild(cardTitle); + cardBody.appendChild(cardText); + if (comment) { cardBody.appendChild(comment); } + cardFooter.appendChild(textMuted); + card.appendChild(cardBody); + if (table) { card.appendChild(table); } + card.appendChild(cardFooter); + + conversations.insertBefore(underCardLine, conversations.firstChild); + conversations.insertBefore(card, conversations.firstChild); + } + + getVariable(data, commaSeparatedValue) { + const arr = commaSeparatedValue.split(","); + for (let i = 0; i < arr.length; i++) { + data = data[arr[i]]; + } + return data; + } + + // Create table of repositories ================================================================================================== + createRepoTable(data) { + // Create Elements + const table = document.createElement("table"); + const thead = document.createElement("thead"); + const tr_head = document.createElement("tr"); + const th_1 = document.createElement("th"); + const th_2 = document.createElement("th"); + const th_3 = document.createElement("th"); + const th_4 = document.createElement("th"); + const th_5 = document.createElement("th"); + const th_6 = document.createElement("th"); + const th_7 = document.createElement("th"); + + // Add Attributes + table.classList.add("table", "tabled-bordered", "table-striped", "table-hover"); + thead.classList.add("thead-dark"); + th_1.setAttribute("scope", "col"); + th_2.setAttribute("scope", "col"); + th_3.setAttribute("scope", "col"); + th_4.setAttribute("scope", "col"); + th_5.setAttribute("scope", "col"); + th_6.setAttribute("scope", "col"); + th_7.setAttribute("scope", "col"); + + // Add Inner HTML + th_1.innerHTML = "#"; + th_2.innerHTML = "Repository Name"; + th_3.innerHTML = "Repository ID"; + th_4.innerHTML = "Created On"; + th_5.innerHTML = "Created By"; + th_6.innerHTML = "View Raw"; + th_7.innerHTML = "Delete Repository"; + + // Associations + tr_head.appendChild(th_1); + tr_head.appendChild(th_2); + tr_head.appendChild(th_3); + tr_head.appendChild(th_4); + tr_head.appendChild(th_5); + tr_head.appendChild(th_6); + tr_head.appendChild(th_7); + thead.appendChild(tr_head); + table.appendChild(thead); + + + for (let i = 0; i < data.length; i++) { + const currentRepo = data[i]; + // Create Elements + const tbody = document.createElement("tbody"); + const tr_body = document.createElement("tr"); + const th_vertical = document.createElement("th"); + const td_1 = document.createElement("td"); + const td_2 = document.createElement("td"); + const td_3 = document.createElement("td"); + const td_4 = document.createElement("td"); + const td_5 = document.createElement("td"); + const td_6 = document.createElement("td"); + + // Add Attributes + th_vertical.setAttribute("scope", "row"); + tr_body.setAttribute("id", `repoRow${i}`); + + // Add Inner HTML + th_vertical.innerHTML = i + 1; + td_1.innerHTML = currentRepo.name; + td_2.innerHTML = `${currentRepo.id}`; + td_3.innerHTML = currentRepo.created_at; + td_4.innerHTML = `${currentRepo.owner.login}`; + td_5.innerHTML = `View`; + td_6.innerHTML = `Delete`; + + // Associations + tr_body.appendChild(th_vertical); + tr_body.appendChild(td_1); + tr_body.appendChild(td_2); + tr_body.appendChild(td_3); + tr_body.appendChild(td_4); + tr_body.appendChild(td_5); + tr_body.appendChild(td_6); + tbody.appendChild(tr_body); + table.appendChild(tbody); } - createCommentBody(data) { - const commentPara = document.createElement("p"); - const lastComment = helper.getLatestComment(data); - commentPara.classList.add("card-text"); - commentPara.innerHTML = `COMMENT: ${lastComment}`; - return commentPara; - } + return table; + } - concealCodeInUrl() { - window.location = "http://localhost:8080"; + loadConversations(historyAll) { + if (historyAll) { + historyAll.forEach((element) => { + this.addGitOperationHistory(element); + }); } + } - toggleModals(response) { - const self = this; - const promise = response.json(); - const intent = $(`#${$config.constants.hiddenIntentFieldId}`).val(); - $("#submitConfirm").addClass("hide"); - $("#btnCancelConfirm").click(); - $(".modal-backdrop").removeClass("modal-backdrop"); - $("#underWidgetLine").addClass("hide"); - $("#intentBox").addClass("hide"); - $("#widgets").children().addClass("hide"); - if (response && response.status && (response.status === 201 || response.status === 200 || response.status === 204)) { - $("#successAlert").removeClass("hide"); - promise.then((body) => { - $("#op-msg").text($config.intentSlugToOperations[intent].successMessage); - $("#successAlert").removeClass("hide"); - const action = $config.intentSlugToOperations[intent].response_action; - body.intent = intent; - action.payload = body; - store.dispatch(action); - // self.addGitOperationHistory(body, 'response'); - }); - } else { - $("#dangerAlert").removeClass("hide"); - // self.addGitOperationHistory(response.status); - } - // clear intent - $(`#${$config.constants.hiddenIntentFieldId}`).val(""); + createCommentBody(data) { + const commentPara = document.createElement("p"); + const lastComment = helper.getLatestComment(data); + commentPara.classList.add("card-text"); + commentPara.innerHTML = `COMMENT: ${lastComment}`; + return commentPara; + } + + concealCodeInUrl() { + window.location = "http://localhost:8080"; + } + + toggleModals(response) { + const self = this; + const promise = response.json(); + const intent = $(`#${$config.constants.hiddenIntentFieldId}`).val(); + $("#submitConfirm").addClass("hide"); + $("#btnCancelConfirm").click(); + $(".modal-backdrop").removeClass("modal-backdrop"); + $("#underWidgetLine").addClass("hide"); + $("#intentBox").addClass("hide"); + $("#widgets").children().addClass("hide"); + if (response && response.status && (response.status === 201 || response.status === 200 || response.status === 204)) { + $("#successAlert").removeClass("hide"); + promise.then((body) => { + $("#op-msg").text($config.intentSlugToOperations[intent].successMessage); + $("#successAlert").removeClass("hide"); + const action = $config.intentSlugToOperations[intent].response_action; + body.intent = intent; + action.payload = body; + store.dispatch(action); + // self.addGitOperationHistory(body, 'response'); + }); + } else { + $("#dangerAlert").removeClass("hide"); + // self.addGitOperationHistory(response.status); } + // clear intent + $(`#${$config.constants.hiddenIntentFieldId}`).val(""); + } - display_ct(start, element) { - this.start = start; - this.element = element; - const days = Math.floor(this.start / 86400); - const hours = Math.floor((this.start - (days * 86400)) / 3600); - const minutes = Math.floor((this.start - (days * 86400) - (hours * 3600)) / 60); - const secs = Math.floor((this.start - (days * 86400) - (hours * 3600) - (minutes * 60))); - let x = ""; - if (days != 0) { - x = `${x + days} days`; - } - if (hours != 0) { - x = `${x + hours} hours`; - } - if (minutes != 0) { - x = `${x + minutes} minutes`; - } - x = `${x + secs} seconds ago`; - element.innerHTML = x; - this.start = this.start + 1; + display_ct(start, element) { + this.start = start; + this.element = element; + const days = Math.floor(this.start / 86400); + const hours = Math.floor((this.start - (days * 86400)) / 3600); + const minutes = Math.floor((this.start - (days * 86400) - (hours * 3600)) / 60); + const secs = Math.floor((this.start - (days * 86400) - (hours * 3600) - (minutes * 60))); + let x = ""; + if (days != 0) { + x = `${x + days} days`; + } + if (hours != 0) { + x = `${x + hours} hours`; + } + if (minutes != 0) { + x = `${x + minutes} minutes`; + } + x = `${x + secs} seconds ago`; + element.innerHTML = x; + this.start = this.start + 1; // setTimeout(this['display_ct](this.start, this.element)', 1000 ) - } + } } diff --git a/src/js/services/persistent-ops.js b/src/js/services/persistent-ops.js index 04ed694..23c90b4 100644 --- a/src/js/services/persistent-ops.js +++ b/src/js/services/persistent-ops.js @@ -138,19 +138,21 @@ function mbReducer(currentState, action) { return nextState; break; case "ADD_REPO": - // let command = document.getElementById('command').value; - // nextState = window.localStorage.getItem('currentState') ? JSON.parse(window.localStorage.getItem('currentState')) : currentState; - // newHistory.command = command; - // newHistory.type = 'command'; - // // newHistory.intent = 'commandbot' - // newHistory.insertionCounter = ++nextState.insertionCounter; - // if(nextState.queries) { - // nextState.queries = [ ...nextState.queries, newHistory ]; - // } else { - // nextState.queries = [ newHistory ]; - // } - // window.localStorage.setItem('currentState', JSON.stringify(nextState)); - // return nextState; + response = action.payload; + nextState = window.localStorage.getItem('currentState') ? JSON.parse(window.localStorage.getItem('currentState')) : currentState; + newHistory = response; + newHistory.type = 'widget'; + newHistory.insertionCounter = ++nextState.insertionCounter; + if(response.intent) { + let intent = response.intent; + if(nextState[intent]) { + nextState[intent] = [ ...nextState[intent], newHistory ]; + } else { + nextState[intent] = [ newHistory ]; + } + } + window.localStorage.setItem('currentState', JSON.stringify(nextState)); + return nextState; break; case "ADD_COLLAB": // let command = document.getElementById('command').value;