var express = require('express'); var router = express.Router(); const fontDb = require('../models/iconFontmodels'); const font = fontDb.font const iconFont = fontDb.iconfont const svgtofont = require('svgtofont'); const fs = require('fs'); const path = require('path'); const { where } = require('sequelize'); const { resolve } = require('path/posix'); router.post('/createIconFont', async (req, res) => { svgFiles = [] let fontId = await font.findOne( { where : { name : req.body.fontName, } }) let svgList = await font.findAll({ include : [{model: iconFont , where : { varient : "Bulks", iconfontID :fontId.dataValues.id, }}, ], }) svgList = svgList[0].dataValues.iconfonts res.send(svgList) const cssFileGenerator = ` @font-face { font-family: ${req.body.fontName}; src: url('${req.body.fontName}.eot'); /* IE9*/ src: url('${req.body.fontName}.eot') format('embedded-opentype'), /* IE6-IE8 */ url("${req.body.fontName}.woff2") format("woff2"), url("${req.body.fontName}.woff") format("woff"), url('${req.body.fontName}.ttf') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ url('${req.body.fontName}.svg') format('svg'); /* iOS 4.1- */ } .characters { font-family: '${req.body.fontName}' !important; font-size:16px; font-style:normal; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } ` fs.unlink('iconFont/iconFontsOf'+req.body.fontName ,function(err){ if(err) return console.log(err); console.log('file deleted successfully'); }); if (!fs.existsSync('iconFont/iconFontsOf'+req.body.fontName )){ fs.mkdirSync('iconFont/iconFontsOf'+req.body.fontName ); } fs.appendFile('iconFont/iconFontsOf'+req.body.fontName + "/"+req.body.fontName+".css", cssFileGenerator, err => { if (err) { console.error(err); } // file written successfully }); svgtofont({ src: path.resolve('svgs/'+req.body.fontName), dist: path.resolve('iconFont/iconFontsOf'+req.body.fontName), fontName: req.body.fontName, // emptyDist: true, useNameAsUnicode : true, }); }); router.post('/addIcon', async (req, res) => { let fontId = await font.findOne({ where : { name : req.body.fontName, } }) const svgsFolder = "svgs/"+ req.body.fontName async function nameGenerator(){ nameGeneratorCounter = 500 fs.readdirSync(svgsFolder).forEach(file => { fs.rename("svgs/iconsax2/"+file ,"svgs/iconsax2/" +String.fromCharCode(parseInt(nameGeneratorCounter))+ ".svg",function(err) { if ( err ) console.log('ERROR: ' + err); } ) console.log(file) nameGeneratorCounter+=1 }); } await nameGenerator(); await iconFont.destroy({ where : { id : fontId.id } }) fs.readdirSync(svgsFolder).forEach(file => { const iconCreate = iconFont.create( { name : req.body.fontName, iconfontID : fontId.id, char : file.substring(0,1) , svgFile : svgsFolder + '/' + file, varient : req.body.varient, description : file, } ) } ) res.send("svgs added successfully.") }); router.post('/createfont', async (req, res) => { font.create( { name : req.body.fontName, }) const list = font.findAll() res.send(list); }); module.exports = router