Custom fields feature.

This commit is contained in:
Ahmed Bouhuolia
2019-09-13 20:24:09 +02:00
parent cba17739d6
commit ed4d37c8fb
64 changed files with 2307 additions and 121 deletions

View File

@@ -120,4 +120,51 @@ factory.define('resource', 'resources', () => ({
name: faker.lorem.word(),
}));
factory.define('view', 'views', async () => {
const resource = await factory.create('resource');
return {
name: faker.lorem.word(),
resource_id: resource.id,
predefined: false,
};
});
factory.define('resource_field', 'resource_fields', async () => {
const resource = await factory.create('resource');
const dataTypes = ['select', 'date', 'text'];
return {
label_name: faker.lorem.words(),
data_type: dataTypes[Math.floor(Math.random() * dataTypes.length)],
help_text: faker.lorem.words(),
default: faker.lorem.word(),
resource_id: resource.id,
active: true,
predefined: false,
};
});
factory.define('view_role', 'view_roles', async () => {
const view = await factory.create('view');
const field = await factory.create('resource_field');
return {
view_id: view.id,
index: faker.random.number(),
field_id: field.id,
value: '',
comparator: '',
};
});
factory.define('view_has_columns', 'view_has_columns', async () => {
const view = await factory.create('view');
const field = await factory.create('resource_field');
return {
field_id: field.id,
view_id: view.id,
};
});
export default factory;

View File

@@ -0,0 +1,16 @@
exports.up = function (knex) {
return knex.schema.createTable('resource_fields', (table) => {
table.increments();
table.string('label_name');
table.string('data_type');
table.string('help_text');
table.string('default');
table.boolean('active');
table.boolean('predefined');
table.json('options');
table.integer('resource_id').unsigned().references('id').inTable('resources');
});
};
exports.down = (knex) => knex.schema.dropTableIfExists('resource_fields');

View File

@@ -0,0 +1,10 @@
exports.up = function (knex) {
return knex.schema.createTable('view_has_columns', (table) => {
table.increments();
table.integer('view_id').unsigned();
table.integer('field_id').unsigned();
});
};
exports.down = (knex) => knex.schema.dropTableIfExists('view_has_columns');

View File

@@ -0,0 +1,13 @@
exports.up = function (knex) {
return knex.schema.createTable('view_roles', (table) => {
table.increments();
table.integer('index');
table.integer('field_id').unsigned().references('id').inTable('resource_fields');
table.string('comparator');
table.string('value');
table.integer('view_id').unsigned();
});
};
exports.down = (knex) => knex.schema.dropTableIfExists('view_roles');

View File

@@ -0,0 +1,11 @@
exports.up = function (knex) {
return knex.schema.createTable('views', (table) => {
table.increments();
table.string('name');
table.boolean('predefined');
table.integer('resource_id').unsigned().references('id').inTable('resources');
});
};
exports.down = (knex) => knex.schema.dropTableIfExists('views');