diff --git a/assets/js/build-min.js b/assets/js/build-min.js
index 7dfa37df..f46def49 100644
--- a/assets/js/build-min.js
+++ b/assets/js/build-min.js
@@ -119,6 +119,8 @@ DatabaseTable.prototype.cmdDeleteTable=function(ev){var $target=$(ev.currentTarg
$.oc.confirm($target.data('confirm'),this.proxy(this.deleteConfirmed))}
DatabaseTable.prototype.cmdUnModifyForm=function(){var $masterTabPane=this.getMasterTabsActivePane()
this.unmodifyTab($masterTabPane)}
+DatabaseTable.prototype.cmdAddIdColumn=function(ev){var $target=$(ev.currentTarget),added=this.addIdColumn($target)
+if(!added){alert($target.closest('form').attr('data-lang-id-exists'))}}
DatabaseTable.prototype.cmdAddTimestamps=function(ev){var $target=$(ev.currentTarget),added=this.addTimeStampColumns($target,['created_at','updated_at'])
if(!added){alert($target.closest('form').attr('data-lang-timestamps-exist'))}}
DatabaseTable.prototype.cmdAddSoftDelete=function(ev){var $target=$(ev.currentTarget),added=this.addTimeStampColumns($target,['deleted_at'])
@@ -135,10 +137,10 @@ if(column=='allow_null'&&value){updatedRow.primary_key=0}
if(column=='primary_key'&&!value){updatedRow.auto_increment=0}
$target.table('setRowValues',rowIndex,updatedRow)}
DatabaseTable.prototype.onTableLoaded=function(){$(document).trigger('render')
-var $masterTabPane=this.getMasterTabsActivePane(),$form=$masterTabPane.find('form'),$toolbar=$masterTabPane.find('div[data-control=table] div.toolbar'),$button=$('')
-$button.text($form.attr('data-lang-add-timestamps'));$toolbar.append($button)
-$button=$('')
-$button.text($form.attr('data-lang-add-soft-delete'));$toolbar.append($button)}
+var $masterTabPane=this.getMasterTabsActivePane(),$form=$masterTabPane.find('form'),$toolbar=$masterTabPane.find('div[data-control=table] div.toolbar'),$addIdButton=$(''),$addTimestampsButton=$(''),$addSoftDeleteButton=$('')
+$addIdButton.text($form.attr('data-lang-add-id'));$toolbar.append($addIdButton)
+$addTimestampsButton.text($form.attr('data-lang-add-timestamps'));$toolbar.append($addTimestampsButton)
+$addSoftDeleteButton.text($form.attr('data-lang-add-soft-delete'));$toolbar.append($addSoftDeleteButton)}
DatabaseTable.prototype.registerHandlers=function(){this.indexController.$masterTabs.on('oc.tableCellChanged',this.proxy(this.onTableCellChanged))}
DatabaseTable.prototype.validateTable=function($target){var tableObj=this.getTableControlObject($target)
tableObj.unfocusTable()
@@ -167,10 +169,19 @@ tableObj.unfocusTable()
var data=this.getTableData($target),result=[]
for(var index in data){if(data[index].name!==undefined){result.push($.trim(data[index].name))}}
return result}
+DatabaseTable.prototype.addIdColumn=function($target){var existingColumns=this.getColumnNames($target),added=false
+if(existingColumns.indexOf('id')===-1){var tableObj=this.getTableControlObject($target),currentData=this.getTableData($target),rowData={name:'id',type:'integer',unsigned:true,auto_increment:true,primary_key:true,}
+if(currentData.length-1||currentData[0].name||currentData[0].type||currentData[0].length||currentData[0].unsigned||currentData[0].nullable||currentData[0].auto_increment||currentData[0].primary_key||currentData[0].default){tableObj.addRecord('bottom',true)}
+tableObj.setRowValues(currentData.length-1,rowData)
+tableObj.addRecord('bottom',false)
+tableObj.deleteRecord()
+added=true}
+if(added){$target.trigger('change')}
+return added}
DatabaseTable.prototype.addTimeStampColumns=function($target,columns)
{var existingColumns=this.getColumnNames($target),added=false
for(var index in columns){var column=columns[index]
-if($.inArray(column,existingColumns)==-1){this.addTimeStampColumn($target,column)
+if(existingColumns.indexOf(column)===-1){this.addTimeStampColumn($target,column)
added=true}}
if(added){$target.trigger('change')}
return added}
@@ -810,4 +821,4 @@ return $input.val()}
LocalizationProcessor.prototype.removeLocalizationInput=function(){if(!this.localizationInput){return}
this.localizationInput.dispose()
this.localizationInput=null}
-$.oc.table.processor.builderLocalization=LocalizationProcessor;}(window.jQuery);
\ No newline at end of file
+$.oc.table.processor.builderLocalization=LocalizationProcessor;}(window.jQuery);
diff --git a/assets/js/builder.index.entity.databasetable.js b/assets/js/builder.index.entity.databasetable.js
index a2afaa40..9b9e3b2a 100644
--- a/assets/js/builder.index.entity.databasetable.js
+++ b/assets/js/builder.index.entity.databasetable.js
@@ -86,6 +86,15 @@
this.unmodifyTab($masterTabPane)
}
+ DatabaseTable.prototype.cmdAddIdColumn = function(ev) {
+ var $target = $(ev.currentTarget),
+ added = this.addIdColumn($target)
+
+ if (!added) {
+ alert($target.closest('form').attr('data-lang-id-exists'))
+ }
+ }
+
DatabaseTable.prototype.cmdAddTimestamps = function(ev) {
var $target = $(ev.currentTarget),
added = this.addTimeStampColumns($target, ['created_at', 'updated_at'])
@@ -159,14 +168,18 @@
var $masterTabPane = this.getMasterTabsActivePane(),
$form = $masterTabPane.find('form'),
$toolbar = $masterTabPane.find('div[data-control=table] div.toolbar'),
- $button = $('')
+ $addIdButton = $(''),
+ $addTimestampsButton = $(''),
+ $addSoftDeleteButton = $('')
- $button.text($form.attr('data-lang-add-timestamps'));
- $toolbar.append($button)
+ $addIdButton.text($form.attr('data-lang-add-id'));
+ $toolbar.append($addIdButton)
- $button = $('')
- $button.text($form.attr('data-lang-add-soft-delete'));
- $toolbar.append($button)
+ $addTimestampsButton.text($form.attr('data-lang-add-timestamps'));
+ $toolbar.append($addTimestampsButton)
+
+ $addSoftDeleteButton.text($form.attr('data-lang-add-soft-delete'));
+ $toolbar.append($addSoftDeleteButton)
}
// INTERNAL METHODS
@@ -257,6 +270,42 @@
return result
}
+ DatabaseTable.prototype.addIdColumn = function($target) {
+ var existingColumns = this.getColumnNames($target),
+ added = false
+
+ if (existingColumns.indexOf('id') === -1) {
+ var tableObj = this.getTableControlObject($target),
+ currentData = this.getTableData($target),
+ rowData = {
+ name: 'id',
+ type: 'integer',
+ unsigned: true,
+ auto_increment: true,
+ primary_key: true,
+ }
+
+ if (currentData.length - 1 || currentData[0].name || currentData[0].type || currentData[0].length || currentData[0].unsigned || currentData[0].nullable || currentData[0].auto_increment || currentData[0].primary_key || currentData[0].default) {
+ tableObj.addRecord('bottom', true)
+ }
+
+ tableObj.setRowValues(currentData.length - 1, rowData)
+
+ // Forces the table to apply values
+ // from the data source
+ tableObj.addRecord('bottom', false)
+ tableObj.deleteRecord()
+
+ added = true
+ }
+
+ if (added) {
+ $target.trigger('change')
+ }
+
+ return added
+ }
+
DatabaseTable.prototype.addTimeStampColumns = function($target, columns)
{
var existingColumns = this.getColumnNames($target),
@@ -265,7 +314,7 @@
for (var index in columns) {
var column = columns[index]
- if ($.inArray(column, existingColumns) == -1) {
+ if (existingColumns.indexOf(column) === -1) {
this.addTimeStampColumn($target, column)
added = true
}
@@ -289,7 +338,7 @@
}
tableObj.addRecord('bottom', true)
- tableObj.setRowValues(currentData.length-1, rowData)
+ tableObj.setRowValues(currentData.length - 1, rowData)
// Forces the table to apply values
// from the data source
@@ -311,4 +360,4 @@
$.oc.builder.entityControllers.databaseTable = DatabaseTable;
-}(window.jQuery);
\ No newline at end of file
+}(window.jQuery);
diff --git a/behaviors/indexdatabasetableoperations/partials/_tab.htm b/behaviors/indexdatabasetableoperations/partials/_tab.htm
index 4d690a00..2cb010c3 100644
--- a/behaviors/indexdatabasetableoperations/partials/_tab.htm
+++ b/behaviors/indexdatabasetableoperations/partials/_tab.htm
@@ -4,12 +4,14 @@
'data-window-close-confirm' => e(trans('backend::lang.form.confirm_tab_close')),
'data-entity' => 'database',
'onsubmit' => 'return false',
+ 'data-lang-add-id' => e(trans('rainlab.builder::lang.database.btn_add_id')),
'data-lang-add-timestamps' => e(trans('rainlab.builder::lang.database.btn_add_timestamps')),
'data-lang-add-soft-delete' => e(trans('rainlab.builder::lang.database.btn_add_soft_deleting')),
+ 'data-lang-id-exists' => e(trans('rainlab.builder::lang.database.id_exists')),
'data-lang-timestamps-exist' => e(trans('rainlab.builder::lang.database.timestamps_exist')),
'data-lang-soft-deleting-exist' => e(trans('rainlab.builder::lang.database.soft_deleting_exist')),
]) ?>
= $form->render() ?>
-= Form::close() ?>
\ No newline at end of file
+= Form::close() ?>
diff --git a/lang/en/lang.php b/lang/en/lang.php
index 597a2488..92c566cf 100644
--- a/lang/en/lang.php
+++ b/lang/en/lang.php
@@ -57,8 +57,10 @@
'tab_new_table' => 'New table',
'btn_add_column' => 'Add column',
'btn_delete_column' => 'Delete column',
+ 'btn_add_id' => 'Add ID',
'btn_add_timestamps' => 'Add timestamps',
'btn_add_soft_deleting' => 'Add soft deleting support',
+ 'id_exists' => 'ID column already exists in the table.',
'timestamps_exist' => 'created_at and deleted_at columns already exist in the table.',
'soft_deleting_exist' => 'deleted_at column already exists in the table.',
'confirm_delete' => 'Delete the table?',