Skip to content

Instantly share code, notes, and snippets.

@adwait-thattey
Last active January 25, 2021 18:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save adwait-thattey/a18c8fb7c99fbfb9504aeccd1de165b3 to your computer and use it in GitHub Desktop.
Save adwait-thattey/a18c8fb7c99fbfb9504aeccd1de165b3 to your computer and use it in GitHub Desktop.
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<!-- Compiled and minified JavaScript -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<div class="row">
<div class="col s9">
<div class="card-panel cyan darken-4" style="overflow: scroll;">
<span class="white-text">
<pre id="code-view"></pre>
</span>
</div>
</div>
<div class="col s3">
<div >
<div style="padding:10px" onclick="copyCodeToClipboard()">
<button class="waves-effect waves-light btn-large cyan darken-4 code-btn" id="code-copy-btn"><i class="fa fa-copy"></i>&nbsp;&nbsp;Copy To Clipboard</button>
</div>
<div style="padding:10px" onclick="change_embed_code('json')">
<button class="waves-effect waves-light btn-large cyan darken-4 code-btn" id="code-btn-json"><i class="fa fa-server"></i>&nbsp;&nbsp;JSON</button>
</div>
<div style="padding:10px" onclick="change_embed_code('xml')">
<button class="waves-effect waves-light btn-large cyan darken-4 code-btn" id="code-btn-xml"><i class="fa fa-code"></i>&nbsp;&nbsp;XML</button>
</div>
<div style="padding:10px" onclick="change_embed_code('sql')">
<button class="waves-effect waves-light btn-large cyan darken-4 code-btn" id="code-btn-sql"><i class="fa fa-database"></i>&nbsp;&nbsp;SQL</button>
</div>
<div style="padding:10px" onclick="change_embed_code('csv')">
<button class="waves-effect waves-light btn-large cyan darken-4 code-btn" id="code-btn-csv"><i class="fa fa-table"></i>&nbsp;&nbsp;CSV</button>
</div>
<div style="padding:10px" onclick="change_embed_code('tsv')">
<button class="waves-effect waves-light btn-large cyan darken-4 code-btn" id="code-btn-tsv"><i class="fa fa-table"></i>&nbsp;&nbsp;TSV</button>
</div>
</div>
</div>
</div>
<script>
let codeObjects = {}
const change_embed_code = (lang) => {
lang = lang.toLowerCase()
switch(lang) {
case "sql":
document.getElementById("code-view").innerText = codeObjects.SQLObject
break
case "csv":
document.getElementById("code-view").innerText = codeObjects.CSVObject
break
case "tsv":
document.getElementById("code-view").innerText = codeObjects.TSVObject
break
case "xml":
document.getElementById("code-view").innerText = codeObjects.xmlObject
break
case "json":
default:
document.getElementById("code-view").innerText = codeObjects.jsonObject
break
}
const all_code_buttons = document.getElementsByClassName('code-btn')
for (cbtn of all_code_buttons){
cbtn.classList.remove('purple')
cbtn.classList.remove('darken-4')
cbtn.classList.add('cyan')
cbtn.classList.add('darken-4')
}
const selected_btn = document.getElementById('code-btn-' + lang)
selected_btn.classList.remove('cyan')
selected_btn.classList.remove('darken-4')
selected_btn.classList.add('purple')
selected_btn.classList.add('darken-4')
}
function copyToClipboard(text) {
if (window.clipboardData && window.clipboardData.setData) {
// IE specific code path to prevent textarea being shown while dialog is visible.
return clipboardData.setData("Text", text);
} else if (document.queryCommandSupported && document.queryCommandSupported("copy")) {
var textarea = document.createElement("textarea");
textarea.textContent = text;
textarea.style.position = "fixed"; // Prevent scrolling to bottom of page in MS Edge.
document.body.appendChild(textarea);
textarea.select();
try {
return document.execCommand("copy"); // Security exception may be thrown by some browsers.
} catch (ex) {
console.warn("Copy to clipboard failed.", ex);
return false;
} finally {
document.body.removeChild(textarea);
}
}
}
const copyCodeToClipboard = () => {
const code_text = document.getElementById('code-view').innerText;
const isCopied = copyToClipboard(code_text)
if (isCopied){
document.getElementById('code-copy-btn').innerText = "Copied!"
}
else {
document.getElementById('code-copy-btn').innerText = "Failed To Copy!"
}
setTimeout(()=> {
document.getElementById('code-copy-btn').innerText = "Copy To Clipboard"
}, 3000)
}
const disableIfNotArray = () => {
// disable csv,tsv and sql
for (let dlang of ['tsv', 'csv', 'sql']) {
const selected_btn = document.getElementById('code-btn-' + dlang)
selected_btn.classList.add('disabled')
}
}
// /*
// FOR POSTMAN ONLY
pm.getData((err, data)=>{
codeObjects = data.response.codeObjects;
change_embed_code("json")
if (!data.response.meta.isArray){
disableIfNotArray()
}
})
// */
/*
// only for web
codeObjects = {
jsonObject: jsonObject,
xmlObject: xmlObject,
SQLObject: SQLObject,
CSVObject: CSVObject,
TSVObject: TSVObject
}
meta = {
isArray: isArray
}
change_embed_code("json")
if (!meta.isArray){
disableIfNotArray()
}
*/
</script>
@Vineet-Sharma29
Copy link

function JSONToCSV(records) {
    var data = typeof records != 'object' ? JSON.parse(records) : records;
    var str = '';

    for (var i = 0; i < data.length; i++) {
        var line = '';
        for (var index in data[i]) {
            if (line != '') line += ','

            line += data[i][index];
        }

        str += line + '\r\n';
    }

    return str;
}

console.log(JSONToCSV(pm.response.json().data))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment