'use strict'; angular.module('ffffngAdmin').config(function(NgAdminConfigurationProvider, Constraints) { function formatMoment(unix) { return unix ? moment.unix(unix).fromNow() : 'N/A'; } function nodeConstraint(field) { var constraint = Constraints.node[field]; var result = { required: !constraint.optional }; if (constraint.type === 'string') { result.pattern = constraint.regex; } return result; } var nga = NgAdminConfigurationProvider; var admin = nga.application('Knotenverwaltung - Admin-Panel'); admin .baseApiUrl('/internal/api/') .debug(true); function nodeClasses(node) { if (!node) { return; } return; } var nodes = nga.entity('nodes').label('Nodes').identifier(nga.field('token')); nodes .listView() .title('Nodes') .actions([]) .batchActions([]) .exportFields([]) .fields([ nga.field('token').cssClasses(nodeClasses), nga.field('hostname').cssClasses(nodeClasses), nga.field('monitoring').cssClasses(nodeClasses).template(function (node) { if (!node.values.monitoring) { return ''; } return node.values.monitoringConfirmed ? '' : ''; }) ]) .listActions([ 'edit', 'delete' ]) ; nodes .editionView() .title('Edit node') .actions(['list', 'delete']) .addField(nga.field('token').editable(false)) .addField(nga.field('hostname').label('Name').validation(nodeConstraint('hostname'))) .addField(nga.field('key').label('Key').validation(nodeConstraint('key'))) .addField(nga.field('mac').label('MAC').validation(nodeConstraint('mac'))) .addField(nga.field('coords').label('GPS').validation(nodeConstraint('coords'))) .addField(nga.field('nickname').validation(nodeConstraint('nickname'))) .addField(nga.field('email').validation(nodeConstraint('email'))) .addField(nga.field('monitoring', 'boolean').validation(nodeConstraint('monitoring'))) .addField(nga.field('monitoringConfirmed').label('Monitoring confirmation').editable(false).map( function (monitoringConfirmed, node) { if (!node.monitoring) { return 'N/A'; } return monitoringConfirmed ? 'confirmed' : 'pending'; } )) ; admin.addEntity(nodes); function taskClasses(task) { if (!task) { return; } return task.values.enabled ? 'task-enabled' : 'task-disabled'; } var tasks = nga.entity('tasks').label('Background-Jobs'); tasks .listView() .title('Background-Jobs') .actions([]) .batchActions([]) .exportFields([]) .fields([ nga.field('id').cssClasses(taskClasses), nga.field('name').cssClasses(taskClasses), nga.field('schedule').cssClasses(taskClasses), nga.field('state').cssClasses(taskClasses), nga.field('runningSince').map(formatMoment).cssClasses(taskClasses), nga.field('lastRunStarted').map(formatMoment).cssClasses(taskClasses) ]) .listActions( ' ' + ' ' + '' ) ; admin.addEntity(tasks); admin.menu( nga.menu() .addChild(nga .menu(nodes) .icon('') ) .addChild(nga .menu(tasks) .icon('') ) .addChild(nga .menu() .template( '' + ' Logs' + '' ) ) ); nga.configure(admin); });