angular-datatables
Version:
Angular directive for DataTables
70 lines • 3.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const schematics_1 = require("@angular-devkit/schematics");
const utils_1 = require("./utils");
const tasks_1 = require("@angular-devkit/schematics/tasks");
const style_options_1 = require("./models/style-options");
function default_1(_options) {
return schematics_1.chain([
addPackageJsonDependencies(_options),
installPackageJsonDependencies(),
updateAngularJsonFile(_options)
]);
}
exports.default = default_1;
function addPackageJsonDependencies(options) {
return (tree, context) => {
// Update package.json
const styleDeps = style_options_1.ADT_SUPPORTED_STYLES.find(e => e.style == options.style);
const dependencies = [
{ version: '^3.4.1', name: 'jquery', isDev: false },
{ version: '^1.10.20', name: 'datatables.net', isDev: false },
{ version: '^3.3.33', name: '@types/jquery', isDev: true },
{ version: '^1.10.18', name: '@types/datatables.net', isDev: true }
];
if (styleDeps) {
if (styleDeps.style != style_options_1.ADTStyleOptions.DT)
context.logger.log('warn', 'Your project needs Bootstrap CSS installed and configured for changes to take affect.');
styleDeps.packageJson.forEach(e => dependencies.push(e));
}
dependencies.forEach(dependency => {
const result = utils_1.addPackageToPackageJson(tree, dependency.name, dependency.version, dependency.isDev);
if (result) {
context.logger.log('info', `✅️ Added "${dependency.name}" into "${dependency.isDev ? 'devDependencies' : 'dependencies'}"`);
}
else {
context.logger.log('info', `ℹ️ Skipped adding "${dependency.name}" into package.json`);
}
});
return tree;
};
}
function installPackageJsonDependencies() {
return (host, context) => {
context.addTask(new tasks_1.NodePackageInstallTask());
context.logger.log('info', `🔍 Installing packages...`);
return host;
};
}
function updateAngularJsonFile(options) {
return (tree, context) => {
const styleDeps = style_options_1.ADT_SUPPORTED_STYLES.find(e => e.style == options.style);
const assets = [
{ path: 'node_modules/jquery/dist/jquery.js', target: 'scripts', fancyName: 'jQuery Core' },
{ path: 'node_modules/datatables.net/js/jquery.dataTables.js', target: 'scripts', fancyName: 'DataTables.net Core JS' },
];
if (styleDeps) {
styleDeps.angularJson.forEach(e => assets.push(e));
}
assets.forEach(asset => {
const result = utils_1.addAssetToAngularJson(tree, asset.target, asset.path);
if (result) {
context.logger.log('info', `✅️ Added "${asset.fancyName}" into angular.json`);
}
else {
context.logger.log('info', `ℹ️ Skipped adding "${asset.fancyName}" into angular.json`);
}
});
};
}
//# sourceMappingURL=index.js.map