dotnetcorereactadmintool
Version:
186 lines (169 loc) • 5.5 kB
JavaScript
var readlineSync = require('readline-sync');
var fs = require('fs');
const { exit } = require('process');
async function sleep(millisecond) {
return new Promise(resolve => {
setTimeout(() => {
resolve()
}, millisecond)
})
}
function getHomeCrossplatform() {
if (process.env.HOME) return process.env.HOME; // Linux
return process.env.USERPROFILE; // Windows
}
function readinput_str({ tip = 'Please enter', defaultValue = '', required = false }) {
let val = '';
while (true) {
var defaultTxt = defaultValue.length > 0 ? ` (Default: ${defaultValue}) ` : ' ';
val = readlineSync.question(`${tip}${defaultTxt}> `).trim();
if (val == '') val = defaultValue.trim();
if (required && val.length == 0) { }
else { break; }
}
return val;
}
function readinput_int({ tip = 'Please enter', defaultValue = NaN, min = -99999, max = 99999 }) {
let val = '';
while (true) {
var defaultTxt = !isNaN(defaultValue) ? ` (Default: ${defaultValue}) ` : ' ';
val = readlineSync.question(`${tip}${defaultTxt}> `).trim();
if (val == '') val = defaultValue;
else if (isNaN(parseInt(val))) val = defaultValue;
if (isNaN(val)) continue;
if (parseInt(val) < min) val = min.toString();
if (parseInt(val) > max) val = max.toString();
break;
}
return parseInt(val);
}
function alertAndQuit(msg = '') {
if (msg.length > 0)
console.log(msg);
exit();
}
const _DealType = (_type) => {
switch (_type) {
case 'uuid':
return 'Guid?';
case 'int':
case 'int4':
case 'int8':
case 'int16':
case 'int32':
case 'serial':
return 'int?';
case 'double':
case 'money':
case 'float':
case 'float8':
return 'Double?';
case 'decimal':
case 'numeric':
return 'decimal?';
case 'nvarchar':
case 'varchar':
case 'ntext':
case 'text':
return 'string';
case 'boolean':
case 'bool':
case 'bit':
return 'bool?';
case 'timestamp':
case 'datetime':
case 'date':
return 'DateTime?';
}
return "XXX[_type]";
}
var createWebListCodes = function (tablefields) {
var strs = [];
for (var i in tablefields) {
var type = _DealType(tablefields[i].type);
var name = tablefields[i].field;
switch (type) {
case "bool":
strs.push(`<BooleanField label={useTxtData.table.${name}} source="${name}" />`);
break;
default:
strs.push(`<TextField label={useTxtData.table.${name}} source="${name}" />`);
break;
}
}
return strs.join('\r\n');
}
var createWebFormCodes = function (tablefields) {
var strs = [];
for (var i in tablefields) {
var type = _DealType(tablefields[i].type);
var name = tablefields[i].field;
switch (type) {
case "int":
strs.push(`<NumberInput label={useTxtData.table.${name}} source="${name}" step={1} validate={[required()]} />`);
break;
case "Double":
strs.push(`<NumberInput label={useTxtData.table.${name}} source="${name}" validate={[required()]} />`);
break;
case "bool":
strs.push(`<BooleanInput label={useTxtData.table.${name}} source="${name}" validate={[required()]} />`);
break;
default:
strs.push(`<TextInput label={useTxtData.table.${name}} source="${name}" validate={[required()]} />`);
break;
}
}
return strs.join('\r\n');
}
var createJsClassFiledCodes = function (tablefields) {
var strs = [];
for (var i in tablefields) {
//var type = _DealType(tablefields[i].type);
var name = tablefields[i].field;
strs.push(`${name}: '${name}',`);
}
return strs.join('\r\n');
}
var createFieldsCodes = function (tablefields) {
var strs = [];
for (var i in tablefields) {
var type = _DealType(tablefields[i].type);
var name = tablefields[i].field;
strs.push(`public ${type} ${name} {get;set;}`);
}
return strs.join('\r\n');
}
var createFieldsCodesRemoveKey = function (tablefields) {
var strs = [];
for (var i in tablefields) {
if (i == 0) continue;
var type = _DealType(tablefields[i].type);
var name = tablefields[i].field;
strs.push(`public ${type} ${name} {get;set;}`);
}
return strs.join('\r\n');
}
var writeFieldsCodes = function (tablefields) {
var strs = [];
for (var i in tablefields) {
var name = tablefields[i].field;
strs.push(`item.${name} = request.${name};`);
}
return strs.join('\r\n');
}
var writeFieldsCodesRemoveKey = function (tablefields) {
var strs = [];
for (var i in tablefields) {
if (i == 0) continue;
var name = tablefields[i].field;
strs.push(`item.${name} = request.${name};`);
}
return strs.join('\r\n');
}
module.exports = {
getHomeCrossplatform,
sleep, readinput_str, readinput_int, alertAndQuit,
createFieldsCodes, createFieldsCodesRemoveKey,
writeFieldsCodes, writeFieldsCodesRemoveKey,
createWebListCodes, createWebFormCodes, createJsClassFiledCodes,
};