in lib/VisualGenerator.js [131:219]
function generateSettings(targetPath, verbose) {
let capabilitiesFileName = targetPath + '/capabilities.json';
fs.readJson(capabilitiesFileName, (err, packageObj) => {
if (err) {
console.error(err);
return;
}
if (verbose) {
console.log('parse capabilities.json. Searching for settings');
console.log(packageObj.dataRoles[0].displayName);
}
let VisualSettingsMethods = 'export class VisualSettings extends DataViewObjectsParser {\n';
if (packageObj.objects) {
let subClassesDefinitionArray = [];
for (let settingsSubClass in packageObj.objects) {
if (verbose) {
console.log('Settings sub class: ' + settingsSubClass);
}
let subClassProperties = packageObj.objects[settingsSubClass].properties;
VisualSettingsMethods += ' public ' + settingsSubClass + ': ' +
settingsSubClass + 'Settings = new ' + settingsSubClass + 'Settings();\n';
let settingsSubClassDefinition = '\n export class ' + settingsSubClass + 'Settings {\n';
if (subClassProperties) {
for (let property in subClassProperties) {
if (verbose) {
console.log('property: ' + subClassProperties[property].displayName);
}
let propertyType = subClassProperties[property].type;
if (verbose) {
console.log('prop type: ' + propertyType);
}
// add some spaghetti to this meals
settingsSubClassDefinition += ' // ' + subClassProperties[property].displayName +
'\n public ' + property;
if (verbose) {
console.log(propertyType.keys);
}
if (propertyType.bool) {
if (verbose) {
console.log('bool');
}
settingsSubClassDefinition += ': boolean = true;\n';
} else if (propertyType.fill) {
if (verbose) {
console.log('fill');
}
settingsSubClassDefinition += ': string = "";\n';
} else if (propertyType.formatting) {
if (verbose) {
console.log('formatting');
}
if (propertyType.formatting.fontSize) {
settingsSubClassDefinition += ': number = 12;\n';
}
}
}
}
settingsSubClassDefinition += ' }\n';
subClassesDefinitionArray.push(settingsSubClassDefinition);
}
VisualSettingsMethods += ' }\n';
// Add properties class per each setting
for (let subDefinitions in subClassesDefinitionArray) {
VisualSettingsMethods += subClassesDefinitionArray[subDefinitions];
}
if (verbose) {
console.log('final text: ' + VisualSettingsMethods);
}
} else {
if (verbose) {
console.log('Settings not found');
}
VisualSettingsMethods += '// TODO: fill all visual settings here\n ' +
'// public dataPoint: DataPointSettings = new DataPointSettings();\n }\n' +
'// TODO: fill all visual settings here\n// export class DataPointSettings ' +
'{ \n // public fill: string = "#005c55";\n// }';
}
// read file and update
let settingsFileName = targetPath + '/src/settings.ts';
let setingsFileContents = fs.readFileSync(settingsFileName, 'utf8');
setingsFileContents = setingsFileContents.replace('<%= visualSettingsClasses %>', VisualSettingsMethods);
fs.writeFileSync(settingsFileName, setingsFileContents);
});
}