mavensmate
Version:
Core APIs that drive MavensMate IDEs for Salesforce1/Force.com
154 lines (137 loc) • 4.58 kB
HTML
{% extends "views/layouts/base.html" %}
{% block yield %}
<div class="tab-content" id="main-tab-content">
<div id="form" class="tab-pane active">
<div class="slds-form--stacked">
<fieldset>
<div class="slds-form-element">
<label class="slds-form-element__label" for="inputSample2">Metadata Template</label>
<div class="slds-form-element__control">
<select id="template" class="slds-select">
<option value="">Select a metadata template</option>
{% for t in templates %}
<option value="{{ t['name'] }}">{{ t['name'] }}</option>
{% endfor %}
</select>
</div>
</div>
<div id="template_params">
</div>
<div class="slds-form-element slds-m-top--small" id="template_body_wrapper">
<label class="slds-form-element__label" for="inputSample2">Metadata Template Preview</label>
<div class="slds-form-element__control">
<div id="template_body" class="slds-box">
</div>
</div>
</div>
</fieldset>
</div>
</div>
</div>
{% endblock %}
{% block buttons %}
<input type="button" id="btnSubmit" class="slds-button slds-button--brand" value="Create Metadata" onclick='newMetadata();'>
{% include 'views/partials/cancel_button.html' %}
{% endblock %}
{% block body_js %}
<style>
pre.template_body_pre.prettyprint {
padding: 0px;
border: none;
margin:0px;
}
#template_body_wrapper {
display: none;
}
</style>
<script type="text/javascript">
var response;
var templates = {{ JSON.stringify(templates) }};
var selectedTemplate = null;
var metadataType = '{{metadataType}}';
function newMetadata() {
paramPayload = {}
$("input.templateParam").each(function(index) {
var paramName = $( this ).data( "param" );
var paramValue = $( this ).val();
paramPayload[paramName] = paramValue;
});
var opts = {
ajax: {
type: 'POST',
url: "{{ mavensmate.ui.getBaseUrl() }}/app/metadata",
data: JSON.stringify({
metadataTypeXmlName: '{{ metadataType }}',
templateValues: paramPayload,
template: selectedTemplate
})
},
message: {
label: 'Creating new metadata...'
}
};
mavensmate.request(opts)
.then(function(response) {
console.log(response);
showToast(response.result.message, 'success');
})
.catch(function(err) {
console.error('could not create metadata', err);
})
.finally(function() {
hideLoading();
});
}
$(function() {
// fetch templates from the server
$("#template").change(function() {
var value = $(this).val();
selectedTemplate = null;
var paramsHtml = '';
if (value === null || value === '') {
paramsHtml = '';
$("#template_body_wrapper").hide();
} else {
for (t in templates) {
if (templates[t].name === value) {
console.log('our template!');
console.log(templates[t]);
selectedTemplate = templates[t];
break;
}
}
for (p in selectedTemplate.params) {
paramsHtml += '<div class="slds-form-element slds-m-top--small"><label class="slds-form-element__label" for="inputSample2">'+selectedTemplate.params[p].description+'</label><div class="slds-form-element__control"><input class="slds-input templateParam" data-param="'+selectedTemplate.params[p].name+'" type="text" placeholder="'+selectedTemplate.params[p].name+'"/></div></div>';
}
}
var opts = {
async: false,
ajax: {
type: 'GET',
dataType: 'text',
url: "{{ mavensmate.ui.getBaseUrl() }}/app/metadata/{{metadataType}}/templates/"+encodeURI(selectedTemplate.file_name)
}
};
mavensmate.request(opts)
.then(function(response) {
console.log('res is', response);
if (metadataType === 'ApexClass' || metadataType === 'ApexTrigger') {
$("#template_body").html('<pre class="template_body_pre prettyprint lang-java"></pre>');
} else if (metadataType === 'ApexPage' || metadataType === 'ApexComponent') {
$("#template_body").html('<pre class="template_body_pre prettyprint lang-html"></pre>');
}
$(".template_body_pre").text(response);
prettyPrint();
$("#template_body_wrapper").show();
})
.catch(function(err) {
console.error('could not retrieve template', err);
})
.finally(function() {
// todo: hide template loading
});
$("div#template_params").html(paramsHtml);
});
});
</script>
{% endblock %}