Features¶
Note
We are working on the new documentation website, based on markdown files (md) and generated using awesome MkDocs generator tool
Upcoming Release¶
Not released, yet
2024/03¶
NEW
Toggle Visibility of Children Tab Columns
AppGiniHelper.dv.getChildrenTabs().enableToggle();
NEW
Scrollable Table with sticky header
AppGiniHelper.tv.addStickyButton();
NEW
Theming
AppGiniHelper.getNavbar().setColor(AppGiniNavbarColors.officeBlue());
2023/05/13¶
New
New featurechildrentab.addPanel(VerticalPosition.Top)
New
New featurechildrentab.addPanel(VerticalPosition.Bottom)
NEW
New featureDV.getChildrenTabs().waitForTab(...)
executes a callback function after dynamically loaded childrentab exists.
2023/02/25¶
NEW
New featureDV.getFields(...).include(...)
allows us to add fields to an existingAppGiniFields
collection.NEW
New featureDV.getFields(...).exclude(...)
allows us to remove fields from an existingAppGiniFields
-collection.NEW
New featureDV.getField("fn").include(...)
converts anAppGiniField
-object (single field variable) into a multi-fieldAppGiniFields
-object (multiple fields container)
2023/02/22¶
NEW
Added support forAppGiniHelper.DV.getField("textarea_field").toStatic()
NEW
Added support forAppGiniHelper.DV.getField("date_field").toStatic()
NEW
Added support forAppGiniHelper.DV.getField("richtext_field..").toStatic()
2023/02/14¶
-
NEW
Disable/enable input- and lookup-controlsAppGiniHelper.DV.getField("name").disable()
AppGiniHelper.DV.getField("name").enable()
-
NEW
Add custom buttons to fields (field-toolbar)
AppGiniHelper.DV.getField("...").getToolbar().add(...)
2023/02/09¶
NEW
Control debugging-/logging-level
AppGiniHelper.setDebug(DebugLevel.Debug);
2023/02/08¶
NEW
AppGiniHelper. DV.showOverlay(text)
NEW
AppGiniHelper. DV.showOverlay(html, true)
NEW
AppGiniHelper. TV.showOverlay(text)
NEW
AppGiniHelper. TV.showOverlay(html, true)
2023/02/07¶
NEW
DV.getField("...").autoDisableButtons()
Disable "eye"-buttons next to empty lookupsNEW
DV.getField("...").autoHideButtons()
Hide "eye"-buttons next to empty lookupsNEW
AppGiniHelper. DV.replaceViewIcons("icon")
Change icon of all "eye"-buttons in Detail ViewNEW
AppGiniHelper. DV.replaceViewIcon("TABLENAME", "icon");
Change icon of "eye"-buttons per table in Detail ViewNEW
AppGiniHelper. DV.replaceViewIcon("TABLENAME", "icon", "caption")
Change icon of "eye"-buttons and append button caption per table in Detail View
2023/02/01¶
UPD
AppGiniHelper. DV.getField("email-fieldname").toStatic()
Automatically disables and hides the 'pencil'-button for editing Email-field valuesUPD
AppGiniHelper.getCommon().autoReload()
3rd (boolean-) parameter controls automatic fade-out of nabvar after 5 seconds of inactivity.
2023/01/04¶
NEW
DV.getFields([...]).toColumns()
Method got an additional parameter for adding a custom label.
Additionally, the appearance of lookups has been improved slightly.
See also: Bugfix for lookups
Release 2022/12¶
NEW
Layout Fields in Columns
This allows you to accurately arrange fields and their labels in columnsNEW
Conditional Notifications in Detail View
allows you to toggle visibility of custom notifications, for example alerts, depending on custom conditions-
NEW
Custom user settings Browser Settings, stored in Browser (localStorage
) with autogenerated UI -
NEW
FIX for Detail-View-Problem with required fields on Cancel-click and Delete-click
See here NEW
Detail View / Insert-Mode or Edit-Mode
Detect Mode (insert/update)NEW
Detail View / Get the primary key (id) of current record
Get Primary Key (ID)NEW
Table View / Styling cellsNEW
Table View / AutoSize columnsNEW
Table View / toLookupButton()NEW
Table View / toLookupButtonModal()NEW
Table View / copy cell value buttonsNEW
Customization of Quicksearch-
NEW
tv.autoFitRowHeader()
changes width of first column.
Useful if you have added links or buttons usingtv.addLink()
ortv.addButton()
-
NEW
Right-align numeric input / 3rd Parameter dv.getField("value").toNumber("de",2, true);
dv.getField("value").toNumber("de",2, false);
NEW
.insertXXX()
functions now also work on multiple fields for example if you want to add multipe horizonal lines<hr/>
above multiple fieldsdv.getFields(["field1", "field2", "field2"]).insertAbove().hr();
- In the past this was only possible for a single field using
dv.getField("field1").insertAbove().hr();
-
This applies to
insertAbove()
,insertBefore()
,insertAfter()
,insertBelow()
-
NEW
AppGiniHelper.LV.redirectRegistration("url");
NEW
AppGiniHelper.LV.redirectRegistration("url", "target");
-
NEW
(experimental)dv.autoCalcTabsHeight();
- When using custom tabs, this function will automatically get the maximum height of all existing custom tabs and apply that height to all tabs. This may result in a better UI with less scolling when activating a different tab
-
NEW
(experimental)tv.autoPanning()
- Automatically scroll down long pages (visible) page by page
-
NEW
dv.getActionButtons().getAdminButton().fix("icon", Variation);
1 2 3 4 |
|
-
See origin https://forums.appgini.com/phpbb/viewtopic.php?p=17962#p17962
-
NEW
auto-hiding AppGini's default submit button which sometimes appears at the top of the page
could be obsolete now since latest AppGini version
RELEASE 2021-07¶
-
NEW
dv.getField("inputfield").lock(true);
// true|false- adds a lock-button next to field
- applies to simple
<input/>
fields, only
-
NEW
dv.getChildrenTabs().hideTabs();
NEW
dv.getChildrenTabs().showTabs();
-
NEW
dv.getChildrenTabs().compact(5);
- decreases the padding inside children-tab-captions to get more space. Useful escpecially if you habe many children-tabs
-
NEW
dv.getChildrenTabs().sort( ["tablename1", "tablename2", "..."], true, true );
- parameters:
1 2 3 4
1. array of table names 2. boolean: auto activate first tab 3. boolean: auto hide tabs on load, then auto-show tabs after sorting * TODO: Validate and Test this function
- parameters:
-
NEW
dv.getChildrenTabs().append( ["tablename98", "tablename99", "..."], true);
-
NEW
dv.getChildrenTabs().get("tn", "cn").removeButtons();
- removes the default "open modal" button
-
UPD
common.autoRedirect(true);
- By passing true the auto redirect function will also work if we have a referrer, for example when navigating between aan unrestricted page and a restricted page, not only when opening up a new broser tab.
- For backward compatibility, the default value is "false".
-
NEW
dv.getChildrenLinks().hide();
-
NEW
dv.getChildrenLinks().removeHR();
-
NEW
get dv action buttons and modify them:- dv.getActionButtons().getSaveButton() ...
- dv.getActionButtons().getDeleteButton() ...
- dv.getActionButtons().getBackButton() ...
- dv.getActionButtons().getInsertButton() ...
- ... .hide();
- ... .show();
-
NEW
dv.getFields(["field1", "field2", "..."]).hideLabels(); UPD
better dropdown button style fixNEW
tab.addButtonNEW
tab.addButtonOpenNEW
tab.addButtonOpenModalNEW
tab.addLinkNEW
tab.addLinkModalNEW
tab.addBadge(123); // numberNEW
tab.addBadgeIf(condition, number); // condition: boolean, number: numeric-
NEW
(experimental) Modification of children tabs (bottom area of DV) var tabs = dv.getChildrenTabs(); var tab = tabs.get("tablename"); var tab.label("New Tab Caption"); -
NEW
TV.getCells("fieldname"); Example TV.getCells("name").addClass("danger"); -
NEW
TV.addButton callback function now receives two parameters: 1st: pk / primary key of that row 2nd: data / all values of that row -
NEW
TV.addButton new 5th parameter onBeforeRender for very flexible customizationExample: AppGiniHelper.TV.addButton( function (id, data) { } , "shopping-cart" , "Kaufoptionen" , Variation.default , function (id, data) { // your code here data.text = "text"; // custom text for this row data.icon = "cog"; // custom icon for this row data.variation = Variation.primary; // custom variation for this row data.skip = false; // when skip=true the button will NOT be rendered } )
-
NEW
common.fix() now fixes and moves the new "Import CSV" button to the right
TODO JSE
NEW
common.navbar.expand(); removed the gap between last button and right margin in navbar caused by a min-width styleNEW
get and use translated labels from language.php (server) in javascript (client) var text = AppGiniCommon.T["key"]; Example: in language.php (serverside) there is a translation: 'save changes' => 'Save changes', you can use this translation in javascript (clientside) for example for custom buttons var text = AppGiniCommon.T['save changes']; Tip: You can make it even shorter const T = AppGiniCommon.T; var text = T['save changes'];
RELEASE 2020-10-26-1¶
NEW
AppGiniHelperHideVersionInformationNEW
(Experimental) email fieldsNEW
(unsupported, experimental) AppGiniHelper. TV.linkParent("fk_col_name", "master_table")NEW
(unsupported, experimental) AppGiniHelper. TV.linkSelf()-
NEW
(experimental) replace default checkboxes in table view by custom characters AppGiniHelper.Defaults.tv_replaceCheckboxes = true; Find your own characters for example here: https://www.amp-what.com/unicode/search/check -
NEW
AppGiniHelper.currentUserName NEW
AppGiniHelper.currentTableNameNEW
AppGiniHelper. DVNEW
AppGiniHelper. TV-
NEW
(Alpha) On submit/leaving a deail view: loading-effect see also: https://forums.appgini.com/phpbb/viewtopic.php?f=13&t=3476 AppGiniHelper.Defaults.onLeave = "blur"; AppGiniHelper.Defaults.onLeave = "hide"; AppGiniHelper.Defaults.onLeave = ""; // any other value -
NEW
var tv = AppGiniTableView.getInstance(); -
NEW
var dv = AppGiniDetailView.getInstance(); avoid duplicate initilization of AppGiniDetailView or AppGiniTableView If, for example, someone initializes new AppGiniDetailView() in header-extras.php AND tries to inizialize another new AppGiniDetailView() in TABLENAME-dv.js, there will be an exception. Correct usage: in header-extras: var dv = new AppGiniDetailView(); later on in TABLENAME-dv.js: var dv = AppGiniDetailView.getInstance(); Tip: If you are not sure, replace all new AppGiniDetailView() by AppGiniDetailView.getInstance() This is the same for AppGiniTableView.getInstance(); -
NEW
add one or more footer-panels below dv form var f1 = dv.addFooter(); f1.append("Hello bold world"); -
NEW
In children-tabs (below dv form) replace buttons: instead of opening up a modal edit dialog, open up the details in the same page Syntax: replaceButtons("icon", "size", "target") dv.getChildrenTabs() .replaceButtons("cog", "btn-block") .setMaxWidth(32); SetMaxWidth will size the first column for better UI Examples: dv.getChildrenTabs().replaceButtons("cog", "btn-block btn-primary", "_blank"); -
NEW
(Experimental) Move children links below the detail view form var dv = new AppGiniDetailView(); dv.getChildrenLinks().moveToBottom() -
NEW
(Experimental) panel left of table view and panel right of table view for custom links or buttons var tv = new AppGiniTableView(); var left = tv.getLeftPanel("Left Panel"); var right = tv.getRightPanel("Right Panel with formatted Header"); // configure widths of left panel, table (center) and right panel tv.setPanelWidths(0, 12, 0, BootstrapSize.xs); tv.setPanelWidths(0, 12, 12, BootstrapSize.sm); tv.setPanelWidths(0, 9, 3, BootstrapSize.md); tv.setPanelWidths(0, 7, 3, BootstrapSize.lg); right.addLink("Karte", "partners_map.php", "map-marker"); // add links to tv-panel // panel.addLink("text", "href", "icon") left.addLink("Kunden", "partners_view.php?tp=Kunde", "filter"); // add a button executing javascript left.addButton("My custom button", function () { }, "cog"); // add a text-only item to panel left.addDivider("Filter"); -
NEW
(Experimental) Listen to checkbox-check in table view Note: does NOT support check all/uncheck all, yet var tv = new AppGiniTableView(); tv.onSelectionChanged(function (selection) { console.log(selection); }); -
NEW
(Experimental) AppGiniHelper. Defaults.childrenTabsAutoExpand = true | false; true: (default) on load of detail view children tabs (at the bottom of dv page) will expand automaticaly -
NEW
(Experimental) AppGiniHelper. Defaults.childrenTabsAutoBadges = true | false; true: (default) after load of detail view the number of records will be shown in tabs -
NEW
(unsupported, experimental) Preparations for new AppGiniHelper-Inline-Editor (TV) (requires additional serverside product) -
NEW
(unsuported, experimental) Preparations for new AppGiniHelper-LIVE functions (requires additional serverside product)AppGiniCommon().live() AppGiniTableView().live() AppGiniDetailView().live()
-
NEW
AppGiniUrl.get("tablename"); // tablename_view.php NEW
AppGiniUrl.get("tablename", 123); // tablename_view.php? SelectedID=123NEW
new AppGiniTableView().setTitle("text");NEW
new AppGiniTableView().setTitleHtml("html text");NEW
new AppGiniTableView().addTitle(" of " + variable);NEW
new AppGiniTableView().addTitleHtml(" of " + variable + "");-
NEW
(Experimental) AppGiniHelper. Defaults.fixFieldMargins = true | false; true: vertical gaps between fields will be removed as good as possible after load false: no change -
NEW
align field labels above field-
dv.getField("fieldname").wrap();
-
Alternatives:
1 2
* `dv.getField("fieldname").wrap(true);` * `dv.getField("fieldname").unwrap(false);`
NEW
align field labels left of fielddv.getField("fieldname").unwrap();
-
Alternatives:
1 2
* `dv.getField("fieldname").unwrap(true);` * `dv.getField("fieldname").wrap(false);`
NEW
hide/show tabs with all fields
-
1 2 3 4 5 6 |
|
NEW
fadeOut/fadeIn tabs with all fields
1 2 3 4 5 6 |
|
-
NEW
(Experimental)new AppGiniField("fieldname").size(2);
-
NEW
(Experimental)new AppGiniFields(["field1", "field2", "..."]).toNumber("de-DE", 2);
-
NEW
(Experimental)new AppGiniField("fieldname").toNumber("de-DE", 2);
ordv.getField("fieldname").toNumber("de-DE", 2);
-
NEW
Removes all links from table view cells. This may be useful in combination with addButtonOpen()
1 2 3 |
|
RELEASE 2020-04-30-08¶
-
NEW
new AppGiniField("fieldname").insertBefore().div("inner", "classes");
-
NEW
new AppGiniField("fieldname").insertBefore().span("inner", "classes");
- Same for:
1 2 3 4 5 6
* .insertAbove() * .insertBelow() * .insertBefore() * .insertAfter() * .insertPrepend() * .insertAppend()
NEW
var tabs = dv.getTabs();
-
NEW
dv.getTabs().setPosition(TabPosition. Top);
-
Position:
-
TabPosition.Top | TabPosition.top | "top"
- TabPosition.Bottom | TabPosition.bottom | "bottom"
NEW
Shortcut function for quickly getting field handlesvar id_field = new AppGiniDetailView().getField(fieldname);
-
- Same for:
-
NEW
new AppGiniDetailView().getChildrenLinks().removeIcons();
-
NEW
new AppGiniDetailView().getChildrenLinks().replaceIcons();
-
NEW
(Experimental)new AppGiniDetailView().autoCompleteOff();
-
NEW
change login form:new AppGiniLoginView().fix();
1 2 3 |
|
NEW
fade in / fade out field
1 2 3 |
|
-
NEW
fade in / fade out multiple fields-
new AppGiniFields(["fieldname1", "fieldname2"]).fade(true);
-
new AppGiniFields(["fieldname1", "fieldname2"]).fade(false);
-
-
NEW
(unsupported, requires more testing and feedback) .addShortcut() function on AppGiniDetailView and AppGiniTableView allows to define keyvboard shortcuts for focusing inputs-
Syntax :
new AppGiniTableView().addShortcut("fieldname", keycode, CTRL)
-
Example:
new AppGiniTableView().addShortcut("appginihelper-navbar-search-input", 70, true); // CTRL+F sets focus on jQuery ("#appginihelper-navbar-search-input")
-
-
NEW
optimize screen-usage by widening table view:new AppGiniTableView().compact();
-
NEW
.ready callback now also available for AppGiniTableView:new AppGiniTableView().ready(function(){ ...your code here... });
-
NEW
newtv.addOpenButton()
function as a shortcut for new AppGiniTableView().addButton- This will add a button in the first column of table view which opens the record in detail view.
-
NEW
Add icons to default lookup buttons
1 2 3 4 5 6 7 8 |
|
-
NEW
change icon of lookup buttons (view parent / add new parent)new AppGiniField("partner_id").dropdown().fix("pencil", "plus");
- parameters
1 2 3
1. glyphicon name for view button 2 - glyphicon name for add button 3 - (optional) remove variant from add (boolean true|false)
- parameters
-
NEW
(unsupported) onChange-Handler for lookup now additionally sends the fieldname to the callback
1 2 3 4 5 6 7 8 |
|
-
NEW
change design of buttons next to lookup dropdowns...-
for a single dropdpwn:
new AppGiniField(fieldname).dropdown().fix();
-
for all dropdowns of a dv:
new AppGiniDetailView().fixDropdowns();
-
for a group of dropdpwn fields:
new AppGiniFields(["fieldname1", "fieldname2"]).fixDropdowns();
-
-
NEW
design fix for image fields: TABLENAME-dv.js /new AppGiniField("fieldname").fix();
- applies to image fields only
-
NEW
(BETA) When following a link (eg from email) and you are not logged in, AppGini will redirect you to login page after 2 seconds. After logging in you will be redirected to index-page, not to the entry-page. This behaviour can be changed now with the following command:
1 |
|
1 |
|
-
NEW
(Experimental / BETA) TableView: Merge identical cells (in column)-
tv.merge(["field1", "field2"]);
-
or
tv.merge("field");
-
Attention: cannot be combined with group-function because group adds additional rows which cannot be merged
-
-
NEW
(BETA) Tableview: Group rows. TODO: test-
new tv.group("product_id", false, false);
-
Parameters
1 2 3
* fields: string | string[] * accordion: boolean = true * autoHide: boolean = true
NEW
addLayout(...).add(..., [ "#Headline" ])
- will add a class "appginihelper-layout-header" now for further css customization
-
-
NEW
Automatically select text in quicksearch field for easy overwriting.- This is extremely helpful for barcode-scanning for example
- Syntax: Globally enable it for all tables in
hooks/header-extras.php
with: newAppGiniTableViewQuicksearch().autoselect(Autoselect.all);
Enable it for a single table in
hooks/TABLENAME-tv.js
on document ready with:new AppGiniTableView().quicksearch().autoselect(Autoselect.all);
- Others:
1 2 3
* .autoselect(Autoselect.start) * .autoselect(Autoselect.end) * .autoselect(Autoselect.range, start, len) // start: 1-based index, len = length of selection, for example Searchstring = "+49 431 / 12345-67". .autoselect(Autoselect.range, 17, 2) will select the _type "67"
NEW
(UNSUPPORTED) AutoComplete off for quicksearch- This may not work in all browsers.
-
NEW
new AppGiniCommon().fix().navbar();
-
NEW
new AppGiniCommon().fix().dropdowns();
-
NEW
(UNSUPPORTED): turn top navbar to the left hand side (sidebar):new AppGiniCommon().navbar.fix().toLeft(true);
- parameter
1 2
* true = also on homepage * false (default) = not on homepage
NEW
Tabs in detail view:new AppGiniDetailView().addTab("tab-name", "Title", "icon").add(["field1", "field2", "field3"]);
- parameter
-
NEW
shortcut for (collapsible) layout-rows with variations:new AppGiniDevailView().addLayout(widths[], title, canCollapse, isCollapsed, variation)
-
NEW
Link-Buttons in table view:new AppGiniTableView().addLink("http://...", "icon", "text", Variation.default, "Confirmation prompt - Are you sure?");
-
NEW
Buttons in table viewnew AppGiniTableVire().addButton(callback, "icon", "text", Variation.default);
-
NEW
Get custom title of detail view:-
dv.getTitle();
-
After (!) you have used
dv.setTitle("...")
once, you can use.getTitle()
to get the text-value (without html-formatting)
-
-
NEW
get name of current table in table viewAppGiniTableView().getTableName();
-
NEW
get name of current table in detail view:AppGiniDetailView().getTableName();
-
NEW
fix some UI for image fields:-
new AppGiniField("imagefield").fix();
-
May be obsolete now
-
-
NEW
layout rows now expandable with title:-
dv.addLayout([widths], "title", true|false, true|false, Variation.default);
-
parameter 3: expandable true|false
- parameter 4: expand by default = true
-
-
NEW
new AppGiniCommon().setHeight(48);
-
NEW
new AppGiniCommon().setColor(bg, fc);
-
NEW
(UNSUPPORTED)common.navbar.toLeft()
;- Use it, if it meets your requirements.
- There will be no support for this function
-
NEW
(UNSUPPORTED)common.navbar.removeProfile();
-
NEW
toDatepicker for 2-AppGiniFields as date-range-selector NEW
collapsible panels: doubleclick closes other open panelsNEW
toDropdown(["a", "b", "c"])
NEW
toMembersDropdown()
NEW
toGroupsDropdown()
NEW
.showTypes()
for debugging purposesUPD
inline()
function now also working for smaller display sizesNEW
collapsible panels: new parameter expand by defaultNEW
collapsible panelsNEW
dv.setTitle(text, classes)
NEW
dv.setVariation(Variation.default)
NEW
icons for ActionButton-groupsNEW
css-class for ActionButton-groupsNEW
var id = DV.getSelectedId();
NEW
ActionButtons: move from top-right into tabsNEW
placeholdersNEW
AppGiniFields([f1, f2, ...]).inline(label, [w1, w2, ...])
functionsNEW
showBadgesNEW
appendIcon/prependIcon append/prepend icons to input controls and static controlsNEW
append/prepend icons and/or text to input controls and static controls-
NEW
dv.childrenTabs.showBadges();
// attention: requires regexp- obsolete since AG 22.11
-
NEW
AppGiniField:.toText()
turns<input/>
's type to "text" -
NEW
AppGiniField:.toPassword()
turns<input/>
's type to "password".- ATTENTION
1 2 3
* THIS IS NOT SECURE * PASSWORD CAN STILL BE UNCOVERED * ONLY USE IT IN A SECURE ENVIRONMENT
-
NEW
onChange
event for many datatypes-
missing
-
timestamp
- image
- upload
- google map
-
youtube video
- only event without data
-
tiny blob
- blob
- medium_blob long_blob
-
-
- ATTENTION
-
NEW
badges in tabs NEW
compact modeNEW
width of tabsNEW
button sizingNEW
actionbutton container sizingNEW
multi-column-layout /resizeLabels();
NEW
multi-column-layout /wrapLabels();