UNPKG

d2-ui

Version:
190 lines (169 loc) 6.69 kB
export function getSideBarConfig() { return { all: { items: [] }, categorySection: { items: ['categoryOption', 'category', 'categoryCombo', 'categoryOptionCombo', 'categoryOptionGroup', 'categoryOptionGroupSet'] }, dataElementSection: { items: ['dataElement', 'dataElementGroup', 'dataElementGroupSet'] }, dataSetSection: { items: ['dataSet'] }, indicatorSection: { items: ['indicator', 'indicatorType', 'indicatorGroup', 'indicatorGroupSet', 'programIndicator', 'programIndicatorGroup'] }, organisationUnitSection: { items: ['organisationUnit', 'organisationUnitGroup', 'organisationUnitGroupSet', 'organisationUnitLevel'] }, programSection: { items: ['program', 'trackedEntityAttribute', 'trackedEntityAttributeGroup', 'relationshipType', 'trackedEntity', 'programRule', 'programRuleVariable'] }, validationSection: { items: ['validationRule', 'validationRuleGroup', 'validationNotificationTemplate'] }, otherSection: { items: ['constant', 'attribute', 'optionSet', 'legendSet', 'predictor', 'pushAnalysis', 'externalMapLayer', 'dataApprovalLevel', 'dataApprovalWorkflow'] } }; } export function getSectionForType(modelType) { var config = getSideBarConfig(); return Object.keys(config).find(function (section) { return config[section] && config[section].items && config[section].items.indexOf(modelType) >= 0; }); } /** * Type details: * * - filters: Add controls for filtering the model list on these properties * - columns: Override the default columns in the data table */ var typeDetails = { category: { filters: ['dataDimensionType'], columns: ['displayName', 'dataDimensionType', 'publicAccess', 'lastUpdated'] }, categoryCombo: { filters: ['dataDimensionType'], columns: ['displayName', 'dataDimensionType', 'publicAccess', 'lastUpdated'] }, categoryOptionGroup: { filters: ['dataDimensionType'], columns: ['displayName', 'dataDimensionType', 'publicAccess', 'lastUpdated'] }, categoryOptionGroupSet: { filters: ['dataDimensionType'], columns: ['displayName', 'dataDimensionType', 'publicAccess', 'lastUpdated'] }, dataElement: { filters: ['domainType', 'valueType', 'categoryCombo'], columns: ['displayName', 'domainType', 'valueType', 'categoryCombo[displayName]', 'lastUpdated'] }, dataElementGroupSet: { columns: ['displayName', 'compulsory', 'publicAccess', 'lastUpdated'] }, dataSet: { filters: ['formType'], columns: ['displayName', 'formType', 'periodType', 'publicAccess', 'lastUpdated'] }, indicator: { filters: ['indicatorType'], columns: ['displayName', 'indicatorType[displayName]', 'publicAccess', 'lastUpdated'] }, indicatorType: { columns: ['displayName', 'factor', 'publicAccess', 'lastUpdated'] }, indicatorGroupSet: { columns: ['displayName', 'compulsory', 'publicAccess', 'lastUpdated'] }, organisationUnit: { columns: ['displayName', 'level', 'lastUpdated'] }, organisationUnitGroupSet: { columns: ['displayName', 'compulsory', 'dataDimension', 'publicAccess', 'lastUpdated'] }, trackedEntityAttribute: { filters: ['valueType', 'aggregationType'], columns: ['displayName', 'valueType', 'aggregationType', 'unique', 'confidential', 'lastUpdated'] }, program: { columns: ['displayName', 'publicAccess', 'lastUpdated'], defaultFilters: [['programType', 'WITHOUT_REGISTRATION']] }, programIndicator: { filters: ['program'], columns: ['displayName', 'program[displayName]', 'lastUpdated'] }, programRule: { filters: ['program'], columns: ['displayName', 'program[displayName]', 'lastUpdated'] }, programRuleVariable: { filters: ['program', 'programRuleVariableSourceType'], columns: ['displayName', 'program[displayName]', 'programRuleVariableSourceType', 'lastUpdated'] }, validationRule: { columns: ['displayName', 'importance', 'periodType', 'publicAccess', 'lastUpdated'] }, constant: { columns: ['displayName', 'value', 'lastUpdated'] }, attribute: { columns: ['displayName', 'valueType', 'mandatory', 'unique', 'publicAccess', 'lastUpdated'] }, optionSet: { columns: ['displayName', 'valueType', 'lastUpdated'] }, predictor: { columns: ['displayName', 'output[displayName]', 'periodType', 'lastUpdated'] }, pushAnalysis: { columns: ['displayName', 'dashboard[displayName]', 'lastUpdated'] }, externalMapLayer: { columns: ['displayName', 'mapLayerPosition', 'mapService', 'lastUpdated'] }, dataApprovalLevel: { columns: ['displayName', 'level', 'orgUnitLevel', 'categoryOptionGroupSet[displayName]', 'publicAccess', 'lastUpdated'] }, dataApprovalWorkflow: { columns: ['displayName', 'periodType', 'publicAccess', 'lastUpdated'] } }; export function getFilterFieldsForType(modelType) { if (typeDetails.hasOwnProperty(modelType) && typeDetails[modelType].hasOwnProperty('filters')) { return typeDetails[modelType].filters; } return []; } export function getFiltersForType(modelType) { if (typeDetails.hasOwnProperty(modelType) && typeDetails[modelType].hasOwnProperty('filters')) { return typeDetails[modelType].filters.reduce(function (f, filters) { f[filters] = null; return f; }, {}); } return []; } export function getTableColumnsForType(modelType) { var preservePropNames = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; if (typeDetails.hasOwnProperty(modelType) && typeDetails[modelType].hasOwnProperty('columns')) { return typeDetails[modelType].columns.map(function (col) { return preservePropNames ? col : col.replace(/(\w*)\[(\w*)]/, '$1___$2'); }); } // Default columns: return ['displayName', 'publicAccess', 'lastUpdated']; } export function getDefaultFiltersForType(modelType) { if (typeDetails.hasOwnProperty(modelType) && typeDetails[modelType].hasOwnProperty('defaultFilters') && Array.isArray(typeDetails[modelType].defaultFilters)) { return typeDetails[modelType].defaultFilters; } return []; } export default { getSideBarConfig: getSideBarConfig };