diff --git a/Client/httpInterface.js b/Client/httpInterface.js index ae027858f..aca478aa4 100644 --- a/Client/httpInterface.js +++ b/Client/httpInterface.js @@ -948,6 +948,7 @@ exports.newHttpInterface = function newHttpInterface(WEB_SERVER, DATA_FILE_SERVE } path = unescape(path) + respondWithImage(path, httpResponse) } break @@ -1068,7 +1069,9 @@ exports.newHttpInterface = function newHttpInterface(WEB_SERVER, DATA_FILE_SERVE const folder = global.env.PATH_TO_PROJECTS + '/' + project + '/Icons/' - fs.readdir(folder, (err, files) => { + getAllFilesInDirectoryAndSubdirectories(folder, onFilesReady) + + function onFilesReady(files) { for (let j = 0; j < files.length; j++) { let file = files[j] icons.push([project, file]) @@ -1078,7 +1081,7 @@ exports.newHttpInterface = function newHttpInterface(WEB_SERVER, DATA_FILE_SERVE if (projectCounter === totalProjects) { respondWithContent(JSON.stringify(icons), httpResponse) } - }) + } } } break @@ -1496,57 +1499,57 @@ exports.newHttpInterface = function newHttpInterface(WEB_SERVER, DATA_FILE_SERVE function sendSchema(filePath, schemaType) { let fs = require('fs') - try { - let folder = '' - switch (schemaType) { - case 'AppSchema': { - folder = 'App-Schema' - break - } - case 'DocsNodeSchema': { - folder = 'Docs-Nodes' - break - } - case 'DocsConceptSchema': { - folder = 'Docs-Concepts' - break - } - case 'DocsTopicSchema': { - folder = 'Docs-Topics' - break - } - case 'DocsTutorialSchema': { - folder = 'Docs-Tutorials' - break - } - case 'DocsReviewSchema': { - folder = 'Docs-Reviews' - break - } - case 'DocsBookSchema': { - folder = 'Docs-Books' - break - } + try { + let folder = '' + switch (schemaType) { + case 'AppSchema': { + folder = 'App-Schema' + break } - - let schemaArray = [] - let fileList = fs.readdirSync(filePath + '/' + folder) - for (let k = 0; k < fileList.length; k++) { - let name = fileList[k] - let fileContent = fs.readFileSync(filePath + '/' + folder + '/' + name) - let schemaDocument = JSON.parse(fileContent) - schemaArray.push(schemaDocument) + case 'DocsNodeSchema': { + folder = 'Docs-Nodes' + break } - let schema = JSON.stringify(schemaArray) - respondWithContent(schema, httpResponse) - } catch (err) { - if (err.message.indexOf('no such file or directory') < 0) { - console.log('Could not send Schema:', filePath, schemaType) - console.log(err.stack) + case 'DocsConceptSchema': { + folder = 'Docs-Concepts' + break + } + case 'DocsTopicSchema': { + folder = 'Docs-Topics' + break + } + case 'DocsTutorialSchema': { + folder = 'Docs-Tutorials' + break + } + case 'DocsReviewSchema': { + folder = 'Docs-Reviews' + break + } + case 'DocsBookSchema': { + folder = 'Docs-Books' + break } - respondWithContent("[]", httpResponse) } - + + let schemaArray = [] + let fileList = fs.readdirSync(filePath + '/' + folder) + for (let k = 0; k < fileList.length; k++) { + let name = fileList[k] + let fileContent = fs.readFileSync(filePath + '/' + folder + '/' + name) + let schemaDocument = JSON.parse(fileContent) + schemaArray.push(schemaDocument) + } + let schema = JSON.stringify(schemaArray) + respondWithContent(schema, httpResponse) + } catch (err) { + if (err.message.indexOf('no such file or directory') < 0) { + console.log('Could not send Schema:', filePath, schemaType) + console.log(err.stack) + } + respondWithContent("[]", httpResponse) + } + } function sendStyleSheet(fileName) { @@ -1727,4 +1730,37 @@ exports.newHttpInterface = function newHttpInterface(WEB_SERVER, DATA_FILE_SERVE return [] } } + + function getAllFilesInDirectoryAndSubdirectories(dir, callback) { + const { promisify } = require('util'); + const { resolve } = require('path'); + const fs = require('fs'); + const readdir = promisify(fs.readdir); + const stat = promisify(fs.stat); + + getFiles(dir) + .then(files => { + let splittedDir = dir.split('/') + let lastFolder = splittedDir[splittedDir.length - 2] + let pathAndNames = [] + for (let i = 0; i < files.length; i++) { + let file = files[i] + let filesSplitted = file.split(lastFolder) + let pathName = filesSplitted[1] + pathName = pathName.substring(1, pathName.length) + pathAndNames.push(pathName) + } + callback(pathAndNames) + }) + .catch(e => console.error(e)); + + async function getFiles(dir) { + const subdirs = await readdir(dir); + const files = await Promise.all(subdirs.map(async (subdir) => { + const res = resolve(dir, subdir); + return (await stat(res)).isDirectory() ? getFiles(res) : res; + })); + return files.reduce((a, f) => a.concat(f), []); + } + } } \ No newline at end of file diff --git a/Projects/Governance/Icons/asset-claim-vote.png b/Projects/Governance/Icons/Asset/asset-claim-vote.png similarity index 100% rename from Projects/Governance/Icons/asset-claim-vote.png rename to Projects/Governance/Icons/Asset/asset-claim-vote.png diff --git a/Projects/Governance/Icons/asset-class.png b/Projects/Governance/Icons/Asset/asset-class.png similarity index 100% rename from Projects/Governance/Icons/asset-class.png rename to Projects/Governance/Icons/Asset/asset-class.png diff --git a/Projects/Governance/Icons/asset-contribution-claim.png b/Projects/Governance/Icons/Asset/asset-contribution-claim.png similarity index 100% rename from Projects/Governance/Icons/asset-contribution-claim.png rename to Projects/Governance/Icons/Asset/asset-contribution-claim.png diff --git a/Projects/Governance/Icons/asset-contributions-folder.png b/Projects/Governance/Icons/Asset/asset-contributions-folder.png similarity index 100% rename from Projects/Governance/Icons/asset-contributions-folder.png rename to Projects/Governance/Icons/Asset/asset-contributions-folder.png diff --git a/Projects/Governance/Icons/asset-weight-vote.png b/Projects/Governance/Icons/Asset/asset-weight-vote.png similarity index 100% rename from Projects/Governance/Icons/asset-weight-vote.png rename to Projects/Governance/Icons/Asset/asset-weight-vote.png diff --git a/Projects/Governance/Icons/asset.png b/Projects/Governance/Icons/Asset/asset.png similarity index 100% rename from Projects/Governance/Icons/asset.png rename to Projects/Governance/Icons/Asset/asset.png diff --git a/Projects/Governance/Icons/assets.png b/Projects/Governance/Icons/Asset/assets.png similarity index 100% rename from Projects/Governance/Icons/assets.png rename to Projects/Governance/Icons/Asset/assets.png diff --git a/Projects/Governance/Icons/feature-claim-vote.png b/Projects/Governance/Icons/Feature/feature-claim-vote.png similarity index 100% rename from Projects/Governance/Icons/feature-claim-vote.png rename to Projects/Governance/Icons/Feature/feature-claim-vote.png diff --git a/Projects/Governance/Icons/feature-class.png b/Projects/Governance/Icons/Feature/feature-class.png similarity index 100% rename from Projects/Governance/Icons/feature-class.png rename to Projects/Governance/Icons/Feature/feature-class.png diff --git a/Projects/Governance/Icons/feature-contribution-claim.png b/Projects/Governance/Icons/Feature/feature-contribution-claim.png similarity index 100% rename from Projects/Governance/Icons/feature-contribution-claim.png rename to Projects/Governance/Icons/Feature/feature-contribution-claim.png diff --git a/Projects/Governance/Icons/feature-contributions-folder.png b/Projects/Governance/Icons/Feature/feature-contributions-folder.png similarity index 100% rename from Projects/Governance/Icons/feature-contributions-folder.png rename to Projects/Governance/Icons/Feature/feature-contributions-folder.png diff --git a/Projects/Governance/Icons/feature-weight-vote.png b/Projects/Governance/Icons/Feature/feature-weight-vote.png similarity index 100% rename from Projects/Governance/Icons/feature-weight-vote.png rename to Projects/Governance/Icons/Feature/feature-weight-vote.png diff --git a/Projects/Governance/Icons/feature.png b/Projects/Governance/Icons/Feature/feature.png similarity index 100% rename from Projects/Governance/Icons/feature.png rename to Projects/Governance/Icons/Feature/feature.png diff --git a/Projects/Governance/Icons/features.png b/Projects/Governance/Icons/Feature/features.png similarity index 100% rename from Projects/Governance/Icons/features.png rename to Projects/Governance/Icons/Feature/features.png diff --git a/Projects/Governance/Icons/pool-class.png b/Projects/Governance/Icons/Pool/pool-class.png similarity index 100% rename from Projects/Governance/Icons/pool-class.png rename to Projects/Governance/Icons/Pool/pool-class.png diff --git a/Projects/Governance/Icons/pool-weight-vote.png b/Projects/Governance/Icons/Pool/pool-weight-vote.png similarity index 100% rename from Projects/Governance/Icons/pool-weight-vote.png rename to Projects/Governance/Icons/Pool/pool-weight-vote.png diff --git a/Projects/Governance/Icons/pool.png b/Projects/Governance/Icons/Pool/pool.png similarity index 100% rename from Projects/Governance/Icons/pool.png rename to Projects/Governance/Icons/Pool/pool.png diff --git a/Projects/Governance/Icons/pools.png b/Projects/Governance/Icons/Pool/pools.png similarity index 100% rename from Projects/Governance/Icons/pools.png rename to Projects/Governance/Icons/Pool/pools.png diff --git a/Projects/Governance/Icons/position-claim-vote.png b/Projects/Governance/Icons/Position/position-claim-vote.png similarity index 100% rename from Projects/Governance/Icons/position-claim-vote.png rename to Projects/Governance/Icons/Position/position-claim-vote.png diff --git a/Projects/Governance/Icons/position-class.png b/Projects/Governance/Icons/Position/position-class.png similarity index 100% rename from Projects/Governance/Icons/position-class.png rename to Projects/Governance/Icons/Position/position-class.png diff --git a/Projects/Governance/Icons/position-contribution-claim.png b/Projects/Governance/Icons/Position/position-contribution-claim.png similarity index 100% rename from Projects/Governance/Icons/position-contribution-claim.png rename to Projects/Governance/Icons/Position/position-contribution-claim.png diff --git a/Projects/Governance/Icons/position-contributions-folder.png b/Projects/Governance/Icons/Position/position-contributions-folder.png similarity index 100% rename from Projects/Governance/Icons/position-contributions-folder.png rename to Projects/Governance/Icons/Position/position-contributions-folder.png diff --git a/Projects/Governance/Icons/position-weight-vote.png b/Projects/Governance/Icons/Position/position-weight-vote.png similarity index 100% rename from Projects/Governance/Icons/position-weight-vote.png rename to Projects/Governance/Icons/Position/position-weight-vote.png diff --git a/Projects/Governance/Icons/position.png b/Projects/Governance/Icons/Position/position.png similarity index 100% rename from Projects/Governance/Icons/position.png rename to Projects/Governance/Icons/Position/position.png diff --git a/Projects/Governance/Icons/positions.png b/Projects/Governance/Icons/Position/positions.png similarity index 100% rename from Projects/Governance/Icons/positions.png rename to Projects/Governance/Icons/Position/positions.png diff --git a/Projects/Governance/Icons/api-query-parameter.png b/Projects/Governance/Icons/api-query-parameter.png deleted file mode 100644 index d573c891d..000000000 Binary files a/Projects/Governance/Icons/api-query-parameter.png and /dev/null differ diff --git a/Projects/Governance/Icons/referrer.png b/Projects/Governance/Icons/user-referrer.png similarity index 100% rename from Projects/Governance/Icons/referrer.png rename to Projects/Governance/Icons/user-referrer.png diff --git a/Projects/Governance/Schemas/App-Schema/user-profile.json b/Projects/Governance/Schemas/App-Schema/user-profile.json index e23848ce0..5f3c8497e 100644 --- a/Projects/Governance/Schemas/App-Schema/user-profile.json +++ b/Projects/Governance/Schemas/App-Schema/user-profile.json @@ -27,10 +27,10 @@ { "action": "Add UI Object", "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "referrer", + "propertyToCheckFor": "userReferrer", "actionFunction": "payload.executeAction", - "label": "Add Referrer", - "relatedUiObject": "Referrer" + "label": "Add User Referrer", + "relatedUiObject": "User Referrer" }, { "action": "Delete UI Object", @@ -66,9 +66,9 @@ "autoAdd": false }, { - "name": "referrer", + "name": "userReferrer", "type": "node", - "childType": "Referrer", + "childType": "User Referrer", "autoAdd": false } ] diff --git a/Projects/Governance/Schemas/App-Schema/Referrer.json b/Projects/Governance/Schemas/App-Schema/user-referrer.json similarity index 93% rename from Projects/Governance/Schemas/App-Schema/Referrer.json rename to Projects/Governance/Schemas/App-Schema/user-referrer.json index 71305f0bb..3311d2688 100644 --- a/Projects/Governance/Schemas/App-Schema/Referrer.json +++ b/Projects/Governance/Schemas/App-Schema/user-referrer.json @@ -1,5 +1,5 @@ { - "type": "Referrer", + "type": "User Referrer", "menuItems": [ { "action": "Configure", @@ -35,5 +35,5 @@ "referencingRules": { "compatibleTypes": "->User Profile->" }, - "propertyNameAtParent": "referrer" + "propertyNameAtParent": "userReferrer" } \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/votes-distribution.json b/Projects/Governance/Schemas/App-Schema/votes-distribution.json index 147e9e197..1d0e34703 100644 --- a/Projects/Governance/Schemas/App-Schema/votes-distribution.json +++ b/Projects/Governance/Schemas/App-Schema/votes-distribution.json @@ -17,10 +17,10 @@ { "action": "Add UI Object", "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "referrer", + "propertyToCheckFor": "userReferrer", "actionFunction": "payload.executeAction", - "label": "Add Referrer", - "relatedUiObject": "Referrer" + "label": "Add User Referrer", + "relatedUiObject": "User Referrer" }, { "action": "Delete UI Object", diff --git a/Projects/Governance/Schemas/Docs-Nodes/referrer.json b/Projects/Governance/Schemas/Docs-Nodes/referrer.json index d18ddea06..78d42c699 100644 --- a/Projects/Governance/Schemas/Docs-Nodes/referrer.json +++ b/Projects/Governance/Schemas/Docs-Nodes/referrer.json @@ -1,7 +1,7 @@ { - "type": "Referrer", + "type": "User Referrer", "definition": { - "text": "This node is used by users to reference other users defining in this way who was the user who brought them into the project. The referrer could have acted by word of mouth, or producing some marketing material with it's referral id. These references are later used at the token distribution process to reward referrers and also users declaring who these referrers are.", + "text": "This node is used by users to reference other users defining in this way who was the user who brought them into the project. The userReferrer could have acted by word of mouth, or producing some marketing material with it's referral id. These references are later used at the token distribution process to reward referrers and also users declaring who these referrers are.", "updated": 1622990015308 }, "paragraphs": [ diff --git a/Projects/Superalgos/UI/Spaces/Design-Space/DesignSpace.js b/Projects/Superalgos/UI/Spaces/Design-Space/DesignSpace.js index 23e4647f3..7c34cf1e5 100644 --- a/Projects/Superalgos/UI/Spaces/Design-Space/DesignSpace.js +++ b/Projects/Superalgos/UI/Spaces/Design-Space/DesignSpace.js @@ -38,7 +38,7 @@ function newSuperalgosDesignSpace() { /* Take types-icons relationships defined at the schema */ for (let i = 0; i < PROJECTS_ARRAY.length; i++) { let project = PROJECTS_ARRAY[i] - + addSchemaTypes(SCHEMAS_BY_PROJECT.get(project).array.appSchema) addSchemaTypes(SCHEMAS_BY_PROJECT.get(project).array.docsNodeSchema) addSchemaTypes(SCHEMAS_BY_PROJECT.get(project).array.docsConceptSchema) @@ -78,21 +78,24 @@ function newSuperalgosDesignSpace() { for (let i = 0; i < iconsArray.length; i++) { let project = iconsArray[i][0] - let name = iconsArray[i][1] - loadImage(project, name) + let path = iconsArray[i][1] + loadImage(project, path) } - function loadImage(project, name) { + function loadImage(project, path) { imageLoadedCounter++ const PATH = 'Icons/' + project + '/' let image = new Image() image.onload = onImageLoad - image.fileName = name + image.fileName = path function onImageLoad() { image.canDrawIcon = true } - image.src = PATH + name + image.src = PATH + path + let splittedPath = path.split('\\') + let name = splittedPath[splittedPath.length - 1] + let key = project + '-' + name.substring(0, name.length - 4) thisObject.iconsByProjectAndName.set(key, image)