"PACKAGE": {
"IMPORT": "/api/imports/",
"EXPORT": "/api/exports/",
+ "EXPORT_KS": "ks",
+ "EXPORT_RECIPE": "recipe",
"ANALYSIS": "/api/analysis",
"RECIPE_UPLOAD": "/api/recipe/upload"
},
/**
* Get ks file path from tic-core via RESTful API
- * @URI /api/exports
+ * @URI /api/exports:format
* @TYPE POST
*/
- router.post('/exports', function (req, res) {
+ router.post('/exports/:format', function (req, res) {
logger.info('an api called that /api/exports');
core.getExports(req, res);
});
var JL = require('jsnlog').JL;
var logger = JL('ticcore.js');
var http = require('http');
+var _ = require('lodash');
var AppConfig = require('../config.json');
/**
*/
ticcore.server = null;
+var EXPORT_FORMAT = 'exports?format=<%= format %>';
+
/**
* initialize
*/
};
ticcore.getExports = function getExports(req, res) {
- var postData, addr, options, data, ticCoreReq;
-
- postData = JSON.stringify(req.body);
-
+ var postData = JSON.stringify(req.body);
logger.info('getExports: ' + postData);
- addr = this.server.address();
+ var addr = this.server.address();
- options = {
+ var options = {
host: addr.address,
port: AppConfig.TIC_CORE.PORT || addr.port + 1,
method: 'POST',
- path: '/exports',
+ path: _.template(EXPORT_FORMAT)({
+ format: req.params.format
+ }),
headers: {
'Content-Type': 'application/json',
'Content-Length': Buffer.byteLength(postData)
}
};
- data = '';
- ticCoreReq = http.request(options, function (ticCoreRes) {
+ var data = '';
+ var ticCoreReq = http.request(options, function (ticCoreRes) {
ticCoreRes.setEncoding('utf8');
ticCoreRes.on('data', function (chunk) {
data += chunk;
</div>
</div><!-- /End Import Dialog -->
+ <!-- Export -->
+ <div class="hidden">
+ <a id="tic-export-recipe" target="_blank" href="" download></a>
+ </div><!-- /End Export -->
+
<!-- library loading -->
<script src="/socket.io/socket.io.js"></script>
<script src="/js/config.js"></script>
var logger = Logger('export.js');
+ var CONFIG = null;
+
function showExportDialog() {
- // TODO: show export dialog
- Util.showAlertDialog('Not yet implemented');
+ Util.showConfirmDialog('Are you sure you want to export recipe?')
+ .then(function () {
+ return Util.POST(CONFIG.EVENT.PACKAGE.EXPORT + CONFIG.EVENT.PACKAGE.EXPORT_RECIPE, {
+ recipes: require('js/page/settings').getRecipeStore(),
+ packages: _.map(require('js/page/package').getCheckedPackages(), 'name'),
+ outdir: CONFIG.TIC_WEB.PATH_RECIPE_EXPORT
+ });
+ })
+ .then(function (res) {
+ if (res.result === 'false') {
+ return Promise.reject(res.message);
+ } else {
+ var recipePath = res.data.path.replace('var/tmp/tic-web', 'tic');
+ $('#tic-export-recipe').attr('href', recipePath)[0].click();
+ }
+ })
+ .catch(function (err) {
+ logger.error(err);
+ Util.showAlertDialog(err);
+ });
}
function _init() {
logger.info('init');
+
+ Util.getAppConfig()
+ .then(function (conf) {
+ CONFIG = conf;
+ });
}
_init();
job_pid: dataObj.jobProcessId,
job_updater: UserInfo.email
};
- logger.error('MIC_ADD_PID_JOB_TO: ' + JSON.stringify(msgObj));
+ logger.info('MIC_ADD_PID_JOB_TO: ' + JSON.stringify(msgObj));
return Util.POST(AppConfig.EVENT.JOB.JOB_EDIT_ONE + dataObj.jobId, msgObj);
});
}
function getKickStartFile () {
- return Util.POST(AppConfig.EVENT.PACKAGE.EXPORT, msgData);
+ return Util.POST(AppConfig.EVENT.PACKAGE.EXPORT + AppConfig.EVENT.PACKAGE.EXPORT_KS, msgData);
}
return getKickStartFile()