mirror of https://github.com/abpframework/abp.git
3 changed files with 194 additions and 2 deletions
@ -0,0 +1,192 @@ |
|||||
|
var abp = abp || {}; |
||||
|
(function () { |
||||
|
abp.ui = abp.ui || {}; |
||||
|
abp.ui.extensions = abp.ui.extensions || {}; |
||||
|
|
||||
|
abp.ui.extensions.ActionList = function () { |
||||
|
return new abp.utils.common.LinkedList(); |
||||
|
}; |
||||
|
|
||||
|
abp.ui.extensions.ColumnList = function () { |
||||
|
return new abp.utils.common.LinkedList(); |
||||
|
}; |
||||
|
|
||||
|
abp.ui.extensions.entityActions = (function () { |
||||
|
var _callbackLists = {}; |
||||
|
|
||||
|
function _get(name) { |
||||
|
var callbackList = _callbackLists[name]; |
||||
|
|
||||
|
if (!callbackList) { |
||||
|
callbackList = _callbackLists[name] = []; |
||||
|
} |
||||
|
|
||||
|
return { |
||||
|
addContributor: _addContributor, |
||||
|
get actions() { |
||||
|
return _getActions(); |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
function _addContributor(contributeCallback, order) { |
||||
|
if (order === undefined || order >= callbackList.length) { |
||||
|
callbackList.push(contributeCallback); |
||||
|
} else if (order === 0) { |
||||
|
callbackList.unshift(contributeCallback); |
||||
|
} else { |
||||
|
callbackList.splice(order, 0, contributeCallback); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
function _getActions() { |
||||
|
var actionList = new abp.ui.extensions.ActionList(); |
||||
|
|
||||
|
callbackList.forEach(function (callback) { |
||||
|
callback(actionList); |
||||
|
}); |
||||
|
|
||||
|
return actionList; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return { |
||||
|
get: _get |
||||
|
}; |
||||
|
})(); |
||||
|
|
||||
|
abp.ui.extensions.tableColumns = (function () { |
||||
|
var _callbackLists = {}; |
||||
|
|
||||
|
function _get(name) { |
||||
|
var callbackList = _callbackLists[name]; |
||||
|
|
||||
|
if (!callbackList) { |
||||
|
callbackList = _callbackLists[name] = []; |
||||
|
} |
||||
|
|
||||
|
return { |
||||
|
addContributor: _addContributor, |
||||
|
get columns() { |
||||
|
return _getColumns(); |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
function _addContributor(contributeCallback, order) { |
||||
|
if (order === undefined || order >= callbackList.length) { |
||||
|
callbackList.push(contributeCallback); |
||||
|
} else if (order === 0) { |
||||
|
callbackList.unshift(contributeCallback); |
||||
|
} else { |
||||
|
callbackList.splice(order, 0, contributeCallback); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
function _getColumns() { |
||||
|
var columnList = new abp.ui.extensions.ColumnList(); |
||||
|
|
||||
|
callbackList.forEach(function (callback) { |
||||
|
callback(columnList); |
||||
|
}); |
||||
|
|
||||
|
return columnList; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return { |
||||
|
get: _get |
||||
|
}; |
||||
|
})(); |
||||
|
|
||||
|
function initializeObjectExtensions() { |
||||
|
|
||||
|
function localizeDisplayName(propertyName, displayName) { |
||||
|
if (displayName && displayName.name) { |
||||
|
return abp.localization.localize(displayName.name, displayName.resource); |
||||
|
} |
||||
|
|
||||
|
if (abp.localization.isLocalized('DisplayName:' + propertyName)) { |
||||
|
return abp.localization.localize('DisplayName:' + propertyName); |
||||
|
} |
||||
|
|
||||
|
return abp.localization.localize(propertyName); |
||||
|
} |
||||
|
|
||||
|
function configureTableColumns(tableName, columnConfigs) { |
||||
|
abp.ui.extensions.tableColumns.get(tableName) |
||||
|
.addContributor( |
||||
|
function (columnList) { |
||||
|
columnList.addManyTail(columnConfigs); |
||||
|
} |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
function getTableProperties(objectConfig) { |
||||
|
var propertyNames = Object.keys(objectConfig.properties); |
||||
|
var tableProperties = []; |
||||
|
for (var i = 0; i < propertyNames.length; i++) { |
||||
|
var propertyName = propertyNames[i]; |
||||
|
var propertyConfig = objectConfig.properties[propertyName]; |
||||
|
if (propertyConfig.ui.onTable.isVisible) { |
||||
|
tableProperties.push({ |
||||
|
name: propertyName, |
||||
|
config: propertyConfig |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return tableProperties; |
||||
|
} |
||||
|
|
||||
|
function convertPropertiesToColumnConfigs(properties) { |
||||
|
var columnConfigs = []; |
||||
|
|
||||
|
for (var i = 0; i < properties.length; i++) { |
||||
|
var tableProperty = properties[i]; |
||||
|
columnConfigs.push({ |
||||
|
title: localizeDisplayName(tableProperty.name, tableProperty.config.displayName), |
||||
|
data: "extraProperties." + tableProperty.name |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
return columnConfigs; |
||||
|
} |
||||
|
|
||||
|
function configureEntity(moduleName, entityName, entityConfig) { |
||||
|
var tableProperties = getTableProperties(entityConfig); |
||||
|
|
||||
|
if (tableProperties.length > 0) { |
||||
|
var tableName = abp.utils.toCamelCase(moduleName) + "." + abp.utils.toCamelCase(entityName); |
||||
|
var columnConfigs = convertPropertiesToColumnConfigs(tableProperties); |
||||
|
configureTableColumns( |
||||
|
tableName, |
||||
|
columnConfigs |
||||
|
); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
function configureModule(moduleName, moduleConfig) { |
||||
|
var entityNames = Object.keys(moduleConfig.entities); |
||||
|
for (var i = 0; i < entityNames.length; i++) { |
||||
|
configureEntity( |
||||
|
moduleName, |
||||
|
entityNames[i], |
||||
|
moduleConfig.entities[entityNames[i]] |
||||
|
); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
var moduleNames = Object.keys(abp.objectExtensions.modules); |
||||
|
|
||||
|
for (var i = 0; i < moduleNames.length; i++) { |
||||
|
configureModule( |
||||
|
moduleNames[i], |
||||
|
abp.objectExtensions.modules[moduleNames[i]] |
||||
|
); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
abp.event.on('abp.configurationInitialized', function () { |
||||
|
initializeObjectExtensions(); |
||||
|
}); |
||||
|
|
||||
|
})(); |
||||
Loading…
Reference in new issue