@atlassian/aui 7.10.3-alpha-1 → 7.10.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/changelog.md +10 -0
- package/dist/aui/css/aui-experimental.css.map +1 -1
- package/dist/aui/css/aui-experimental.min.css +1 -1
- package/dist/aui/css/aui-experimental.min.css.map +1 -1
- package/dist/aui/css/aui-iconfonts.min.css.map +1 -1
- package/dist/aui/css/aui.css.map +1 -1
- package/dist/aui/css/aui.min.css +8 -8
- package/dist/aui/css/aui.min.css.map +1 -1
- package/dist/aui/js/aui-css-deprecations.js +6 -6
- package/dist/aui/js/aui-css-deprecations.min.js +1 -1
- package/dist/aui/js/aui-datepicker.js +13 -13
- package/dist/aui/js/aui-datepicker.min.js +1 -1
- package/dist/aui/js/aui-experimental.js +275 -275
- package/dist/aui/js/aui-experimental.min.js +1 -1
- package/dist/aui/js/aui-header-async.js +6 -6
- package/dist/aui/js/aui-header-async.min.js +1 -1
- package/dist/aui/js/aui-soy.js +56 -56
- package/dist/aui/js/aui-soy.min.js +1 -1
- package/dist/aui/js/aui.js +2278 -1544
- package/dist/aui/js/aui.min.js +1 -1
- package/lib/css/aui-date-picker.css.map +1 -1
- package/lib/css/aui-experimental-tooltip.css.map +1 -1
- package/lib/css/aui-page-typography-legacy1.css.map +1 -1
- package/lib/css/aui-page-typography.css.map +1 -1
- package/lib/css/batch/aui-experimental.css.map +1 -1
- package/lib/css/batch/aui.css.map +1 -1
- package/lib/css/forms.css.map +1 -1
- package/lib/css/imports/aui-theme/core/atlaskit-theme/borders.css +2 -0
- package/lib/css/imports/aui-theme/core/atlaskit-theme/borders.css.map +1 -0
- package/lib/css/imports/aui-theme/core/atlaskit-theme/colors.css +2 -0
- package/lib/css/imports/aui-theme/core/atlaskit-theme/colors.css.map +1 -0
- package/lib/css/imports/aui-theme/core/atlaskit-theme/fonts.css +2 -0
- package/lib/css/imports/aui-theme/core/atlaskit-theme/fonts.css.map +1 -0
- package/lib/css/imports/aui-theme/core/colors.css.map +1 -1
- package/lib/css/imports/aui-theme/core/text.css.map +1 -1
- package/lib/js/aui/backbone.js.map +1 -1
- package/lib/js/aui/binder.js.map +1 -1
- package/lib/js/aui/binders/placeholder.js.map +1 -1
- package/lib/js/aui/button.js.map +1 -1
- package/lib/js/aui/checkbox-multiselect.js.map +1 -1
- package/lib/js/aui/date-picker.js.map +1 -1
- package/lib/js/aui/dialog.js.map +1 -1
- package/lib/js/aui/dialog2.js.map +1 -1
- package/lib/js/aui/drop-down.js.map +1 -1
- package/lib/js/aui/dropdown2.js.map +1 -1
- package/lib/js/aui/fancy-file-input.js.map +1 -1
- package/lib/js/aui/flag.js.map +1 -1
- package/lib/js/aui/focus-manager-global.js.map +1 -1
- package/lib/js/aui/focus-manager.js.map +1 -1
- package/lib/js/aui/form-notification.js.map +1 -1
- package/lib/js/aui/form-validation/basic-validators.js.map +1 -1
- package/lib/js/aui/form-validation/validator-register.js.map +1 -1
- package/lib/js/aui/form-validation.js.map +1 -1
- package/lib/js/aui/header-async.js.map +1 -1
- package/lib/js/aui/i18n.js.map +1 -1
- package/lib/js/aui/inline-dialog.js.map +1 -1
- package/lib/js/aui/inline-dialog2.js.map +1 -1
- package/lib/js/aui/internal/alignment.js.map +1 -1
- package/lib/js/aui/internal/deprecation.js.map +1 -1
- package/lib/js/aui/internal/globalize.js.map +1 -1
- package/lib/js/aui/internal/header/create-header.js.map +1 -1
- package/lib/js/aui/internal/select/suggestion-model.js.map +1 -1
- package/lib/js/aui/internal/select/suggestions-view.js.map +1 -1
- package/lib/js/aui/internal/skate.js.map +1 -1
- package/lib/js/aui/internal/widget.js.map +1 -1
- package/lib/js/aui/label.js.map +1 -1
- package/lib/js/aui/layer-manager-global.js.map +1 -1
- package/lib/js/aui/layer-manager.js.map +1 -1
- package/lib/js/aui/layer.js.map +1 -1
- package/lib/js/aui/messages.js.map +1 -1
- package/lib/js/aui/navigation.js.map +1 -1
- package/lib/js/aui/polyfills/placeholder.js.map +1 -1
- package/lib/js/aui/populate-parameters.js.map +1 -1
- package/lib/js/aui/progress-indicator.js.map +1 -1
- package/lib/js/aui/progressive-data-set.js.map +1 -1
- package/lib/js/aui/query-input.js.map +1 -1
- package/lib/js/aui/restful-table/custom-create-view.js.map +1 -1
- package/lib/js/aui/restful-table/custom-edit-view.js.map +1 -1
- package/lib/js/aui/restful-table/custom-read-view.js.map +1 -1
- package/lib/js/aui/restful-table/edit-row.js.map +1 -1
- package/lib/js/aui/restful-table/entry-model.js.map +1 -1
- package/lib/js/aui/restful-table/row.js.map +1 -1
- package/lib/js/aui/restful-table.js.map +1 -1
- package/lib/js/aui/result-set.js.map +1 -1
- package/lib/js/aui/results-list.js.map +1 -1
- package/lib/js/aui/select.js.map +1 -1
- package/lib/js/aui/select2.js.map +1 -1
- package/lib/js/aui/setup.js.map +1 -1
- package/lib/js/aui/sidebar.js.map +1 -1
- package/lib/js/aui/spin.js.map +1 -1
- package/lib/js/aui/spinner.js.map +1 -1
- package/lib/js/aui/tables-sortable.js.map +1 -1
- package/lib/js/aui/tabs.js.map +1 -1
- package/lib/js/aui/template.js.map +1 -1
- package/lib/js/aui/toggle.js.map +1 -1
- package/lib/js/aui/tooltip.js.map +1 -1
- package/lib/js/aui/trigger.js.map +1 -1
- package/lib/js/aui/truncating-progressive-data-set.js.map +1 -1
- package/lib/js/aui/unbind-text-resize.js.map +1 -1
- package/lib/js/aui/underscore.js.map +1 -1
- package/lib/js/aui/version.js +1 -1
- package/lib/js/aui/version.js.map +1 -1
- package/lib/js/aui/when-i-type.js.map +1 -1
- package/lib/js/aui-css-deprecations.js.map +1 -1
- package/package.json +55 -43
- package/src/less/imports/aui-theme/core/atlaskit-theme/borders.less +1 -0
- package/src/less/imports/aui-theme/core/atlaskit-theme/colors.less +112 -0
- package/src/less/imports/aui-theme/core/atlaskit-theme/fonts.less +3 -0
- package/src/less/imports/aui-theme/core/colors.less +1 -1
- package/src/less/imports/aui-theme/core/text.less +1 -1
- package/yarn.lock +7295 -3224
- package/lib/js-vendor/underscorejs/underscore.js +0 -1287
- package/src/js-vendor/underscorejs/underscore.js +0 -1287
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["js/aui/restful-table/edit-row.js"],"names":["isFirefox","navigator","userAgent","toLowerCase","indexOf","View","extend","tagName","events","initialize","options","$el","el","_event","classNames","dataKeys","columns","isCreateRow","allowReorder","CANCEL","delegateEvents","isUpdateMode","_modelClass","model","fieldFocusSelector","bind","disabled","SAVE","focusUpdated","submit","FOCUS","name","focus","BLUR","removeClass","FOCUSED","disable","SUBMIT_STARTED","_submitStarted","SUBMIT_FINISHED","_submitFinished","defaultColumnRenderer","data","allowEdit","addClass","attr","value","document","createTextNode","renderDragHandle","DRAG_HANDLE","_handleKeyUpEvent","e","keyCode","trigger","_cancel","preventDefault","submitting","showLoading","hideLoading","enable","_focus","hasFocus","target","hasClass","$focus","$error","find","ERROR","length","parent","$replacementSubmit","$submit","SUBMIT","val","ENABLED_SUBMIT","replaceWith","DISABLED","$placeholderSubmit","removeAttr","LOADING","hasUpdates","mapSubmitParams","serializeObject","serialize","params","changedAttributes","instance","values","activeElement","window","blur","clear","save","success","UPDATED","CREATED","toJSON","render","errors","error","xhr","status","renderErrors","VALIDATION_ERROR","silent","renderError","msg","text","$","remove","each","closest","append","renderData","empty","ORDER","appendTo","i","column","contents","$cell","id","args","createView","editView","apply","done","styleClass","renderOperations","update","ROW","EDIT_ROW","RENDER","CONTENT_REFRESHED","$operations","accesskey","submitAccessKey","AJS","I18n","getText","cancelAccessKey","add"],"mappings":"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","file":"edit-row.js","sourcesContent":["'use strict';\n\nimport $ from '../jquery';\nimport '../../../js-vendor/jquery/serializetoobject';\nimport Backbone from '../backbone';\nimport classNames from './class-names';\nimport dataKeys from './data-keys';\nimport events from './events';\nimport i18n from '../i18n';\nimport throbber from './throbber';\n\nvar isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;\n\n/**\n * An abstract class that gives the required behaviour for the creating and editing entries. Extend this class and pass\n * it as the {views.row} property of the options passed to RestfulTable in construction.\n */\nexport default Backbone.View.extend({\n tagName: 'tr',\n\n // delegate events\n events: {\n 'focusin': '_focus',\n 'click': '_focus',\n 'keyup': '_handleKeyUpEvent'\n },\n\n /**\n * @constructor\n * @param {Object} options\n */\n initialize: function (options) {\n this.$el = $(this.el);\n\n // faster lookup\n this._event = events;\n this.classNames = classNames;\n this.dataKeys = dataKeys;\n this.columns = options.columns;\n this.isCreateRow = options.isCreateRow;\n this.allowReorder = options.allowReorder;\n\n // Allow cancelling an edit with support for setting a new element.\n this.events['click .' + this.classNames.CANCEL] = '_cancel';\n this.delegateEvents();\n\n if (options.isUpdateMode) {\n this.isUpdateMode = true;\n } else {\n this._modelClass = options.model;\n this.model = new this._modelClass();\n }\n\n this.fieldFocusSelector = options.fieldFocusSelector;\n this.bind(this._event.CANCEL, function () {\n this.disabled = true;\n })\n .bind(this._event.SAVE, function (focusUpdated) {\n if (!this.disabled) {\n this.submit(focusUpdated);\n }\n })\n .bind(this._event.FOCUS, function (name) {\n this.focus(name);\n })\n .bind(this._event.BLUR, function () {\n this.$el.removeClass(this.classNames.FOCUSED);\n this.disable();\n })\n .bind(this._event.SUBMIT_STARTED, function () {\n this._submitStarted();\n })\n .bind(this._event.SUBMIT_FINISHED, function () {\n this._submitFinished();\n });\n },\n\n /**\n * Renders default cell contents\n *\n * @param data\n */\n defaultColumnRenderer: function (data) {\n if (data.allowEdit !== false) {\n return $(\"<input type='text' />\")\n .addClass('text')\n .attr({\n name: data.name,\n value: data.value\n });\n } else if (data.value) {\n return document.createTextNode(data.value);\n }\n },\n\n /**\n * Renders drag handle\n * @return jQuery\n */\n renderDragHandle: function () {\n return '<span class=\"' + this.classNames.DRAG_HANDLE + '\"></span></td>';\n },\n\n /**\n * Executes cancel event if ESC is pressed\n *\n * @param {Event} e\n */\n _handleKeyUpEvent: function (e) {\n if (e.keyCode === 27) {\n this.trigger(this._event.CANCEL);\n }\n },\n\n /**\n * Fires cancel event\n *\n * @param {Event} e\n *\n * @return EditRow\n */\n _cancel: function (e) {\n this.trigger(this._event.CANCEL);\n e.preventDefault();\n return this;\n },\n\n /**\n * Disables events/fields and adds safe guard against double submitting\n *\n * @return EditRow\n */\n _submitStarted: function () {\n this.submitting = true;\n this.showLoading()\n .disable()\n .delegateEvents({});\n\n return this;\n },\n\n /**\n * Enables events & fields\n *\n * @return EditRow\n */\n _submitFinished: function () {\n this.submitting = false;\n this.hideLoading()\n .enable()\n .delegateEvents(this.events);\n\n return this;\n },\n\n /**\n * Handles dom focus event, by only focusing row if it isn't already\n *\n * @param {Event} e\n *\n * @return EditRow\n */\n _focus: function (e) {\n if (!this.hasFocus()) {\n this.trigger(this._event.FOCUS, e.target.name);\n }\n return this;\n },\n\n\n /**\n * Returns true if row has focused class\n *\n * @return Boolean\n */\n hasFocus: function () {\n return this.$el.hasClass(this.classNames.FOCUSED);\n },\n\n /**\n * Focus specified field (by name or id - first argument), first field with an error or first field (DOM order)\n *\n * @param name\n *\n * @return EditRow\n */\n focus: function (name) {\n var $focus;\n var $error;\n\n this.enable();\n\n if (name) {\n $focus = this.$el.find(this.fieldFocusSelector(name));\n } else {\n\n $error = this.$el.find(this.classNames.ERROR + ':first');\n\n if ($error.length === 0) {\n $focus = this.$el.find(':input:text:first');\n } else {\n $focus = $error.parent().find(':input');\n }\n }\n\n this.$el.addClass(this.classNames.FOCUSED);\n $focus.focus().trigger('select');\n\n return this;\n },\n\n /**\n * Disables all fields\n *\n * @return EditRow\n */\n disable: function () {\n var $replacementSubmit;\n var $submit;\n\n // firefox does not allow you to submit a form if there are 2 or more submit buttons in a form, even if all but\n // one is disabled. It also does not let you change the type=\"submit' to type=\"button\". Therfore he lies the hack.\n if (isFirefox) {\n $submit = this.$el.find(':submit');\n\n if ($submit.length) {\n $replacementSubmit = $(\"<input type='submit' class='\" + this.classNames.SUBMIT + \"' />\")\n .addClass($submit.attr('class'))\n .val($submit.val())\n .data(this.dataKeys.ENABLED_SUBMIT, $submit);\n\n $submit.replaceWith($replacementSubmit);\n }\n }\n\n this.$el.addClass(this.classNames.DISABLED)\n .find(':submit')\n .attr('disabled', 'disabled');\n\n return this;\n },\n\n /**\n * Enables all fields\n *\n * @return EditRow\n */\n enable: function () {\n var $placeholderSubmit;\n var $submit;\n\n // firefox does not allow you to submit a form if there are 2 or more submit buttons in a form, even if all but\n // one is disabled. It also does not let you change the type=\"submit' to type=\"button\". Therfore he lies the hack.\n if (isFirefox) {\n $placeholderSubmit = this.$el.find(this.classNames.SUBMIT);\n $submit = $placeholderSubmit.data(this.dataKeys.ENABLED_SUBMIT);\n\n if ($submit && $placeholderSubmit.length) {\n $placeholderSubmit.replaceWith($submit);\n }\n }\n\n this.$el.removeClass(this.classNames.DISABLED)\n .find(':submit')\n .removeAttr('disabled');\n\n return this;\n },\n\n /**\n * Shows loading indicator\n *\n * @return EditRow\n */\n showLoading: function () {\n this.$el.addClass(this.classNames.LOADING);\n return this;\n },\n\n /**\n * Hides loading indicator\n *\n * @return EditRow\n */\n hideLoading: function () {\n this.$el.removeClass(this.classNames.LOADING);\n return this;\n },\n\n /**\n * If any of the fields have changed\n *\n * @return {Boolean}\n */\n hasUpdates: function () {\n return !!this.mapSubmitParams(this.serializeObject());\n },\n\n /**\n * Serializes the view into model representation.\n * Default implementation uses simple jQuery plugin to serialize form fields into object\n *\n * @return Object\n */\n serializeObject: function () {\n var $el = this.$el;\n return $el.serializeObject ?\n $el.serializeObject() :\n $el.serialize();\n },\n\n mapSubmitParams: function (params) {\n return this.model.changedAttributes(params);\n },\n\n /**\n * Handle submission of new entries and editing of old.\n *\n * @param {Boolean} focusUpdated - flag of whether to focus read-only view after succssful submission\n *\n * @return EditRow\n */\n submit: function (focusUpdated) {\n var instance = this;\n var values;\n\n // IE doesnt like it when the focused element is removed\n if (document.activeElement !== window) {\n $(document.activeElement).blur();\n }\n\n if (this.isUpdateMode) {\n values = this.mapSubmitParams(this.serializeObject()); // serialize form fields into JSON\n\n if (!values) {\n return instance.trigger(instance._event.CANCEL);\n }\n } else {\n this.model.clear();\n values = this.mapSubmitParams(this.serializeObject()); // serialize form fields into JSON\n }\n\n this.trigger(this._event.SUBMIT_STARTED);\n\n /* Attempt to add to server model. If fail delegate to createView to render errors etc. Otherwise,\n add a new model to this._models and render a row to represent it. */\n this.model.save(values, {\n success: function () {\n if (instance.isUpdateMode) {\n instance.trigger(instance._event.UPDATED, instance.model, focusUpdated);\n } else {\n instance.trigger(instance._event.CREATED, instance.model.toJSON());\n\n instance.model = new instance._modelClass(); // reset\n\n instance.render({errors: {}, values: {}}); // pulls in instance's model for create row\n instance.trigger(instance._event.FOCUS);\n }\n\n instance.trigger(instance._event.SUBMIT_FINISHED);\n },\n\n error: function (model, data, xhr) {\n if (xhr.status === 400) {\n instance.renderErrors(data.errors);\n instance.trigger(instance._event.VALIDATION_ERROR, data.errors);\n }\n\n instance.trigger(instance._event.SUBMIT_FINISHED);\n },\n\n silent: true\n });\n\n return this;\n },\n\n /**\n * Render an error message\n *\n * @param msg\n *\n * @return {jQuery}\n */\n renderError: function (name, msg) {\n return $('<div />').attr('data-field', name).addClass(this.classNames.ERROR).text(msg);\n },\n\n /**\n * Render and append error messages. The property name will be matched to the input name to determine which cell to\n * append the error message to. If this does not meet your needs please extend this method.\n *\n * @param errors\n */\n renderErrors: function (errors) {\n var instance = this;\n\n this.$('.' + this.classNames.ERROR).remove(); // avoid duplicates\n\n if (errors) {\n $.each(errors, function (name, msg) {\n instance.$el.find(\"[name='\" + name + \"']\")\n .closest('td')\n .append(instance.renderError(name, msg));\n });\n }\n\n return this;\n },\n\n\n /**\n * Handles rendering of row\n *\n * @param {Object} renderData\n * ... {Object} vales - Values of fields\n */\n render: function (renderData) {\n var instance = this;\n\n this.$el.empty();\n\n if (this.allowReorder) {\n $('<td class=\"' + this.classNames.ORDER + '\" />').append(this.renderDragHandle()).appendTo(instance.$el);\n }\n\n $.each(this.columns, function (i, column) {\n var contents;\n var $cell;\n var value = renderData.values[column.id];\n var args = [\n {name: column.id, value: value, allowEdit: column.allowEdit},\n renderData.values,\n instance.model\n ];\n\n if (value) {\n instance.$el.attr('data-' + column.id, value); // helper for webdriver testing\n }\n\n if (instance.isCreateRow && column.createView) {\n // TODO AUI-1058 - The row's model should be guaranteed to be in the correct state by this point.\n contents = new column.createView({\n model: instance.model\n }).render(args[0]);\n\n } else if (column.editView) {\n contents = new column.editView({\n model: instance.model\n }).render(args[0]);\n } else {\n contents = instance.defaultColumnRenderer.apply(instance, args);\n }\n\n $cell = $('<td />');\n\n if (typeof contents === 'object' && contents.done) {\n contents.done(function (contents) {\n $cell.append(contents);\n });\n } else {\n $cell.append(contents);\n }\n\n if (column.styleClass) {\n $cell.addClass(column.styleClass);\n }\n\n $cell.appendTo(instance.$el);\n });\n\n this.$el\n .append(this.renderOperations(renderData.update, renderData.values)) // add submit/cancel buttons\n .addClass(this.classNames.ROW + ' ' + this.classNames.EDIT_ROW);\n\n this.trigger(this._event.RENDER, this.$el, renderData.values);\n this.$el.trigger(this._event.CONTENT_REFRESHED, [this.$el]);\n\n return this;\n },\n\n /**\n * Gets markup for add/update and cancel buttons\n *\n * @param {Boolean} update\n */\n renderOperations: function (update) {\n var $operations = $('<td class=\"aui-restfultable-operations\" />');\n\n if (update) {\n $operations.append($('<input class=\"aui-button\" type=\"submit\" />').attr({\n accesskey: this.submitAccessKey,\n value: AJS.I18n.getText('aui.words.update')\n }))\n .append($('<a class=\"aui-button aui-button-link\" href=\"#\" />')\n .addClass(this.classNames.CANCEL)\n .text(AJS.I18n.getText('aui.words.cancel'))\n .attr({\n accesskey: this.cancelAccessKey\n }));\n } else {\n $operations.append($('<input class=\"aui-button\" type=\"submit\" />').attr({\n accesskey: this.submitAccessKey,\n value: AJS.I18n.getText('aui.words.add')\n }));\n }\n\n return $operations.add($('<td class=\"aui-restfultable-status\" />').append(throbber()));\n }\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["js/aui/restful-table/edit-row.js"],"names":["isFirefox","navigator","userAgent","toLowerCase","indexOf","Backbone","View","extend","tagName","events","initialize","options","$el","el","_event","classNames","dataKeys","columns","isCreateRow","allowReorder","CANCEL","delegateEvents","isUpdateMode","_modelClass","model","fieldFocusSelector","bind","disabled","SAVE","focusUpdated","submit","FOCUS","name","focus","BLUR","removeClass","FOCUSED","disable","SUBMIT_STARTED","_submitStarted","SUBMIT_FINISHED","_submitFinished","defaultColumnRenderer","data","allowEdit","addClass","attr","value","document","createTextNode","renderDragHandle","DRAG_HANDLE","_handleKeyUpEvent","e","keyCode","trigger","_cancel","preventDefault","submitting","showLoading","hideLoading","enable","_focus","hasFocus","target","hasClass","$focus","$error","find","ERROR","length","parent","$replacementSubmit","$submit","SUBMIT","val","ENABLED_SUBMIT","replaceWith","DISABLED","$placeholderSubmit","removeAttr","LOADING","hasUpdates","mapSubmitParams","serializeObject","serialize","params","changedAttributes","instance","values","activeElement","window","blur","clear","save","success","UPDATED","CREATED","toJSON","render","errors","error","xhr","status","renderErrors","VALIDATION_ERROR","silent","renderError","msg","text","$","remove","each","closest","append","renderData","empty","ORDER","appendTo","i","column","contents","$cell","id","args","createView","editView","apply","done","styleClass","renderOperations","update","ROW","EDIT_ROW","RENDER","CONTENT_REFRESHED","$operations","accesskey","submitAccessKey","AJS","I18n","getText","cancelAccessKey","add"],"mappings":"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","file":"edit-row.js","sourcesContent":["'use strict';\n\nimport $ from '../jquery';\nimport '../../../js-vendor/jquery/serializetoobject';\nimport Backbone from '../backbone';\nimport classNames from './class-names';\nimport dataKeys from './data-keys';\nimport events from './events';\nimport i18n from '../i18n';\nimport throbber from './throbber';\n\nvar isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;\n\n/**\n * An abstract class that gives the required behaviour for the creating and editing entries. Extend this class and pass\n * it as the {views.row} property of the options passed to RestfulTable in construction.\n */\nexport default Backbone.View.extend({\n tagName: 'tr',\n\n // delegate events\n events: {\n 'focusin': '_focus',\n 'click': '_focus',\n 'keyup': '_handleKeyUpEvent'\n },\n\n /**\n * @constructor\n * @param {Object} options\n */\n initialize: function (options) {\n this.$el = $(this.el);\n\n // faster lookup\n this._event = events;\n this.classNames = classNames;\n this.dataKeys = dataKeys;\n this.columns = options.columns;\n this.isCreateRow = options.isCreateRow;\n this.allowReorder = options.allowReorder;\n\n // Allow cancelling an edit with support for setting a new element.\n this.events['click .' + this.classNames.CANCEL] = '_cancel';\n this.delegateEvents();\n\n if (options.isUpdateMode) {\n this.isUpdateMode = true;\n } else {\n this._modelClass = options.model;\n this.model = new this._modelClass();\n }\n\n this.fieldFocusSelector = options.fieldFocusSelector;\n this.bind(this._event.CANCEL, function () {\n this.disabled = true;\n })\n .bind(this._event.SAVE, function (focusUpdated) {\n if (!this.disabled) {\n this.submit(focusUpdated);\n }\n })\n .bind(this._event.FOCUS, function (name) {\n this.focus(name);\n })\n .bind(this._event.BLUR, function () {\n this.$el.removeClass(this.classNames.FOCUSED);\n this.disable();\n })\n .bind(this._event.SUBMIT_STARTED, function () {\n this._submitStarted();\n })\n .bind(this._event.SUBMIT_FINISHED, function () {\n this._submitFinished();\n });\n },\n\n /**\n * Renders default cell contents\n *\n * @param data\n */\n defaultColumnRenderer: function (data) {\n if (data.allowEdit !== false) {\n return $(\"<input type='text' />\")\n .addClass('text')\n .attr({\n name: data.name,\n value: data.value\n });\n } else if (data.value) {\n return document.createTextNode(data.value);\n }\n },\n\n /**\n * Renders drag handle\n * @return jQuery\n */\n renderDragHandle: function () {\n return '<span class=\"' + this.classNames.DRAG_HANDLE + '\"></span></td>';\n },\n\n /**\n * Executes cancel event if ESC is pressed\n *\n * @param {Event} e\n */\n _handleKeyUpEvent: function (e) {\n if (e.keyCode === 27) {\n this.trigger(this._event.CANCEL);\n }\n },\n\n /**\n * Fires cancel event\n *\n * @param {Event} e\n *\n * @return EditRow\n */\n _cancel: function (e) {\n this.trigger(this._event.CANCEL);\n e.preventDefault();\n return this;\n },\n\n /**\n * Disables events/fields and adds safe guard against double submitting\n *\n * @return EditRow\n */\n _submitStarted: function () {\n this.submitting = true;\n this.showLoading()\n .disable()\n .delegateEvents({});\n\n return this;\n },\n\n /**\n * Enables events & fields\n *\n * @return EditRow\n */\n _submitFinished: function () {\n this.submitting = false;\n this.hideLoading()\n .enable()\n .delegateEvents(this.events);\n\n return this;\n },\n\n /**\n * Handles dom focus event, by only focusing row if it isn't already\n *\n * @param {Event} e\n *\n * @return EditRow\n */\n _focus: function (e) {\n if (!this.hasFocus()) {\n this.trigger(this._event.FOCUS, e.target.name);\n }\n return this;\n },\n\n\n /**\n * Returns true if row has focused class\n *\n * @return Boolean\n */\n hasFocus: function () {\n return this.$el.hasClass(this.classNames.FOCUSED);\n },\n\n /**\n * Focus specified field (by name or id - first argument), first field with an error or first field (DOM order)\n *\n * @param name\n *\n * @return EditRow\n */\n focus: function (name) {\n var $focus;\n var $error;\n\n this.enable();\n\n if (name) {\n $focus = this.$el.find(this.fieldFocusSelector(name));\n } else {\n\n $error = this.$el.find(this.classNames.ERROR + ':first');\n\n if ($error.length === 0) {\n $focus = this.$el.find(':input:text:first');\n } else {\n $focus = $error.parent().find(':input');\n }\n }\n\n this.$el.addClass(this.classNames.FOCUSED);\n $focus.focus().trigger('select');\n\n return this;\n },\n\n /**\n * Disables all fields\n *\n * @return EditRow\n */\n disable: function () {\n var $replacementSubmit;\n var $submit;\n\n // firefox does not allow you to submit a form if there are 2 or more submit buttons in a form, even if all but\n // one is disabled. It also does not let you change the type=\"submit' to type=\"button\". Therfore he lies the hack.\n if (isFirefox) {\n $submit = this.$el.find(':submit');\n\n if ($submit.length) {\n $replacementSubmit = $(\"<input type='submit' class='\" + this.classNames.SUBMIT + \"' />\")\n .addClass($submit.attr('class'))\n .val($submit.val())\n .data(this.dataKeys.ENABLED_SUBMIT, $submit);\n\n $submit.replaceWith($replacementSubmit);\n }\n }\n\n this.$el.addClass(this.classNames.DISABLED)\n .find(':submit')\n .attr('disabled', 'disabled');\n\n return this;\n },\n\n /**\n * Enables all fields\n *\n * @return EditRow\n */\n enable: function () {\n var $placeholderSubmit;\n var $submit;\n\n // firefox does not allow you to submit a form if there are 2 or more submit buttons in a form, even if all but\n // one is disabled. It also does not let you change the type=\"submit' to type=\"button\". Therfore he lies the hack.\n if (isFirefox) {\n $placeholderSubmit = this.$el.find(this.classNames.SUBMIT);\n $submit = $placeholderSubmit.data(this.dataKeys.ENABLED_SUBMIT);\n\n if ($submit && $placeholderSubmit.length) {\n $placeholderSubmit.replaceWith($submit);\n }\n }\n\n this.$el.removeClass(this.classNames.DISABLED)\n .find(':submit')\n .removeAttr('disabled');\n\n return this;\n },\n\n /**\n * Shows loading indicator\n *\n * @return EditRow\n */\n showLoading: function () {\n this.$el.addClass(this.classNames.LOADING);\n return this;\n },\n\n /**\n * Hides loading indicator\n *\n * @return EditRow\n */\n hideLoading: function () {\n this.$el.removeClass(this.classNames.LOADING);\n return this;\n },\n\n /**\n * If any of the fields have changed\n *\n * @return {Boolean}\n */\n hasUpdates: function () {\n return !!this.mapSubmitParams(this.serializeObject());\n },\n\n /**\n * Serializes the view into model representation.\n * Default implementation uses simple jQuery plugin to serialize form fields into object\n *\n * @return Object\n */\n serializeObject: function () {\n var $el = this.$el;\n return $el.serializeObject ?\n $el.serializeObject() :\n $el.serialize();\n },\n\n mapSubmitParams: function (params) {\n return this.model.changedAttributes(params);\n },\n\n /**\n * Handle submission of new entries and editing of old.\n *\n * @param {Boolean} focusUpdated - flag of whether to focus read-only view after succssful submission\n *\n * @return EditRow\n */\n submit: function (focusUpdated) {\n var instance = this;\n var values;\n\n // IE doesnt like it when the focused element is removed\n if (document.activeElement !== window) {\n $(document.activeElement).blur();\n }\n\n if (this.isUpdateMode) {\n values = this.mapSubmitParams(this.serializeObject()); // serialize form fields into JSON\n\n if (!values) {\n return instance.trigger(instance._event.CANCEL);\n }\n } else {\n this.model.clear();\n values = this.mapSubmitParams(this.serializeObject()); // serialize form fields into JSON\n }\n\n this.trigger(this._event.SUBMIT_STARTED);\n\n /* Attempt to add to server model. If fail delegate to createView to render errors etc. Otherwise,\n add a new model to this._models and render a row to represent it. */\n this.model.save(values, {\n success: function () {\n if (instance.isUpdateMode) {\n instance.trigger(instance._event.UPDATED, instance.model, focusUpdated);\n } else {\n instance.trigger(instance._event.CREATED, instance.model.toJSON());\n\n instance.model = new instance._modelClass(); // reset\n\n instance.render({errors: {}, values: {}}); // pulls in instance's model for create row\n instance.trigger(instance._event.FOCUS);\n }\n\n instance.trigger(instance._event.SUBMIT_FINISHED);\n },\n\n error: function (model, data, xhr) {\n if (xhr.status === 400) {\n instance.renderErrors(data.errors);\n instance.trigger(instance._event.VALIDATION_ERROR, data.errors);\n }\n\n instance.trigger(instance._event.SUBMIT_FINISHED);\n },\n\n silent: true\n });\n\n return this;\n },\n\n /**\n * Render an error message\n *\n * @param msg\n *\n * @return {jQuery}\n */\n renderError: function (name, msg) {\n return $('<div />').attr('data-field', name).addClass(this.classNames.ERROR).text(msg);\n },\n\n /**\n * Render and append error messages. The property name will be matched to the input name to determine which cell to\n * append the error message to. If this does not meet your needs please extend this method.\n *\n * @param errors\n */\n renderErrors: function (errors) {\n var instance = this;\n\n this.$('.' + this.classNames.ERROR).remove(); // avoid duplicates\n\n if (errors) {\n $.each(errors, function (name, msg) {\n instance.$el.find(\"[name='\" + name + \"']\")\n .closest('td')\n .append(instance.renderError(name, msg));\n });\n }\n\n return this;\n },\n\n\n /**\n * Handles rendering of row\n *\n * @param {Object} renderData\n * ... {Object} vales - Values of fields\n */\n render: function (renderData) {\n var instance = this;\n\n this.$el.empty();\n\n if (this.allowReorder) {\n $('<td class=\"' + this.classNames.ORDER + '\" />').append(this.renderDragHandle()).appendTo(instance.$el);\n }\n\n $.each(this.columns, function (i, column) {\n var contents;\n var $cell;\n var value = renderData.values[column.id];\n var args = [\n {name: column.id, value: value, allowEdit: column.allowEdit},\n renderData.values,\n instance.model\n ];\n\n if (value) {\n instance.$el.attr('data-' + column.id, value); // helper for webdriver testing\n }\n\n if (instance.isCreateRow && column.createView) {\n // TODO AUI-1058 - The row's model should be guaranteed to be in the correct state by this point.\n contents = new column.createView({\n model: instance.model\n }).render(args[0]);\n\n } else if (column.editView) {\n contents = new column.editView({\n model: instance.model\n }).render(args[0]);\n } else {\n contents = instance.defaultColumnRenderer.apply(instance, args);\n }\n\n $cell = $('<td />');\n\n if (typeof contents === 'object' && contents.done) {\n contents.done(function (contents) {\n $cell.append(contents);\n });\n } else {\n $cell.append(contents);\n }\n\n if (column.styleClass) {\n $cell.addClass(column.styleClass);\n }\n\n $cell.appendTo(instance.$el);\n });\n\n this.$el\n .append(this.renderOperations(renderData.update, renderData.values)) // add submit/cancel buttons\n .addClass(this.classNames.ROW + ' ' + this.classNames.EDIT_ROW);\n\n this.trigger(this._event.RENDER, this.$el, renderData.values);\n this.$el.trigger(this._event.CONTENT_REFRESHED, [this.$el]);\n\n return this;\n },\n\n /**\n * Gets markup for add/update and cancel buttons\n *\n * @param {Boolean} update\n */\n renderOperations: function (update) {\n var $operations = $('<td class=\"aui-restfultable-operations\" />');\n\n if (update) {\n $operations.append($('<input class=\"aui-button\" type=\"submit\" />').attr({\n accesskey: this.submitAccessKey,\n value: AJS.I18n.getText('aui.words.update')\n }))\n .append($('<a class=\"aui-button aui-button-link\" href=\"#\" />')\n .addClass(this.classNames.CANCEL)\n .text(AJS.I18n.getText('aui.words.cancel'))\n .attr({\n accesskey: this.cancelAccessKey\n }));\n } else {\n $operations.append($('<input class=\"aui-button\" type=\"submit\" />').attr({\n accesskey: this.submitAccessKey,\n value: AJS.I18n.getText('aui.words.add')\n }));\n }\n\n return $operations.add($('<td class=\"aui-restfultable-status\" />').append(throbber()));\n }\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["js/aui/restful-table/entry-model.js"],"names":["EntryModel","Model","extend","sync","method","model","options","instance","oldError","error","xhr","_serverErrorHandler","apply","arguments","save","attributes","syncModel","success","data","parseJSON","responseText","call","isNew","prototype","url","id","clear","set","toJSON","destroy","param","length","ajax","type","dataType","contentType","collection","remove","changedAttributes","changed","current","each","name","value","trim","isArray","isEqual","isEmpty","addExpand","ajaxOptions","status","SERVER_ERROR","fetch"],"mappings":";;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA;;;;AAIA,QAAIA,aAAa,mBAASC,KAAT,CAAeC,MAAf,CAAsB;AACnCC,cAAM,cAAUC,MAAV,EAAkBC,KAAlB,EAAyBC,OAAzB,EAAkC;AACpC,gBAAIC,WAAW,IAAf;AACA,gBAAIC,WAAWF,QAAQG,KAAvB;;AAEAH,oBAAQG,KAAR,GAAgB,UAAUC,GAAV,EAAe;AAC3BH,yBAASI,mBAAT,CAA6BD,GAA7B,EAAkC,IAAlC;AACA,oBAAIF,QAAJ,EAAc;AACVA,6BAASI,KAAT,CAAe,IAAf,EAAqBC,SAArB;AACH;AACJ,aALD;;AAOA,mBAAO,mBAASV,IAAT,CAAcS,KAAd,qBAA8BC,SAA9B,CAAP;AACH,SAbkC;;AAenC;;;;;;;;AAQAC,cAAM,cAAUC,UAAV,EAAsBT,OAAtB,EAA+B;AACjCA,sBAAUA,WAAW,EAArB;;AAEA,gBAAIC,WAAW,IAAf;AACA,gBAAIN,KAAJ;AACA,gBAAIe,SAAJ;AACA,gBAAIP,QAAQH,QAAQG,KAApB,CANiC,CAMN;AAC3B,gBAAIQ,UAAUX,QAAQW,OAAtB;;AAGA;AACAX,oBAAQG,KAAR,GAAgB,UAAUJ,KAAV,EAAiBK,GAAjB,EAAsB;;AAElC,oBAAIQ,OAAO,iBAAEC,SAAF,CAAYT,IAAIU,YAAJ,IAAoBV,IAAIQ,IAApC,CAAX;;AAEA;AACA,oBAAIT,KAAJ,EAAW;AACPA,0BAAMY,IAAN,CAAWd,QAAX,EAAqBA,QAArB,EAA+BW,IAA/B,EAAqCR,GAArC;AACH;AACJ,aARD;;AAUA;AACA,gBAAI,KAAKY,KAAL,EAAJ,EAAkB;;AAEd;AACA,mCAASrB,KAAT,CAAesB,SAAf,CAAyBT,IAAzB,CAA8BO,IAA9B,CAAmC,IAAnC,EAAyCN,UAAzC,EAAqDT,OAArD;;AAEJ;AACC,aAND,MAMO,IAAIS,UAAJ,EAAgB;AACnB;AACAd,wBAAQD,WAAWE,MAAX,CAAkB;AACtBsB,yBAAK,KAAKA,GAAL;AADiB,iBAAlB,CAAR;;AAIAR,4BAAY,IAAIf,KAAJ,CAAU;AAClBwB,wBAAI,KAAKA;AADS,iBAAV,CAAZ;;AAIAT,0BAAUF,IAAV,GAAiB,mBAASb,KAAT,CAAesB,SAAf,CAAyBT,IAA1C;;AAEAR,wBAAQW,OAAR,GAAkB,UAAUZ,KAAV,EAAiBK,GAAjB,EAAsB;;AAEpC;AACAH,6BAASmB,KAAT,GAAiBC,GAAjB,CAAqBtB,MAAMuB,MAAN,EAArB;;AAEA;AACA,wBAAIX,OAAJ,EAAa;AACTA,gCAAQI,IAAR,CAAad,QAAb,EAAuBA,QAAvB,EAAiCG,GAAjC;AACH;AACJ,iBATD;;AAWA;AACAM,0BAAUF,IAAV,CAAeC,UAAf,EAA2BT,OAA3B;AACH;AACJ,SA7EkC;;AA+EnC;;;;;;;;;;;;AAYAuB,iBAAS,iBAAUvB,OAAV,EAAmB;AACxBA,sBAAUA,WAAW,EAArB;;AAEA,gBAAIC,WAAW,IAAf;AACA,gBAAIiB,MAAM,KAAKA,GAAL,EAAV;AACA,gBAAIN,IAAJ;;AAEA,gBAAIZ,QAAQY,IAAZ,EAAkB;AACdA,uBAAO,iBAAEY,KAAF,CAAQxB,QAAQY,IAAhB,CAAP;AACH;;AAED,gBAAIA,QAAQA,KAAKa,MAAjB,EAAyB;AACrB;AACAP,sBAAMA,MAAM,GAAN,GAAYN,IAAlB;AACH;;AAED,6BAAEc,IAAF,CAAO;AACHR,qBAAKA,GADF;AAEHS,sBAAM,QAFH;AAGHC,0BAAU,MAHP;AAIHC,6BAAa,kBAJV;AAKHlB,yBAAS,iBAAUC,IAAV,EAAgB;AACrB,wBAAIX,SAAS6B,UAAb,EAAwB;AACpB7B,iCAAS6B,UAAT,CAAoBC,MAApB,CAA2B9B,QAA3B;AACH;AACD,wBAAID,QAAQW,OAAZ,EAAqB;AACjBX,gCAAQW,OAAR,CAAgBI,IAAhB,CAAqBd,QAArB,EAA+BW,IAA/B;AACH;AACJ,iBAZE;AAaHT,uBAAO,eAAUC,GAAV,EAAe;AAClBH,6BAASI,mBAAT,CAA6BD,GAA7B,EAAkC,IAAlC;AACA,wBAAIJ,QAAQG,KAAZ,EAAmB;AACfH,gCAAQG,KAAR,CAAcY,IAAd,CAAmBd,QAAnB,EAA6BG,GAA7B;AACH;AACJ;AAlBE,aAAP;;AAqBA,mBAAO,IAAP;AACH,SAjIkC;;AAoInC;;;;;AAKA4B,2BAAmB,2BAAUvB,UAAV,EAAsB;AACrC,gBAAIwB,UAAU,EAAd;AACA,gBAAIC,UAAU,KAAKZ,MAAL,EAAd;;AAEA,6BAAEa,IAAF,CAAO1B,UAAP,EAAmB,UAAU2B,IAAV,EAAgBC,KAAhB,EAAuB;;AAEtC,oBAAI,CAACH,QAAQE,IAAR,CAAL,EAAoB;AAChB,wBAAI,OAAOC,KAAP,KAAiB,QAArB,EAA+B;AAC3B,4BAAI,iBAAEC,IAAF,CAAOD,KAAP,MAAkB,EAAtB,EAA0B;AACtBJ,oCAAQG,IAAR,IAAgBC,KAAhB;AACH;AACJ,qBAJD,MAIO,IAAI,iBAAEE,OAAF,CAAUF,KAAV,CAAJ,EAAsB;AACzB,4BAAIA,MAAMZ,MAAN,KAAiB,CAArB,EAAwB;AACpBQ,oCAAQG,IAAR,IAAgBC,KAAhB;AACH;AACJ,qBAJM,MAIA;AACHJ,gCAAQG,IAAR,IAAgBC,KAAhB;AACH;AACJ,iBAZD,MAYO,IAAIH,QAAQE,IAAR,KAAiBF,QAAQE,IAAR,MAAkBC,KAAvC,EAA8C;;AAEjD,wBAAI,QAAOA,KAAP,yCAAOA,KAAP,OAAiB,QAArB,EAA+B;AAC3B,4BAAI,CAAC,qBAAEG,OAAF,CAAUH,KAAV,EAAiBH,QAAQE,IAAR,CAAjB,CAAL,EAAsC;AAClCH,oCAAQG,IAAR,IAAgBC,KAAhB;AACH;AACJ,qBAJD,MAIO;AACHJ,gCAAQG,IAAR,IAAgBC,KAAhB;AACH;AACJ;AACJ,aAxBD;;AA0BA,gBAAI,CAAC,qBAAEI,OAAF,CAAUR,OAAV,CAAL,EAAyB;AACrB,qBAAKS,SAAL,CAAeT,OAAf;AACA,uBAAOA,OAAP;AACH;AACJ,SA3KkC;;AA6KnC;;;;;AAKAS,mBAAW,mBAAUT,OAAV,EAAmB,CAAE,CAlLG;;AAoLnC;;;;;AAKA5B,6BAAqB,6BAAUD,GAAV,EAAeuC,WAAf,EAA4B;AAC7C,gBAAI/B,IAAJ;AACA,gBAAIR,IAAIwC,MAAJ,KAAe,GAAnB,EAAwB;AACpBhC,uBAAO,iBAAEC,SAAF,CAAYT,IAAIU,YAAJ,IAAoBV,IAAIQ,IAApC,CAAP;AACA,+CAAkB,iBAAOiC,YAAzB,EAAuC,IAAvC,EAA6C,CAACjC,IAAD,EAAOR,GAAP,EAAYuC,WAAZ,CAA7C;AACH;AACJ,SA/LkC;;AAiMnC;;;;;;AAMAG,eAAO,eAAU9C,OAAV,EAAmB;AACtBA,sBAAUA,WAAW,EAArB;;AAEA;AACA,iBAAKoB,KAAL;;AAEA;AACA,+BAASzB,KAAT,CAAesB,SAAf,CAAyB6B,KAAzB,CAA+B/B,IAA/B,CAAoC,IAApC,EAA0Cf,OAA1C;AACH;AA/MkC,KAAtB,CAAjB;;sBAkNeN,U","file":"entry-model.js","sourcesContent":["'use strict';\n\nimport $ from '../jquery';\nimport { triggerEvtForInst } from '../events';\nimport _ from '../underscore';\nimport Backbone from '../backbone';\nimport events from './events';\n\n/**\n * A class provided to fill some gaps with the out of the box Backbone.Model class. Most notiably the inability\n * to send ONLY modified attributes back to the server.\n */\nvar EntryModel = Backbone.Model.extend({\n sync: function (method, model, options) {\n var instance = this;\n var oldError = options.error;\n\n options.error = function (xhr) {\n instance._serverErrorHandler(xhr, this);\n if (oldError) {\n oldError.apply(this, arguments);\n }\n };\n\n return Backbone.sync.apply(Backbone, arguments);\n },\n\n /**\n * Overrides default save handler to only save (send to server) attributes that have changed.\n * Also provides some default error handling.\n *\n * @override\n * @param attributes\n * @param options\n */\n save: function (attributes, options) {\n options = options || {};\n\n var instance = this;\n var Model;\n var syncModel;\n var error = options.error; // we override, so store original\n var success = options.success;\n\n\n // override error handler to provide some defaults\n options.error = function (model, xhr) {\n\n var data = $.parseJSON(xhr.responseText || xhr.data);\n\n // call original error handler\n if (error) {\n error.call(instance, instance, data, xhr);\n }\n };\n\n // if it is a new model, we don't have to worry about updating only changed attributes because they are all new\n if (this.isNew()) {\n\n // call super\n Backbone.Model.prototype.save.call(this, attributes, options);\n\n // only go to server if something has changed\n } else if (attributes) {\n // create temporary model\n Model = EntryModel.extend({\n url: this.url()\n });\n\n syncModel = new Model({\n id: this.id\n });\n\n syncModel.save = Backbone.Model.prototype.save;\n\n options.success = function (model, xhr) {\n\n // update original model with saved attributes\n instance.clear().set(model.toJSON());\n\n // call original success handler\n if (success) {\n success.call(instance, instance, xhr);\n }\n };\n\n // update temporary model with the changed attributes\n syncModel.save(attributes, options);\n }\n },\n\n /**\n * Destroys the model on the server. We need to override the default method as it does not support sending of\n * query paramaters.\n *\n * @override\n * @param options\n * ... {function} success - Server success callback\n * ... {function} error - Server error callback\n * ... {object} data\n *\n * @return EntryModel\n */\n destroy: function (options) {\n options = options || {};\n\n var instance = this;\n var url = this.url();\n var data;\n\n if (options.data) {\n data = $.param(options.data);\n }\n\n if (data && data.length) {\n // we need to add to the url as the data param does not work for jQuery DELETE requests\n url = url + '?' + data;\n }\n\n $.ajax({\n url: url,\n type: 'DELETE',\n dataType: 'json',\n contentType: 'application/json',\n success: function (data) {\n if (instance.collection){\n instance.collection.remove(instance);\n }\n if (options.success) {\n options.success.call(instance, data);\n }\n },\n error: function (xhr) {\n instance._serverErrorHandler(xhr, this);\n if (options.error) {\n options.error.call(instance, xhr);\n }\n }\n });\n\n return this;\n },\n\n\n /**\n * A more complex lookup for changed attributes then default backbone one.\n *\n * @param attributes\n */\n changedAttributes: function (attributes) {\n var changed = {};\n var current = this.toJSON();\n\n $.each(attributes, function (name, value) {\n\n if (!current[name]) {\n if (typeof value === 'string') {\n if ($.trim(value) !== '') {\n changed[name] = value;\n }\n } else if ($.isArray(value)) {\n if (value.length !== 0) {\n changed[name] = value;\n }\n } else {\n changed[name] = value;\n }\n } else if (current[name] && current[name] !== value) {\n\n if (typeof value === 'object') {\n if (!_.isEqual(value, current[name])) {\n changed[name] = value;\n }\n } else {\n changed[name] = value;\n }\n }\n });\n\n if (!_.isEmpty(changed)) {\n this.addExpand(changed);\n return changed;\n }\n },\n\n /**\n * Useful point to override if you always want to add an expand to your rest calls.\n *\n * @param changed attributes that have already changed\n */\n addExpand: function (changed) {},\n\n /**\n * Throws a server error event unless user input validation error (status 400)\n *\n * @param xhr\n */\n _serverErrorHandler: function (xhr, ajaxOptions) {\n var data;\n if (xhr.status !== 400) {\n data = $.parseJSON(xhr.responseText || xhr.data);\n triggerEvtForInst(events.SERVER_ERROR, this, [data, xhr, ajaxOptions]);\n }\n },\n\n /**\n * Fetches values, with some generic error handling\n *\n * @override\n * @param options\n */\n fetch: function (options) {\n options = options || {};\n\n // clear the model, so we do not merge the old with the new\n this.clear();\n\n // call super\n Backbone.Model.prototype.fetch.call(this, options);\n }\n});\n\nexport default EntryModel;\n"]}
|
|
1
|
+
{"version":3,"sources":["js/aui/restful-table/entry-model.js"],"names":["EntryModel","Backbone","Model","extend","sync","method","model","options","instance","oldError","error","xhr","_serverErrorHandler","apply","arguments","save","attributes","syncModel","success","data","$","parseJSON","responseText","call","isNew","prototype","url","id","clear","set","toJSON","destroy","param","length","ajax","type","dataType","contentType","collection","remove","changedAttributes","changed","current","each","name","value","trim","isArray","_","isEqual","isEmpty","addExpand","ajaxOptions","status","events","SERVER_ERROR","fetch"],"mappings":"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","file":"entry-model.js","sourcesContent":["'use strict';\n\nimport $ from '../jquery';\nimport { triggerEvtForInst } from '../events';\nimport _ from '../underscore';\nimport Backbone from '../backbone';\nimport events from './events';\n\n/**\n * A class provided to fill some gaps with the out of the box Backbone.Model class. Most notiably the inability\n * to send ONLY modified attributes back to the server.\n */\nvar EntryModel = Backbone.Model.extend({\n sync: function (method, model, options) {\n var instance = this;\n var oldError = options.error;\n\n options.error = function (xhr) {\n instance._serverErrorHandler(xhr, this);\n if (oldError) {\n oldError.apply(this, arguments);\n }\n };\n\n return Backbone.sync.apply(Backbone, arguments);\n },\n\n /**\n * Overrides default save handler to only save (send to server) attributes that have changed.\n * Also provides some default error handling.\n *\n * @override\n * @param attributes\n * @param options\n */\n save: function (attributes, options) {\n options = options || {};\n\n var instance = this;\n var Model;\n var syncModel;\n var error = options.error; // we override, so store original\n var success = options.success;\n\n\n // override error handler to provide some defaults\n options.error = function (model, xhr) {\n\n var data = $.parseJSON(xhr.responseText || xhr.data);\n\n // call original error handler\n if (error) {\n error.call(instance, instance, data, xhr);\n }\n };\n\n // if it is a new model, we don't have to worry about updating only changed attributes because they are all new\n if (this.isNew()) {\n\n // call super\n Backbone.Model.prototype.save.call(this, attributes, options);\n\n // only go to server if something has changed\n } else if (attributes) {\n // create temporary model\n Model = EntryModel.extend({\n url: this.url()\n });\n\n syncModel = new Model({\n id: this.id\n });\n\n syncModel.save = Backbone.Model.prototype.save;\n\n options.success = function (model, xhr) {\n\n // update original model with saved attributes\n instance.clear().set(model.toJSON());\n\n // call original success handler\n if (success) {\n success.call(instance, instance, xhr);\n }\n };\n\n // update temporary model with the changed attributes\n syncModel.save(attributes, options);\n }\n },\n\n /**\n * Destroys the model on the server. We need to override the default method as it does not support sending of\n * query paramaters.\n *\n * @override\n * @param options\n * ... {function} success - Server success callback\n * ... {function} error - Server error callback\n * ... {object} data\n *\n * @return EntryModel\n */\n destroy: function (options) {\n options = options || {};\n\n var instance = this;\n var url = this.url();\n var data;\n\n if (options.data) {\n data = $.param(options.data);\n }\n\n if (data && data.length) {\n // we need to add to the url as the data param does not work for jQuery DELETE requests\n url = url + '?' + data;\n }\n\n $.ajax({\n url: url,\n type: 'DELETE',\n dataType: 'json',\n contentType: 'application/json',\n success: function (data) {\n if (instance.collection){\n instance.collection.remove(instance);\n }\n if (options.success) {\n options.success.call(instance, data);\n }\n },\n error: function (xhr) {\n instance._serverErrorHandler(xhr, this);\n if (options.error) {\n options.error.call(instance, xhr);\n }\n }\n });\n\n return this;\n },\n\n\n /**\n * A more complex lookup for changed attributes then default backbone one.\n *\n * @param attributes\n */\n changedAttributes: function (attributes) {\n var changed = {};\n var current = this.toJSON();\n\n $.each(attributes, function (name, value) {\n\n if (!current[name]) {\n if (typeof value === 'string') {\n if ($.trim(value) !== '') {\n changed[name] = value;\n }\n } else if ($.isArray(value)) {\n if (value.length !== 0) {\n changed[name] = value;\n }\n } else {\n changed[name] = value;\n }\n } else if (current[name] && current[name] !== value) {\n\n if (typeof value === 'object') {\n if (!_.isEqual(value, current[name])) {\n changed[name] = value;\n }\n } else {\n changed[name] = value;\n }\n }\n });\n\n if (!_.isEmpty(changed)) {\n this.addExpand(changed);\n return changed;\n }\n },\n\n /**\n * Useful point to override if you always want to add an expand to your rest calls.\n *\n * @param changed attributes that have already changed\n */\n addExpand: function (changed) {},\n\n /**\n * Throws a server error event unless user input validation error (status 400)\n *\n * @param xhr\n */\n _serverErrorHandler: function (xhr, ajaxOptions) {\n var data;\n if (xhr.status !== 400) {\n data = $.parseJSON(xhr.responseText || xhr.data);\n triggerEvtForInst(events.SERVER_ERROR, this, [data, xhr, ajaxOptions]);\n }\n },\n\n /**\n * Fetches values, with some generic error handling\n *\n * @override\n * @param options\n */\n fetch: function (options) {\n options = options || {};\n\n // clear the model, so we do not merge the old with the new\n this.clear();\n\n // call super\n Backbone.Model.prototype.fetch.call(this, options);\n }\n});\n\nexport default EntryModel;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["js/aui/restful-table/row.js"],"names":["dialog","View","extend","tagName","events","initialize","options","instance","_event","classNames","dataKeys","columns","allowEdit","allowDelete","Error","index","deleteConfirmation","allowReorder","$el","el","bind","CANCEL","disabled","FOCUS","field","focus","BLUR","unfocus","MODAL","addClass","ACTIVE","MODELESS","removeClass","renderDragHandle","DRAG_HANDLE","defaultColumnRenderer","data","value","document","createTextNode","toString","sync","attr","model","addExpand","showLoading","save","success","hideLoading","render","trigger","UPDATED","error","refresh","fetch","apply","arguments","hasFocus","hasClass","FOCUSED","LOADING","edit","e","target","is","EDITABLE","closest","ROW_EDIT","renderOperations","DELETE","text","AJS","I18n","getText","click","preventDefault","destroy","popup","get","element","html","toJSON","show","find","hide","submit","renderData","$opsCell","append","$throbberCell","DISABLED","EDIT_ROW","READ_ONLY","empty","ORDER","appendTo","id","each","i","column","contents","$cell","fieldName","args","name","readView","$editableRegion","trim","NO_VALUE","emptyText","styleClass","ROW","RENDER","CONTENT_REFRESHED"],"mappings":"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","file":"row.js","sourcesContent":["'use strict';\n\nimport $ from '../jquery';\nimport * as dialog from '../dialog';\nimport Backbone from '../backbone';\nimport classNames from './class-names';\nimport dataKeys from './data-keys';\nimport events from './events';\nimport i18n from '../i18n';\nimport throbber from './throbber';\n\n/**\n * An abstract class that gives the required behaviour for RestfulTable rows.\n * Extend this class and pass it as the {views.row} property of the options passed to RestfulTable in construction.\n */\nexport default Backbone.View.extend({\n tagName: 'tr',\n\n events: {\n 'click .aui-restfultable-editable': 'edit'\n },\n\n initialize: function (options) {\n var instance = this;\n\n options = options || {};\n\n this._event = events;\n this.classNames = classNames;\n this.dataKeys = dataKeys;\n this.columns = options.columns;\n this.allowEdit = options.allowEdit;\n this.allowDelete = options.allowDelete;\n\n if (!this.events['click .aui-restfultable-editable']) {\n throw new Error('It appears you have overridden the events property. To add events you will need to use' +\n 'a work around. https://github.com/documentcloud/backbone/issues/244');\n }\n\n this.index = options.index || 0;\n this.deleteConfirmation = options.deleteConfirmation;\n this.allowReorder = options.allowReorder;\n this.$el = $(this.el);\n\n this.bind(this._event.CANCEL, function () {\n this.disabled = true;\n })\n .bind(this._event.FOCUS, function (field) {\n this.focus(field);\n })\n .bind(this._event.BLUR, function () {\n this.unfocus();\n })\n .bind(this._event.MODAL, function () {\n this.$el.addClass(this.classNames.ACTIVE);\n })\n .bind(this._event.MODELESS, function () {\n this.$el.removeClass(this.classNames.ACTIVE);\n });\n },\n\n /**\n * Renders drag handle\n *\n * @return jQuery\n */\n renderDragHandle: function () {\n return '<span class=\"' + this.classNames.DRAG_HANDLE + '\"></span></td>';\n },\n\n /**\n * Renders default cell contents\n *\n * @param data\n *\n * @return {undefiend, String}\n */\n defaultColumnRenderer: function (data) {\n if (data.value) {\n return document.createTextNode(data.value.toString());\n }\n },\n\n /**\n * Save changed attributes back to server and re-render\n *\n * @param attr\n *\n * @return {Row}\n */\n sync: function (attr) {\n var instance = this;\n\n this.model.addExpand(attr);\n this.showLoading();\n this.model.save(attr, {\n success: function () {\n instance.hideLoading().render();\n instance.trigger(instance._event.UPDATED);\n },\n error: function () {\n instance.hideLoading();\n }\n });\n\n return this;\n },\n\n /**\n * Get model from server and re-render\n *\n * @return {Row}\n */\n refresh: function (success, error) {\n var instance = this;\n\n this.showLoading();\n this.model.fetch({\n success: function () {\n instance.hideLoading().render();\n if (success) {\n success.apply(this, arguments);\n }\n },\n error: function () {\n instance.hideLoading();\n if (error) {\n error.apply(this, arguments);\n }\n }\n });\n\n return this;\n },\n\n /**\n * Returns true if row has focused class\n *\n * @return Boolean\n */\n hasFocus: function () {\n return this.$el.hasClass(this.classNames.FOCUSED);\n },\n\n /**\n * Adds focus class (Item has been recently updated)\n *\n * @return Row\n */\n focus: function () {\n $(this.el).addClass(this.classNames.FOCUSED);\n return this;\n },\n\n /**\n * Removes focus class\n *\n * @return Row\n */\n unfocus: function () {\n $(this.el).removeClass(this.classNames.FOCUSED);\n return this;\n },\n\n /**\n * Adds loading class (to show server activity)\n *\n * @return Row\n */\n showLoading: function () {\n this.$el.addClass(this.classNames.LOADING);\n return this;\n },\n\n /**\n * Hides loading class (to show server activity)\n *\n * @return Row\n */\n hideLoading: function () {\n this.$el.removeClass(this.classNames.LOADING);\n return this;\n },\n\n /**\n * Switches row into edit mode\n *\n * @param e\n */\n edit: function (e) {\n var field;\n if ($(e.target).is('.' + this.classNames.EDITABLE)) {\n field = $(e.target).attr('data-field-name');\n } else {\n field = $(e.target).closest('.' + this.classNames.EDITABLE).attr('data-field-name');\n }\n this.trigger(this._event.ROW_EDIT, field);\n return this;\n },\n\n /**\n * Can be overriden to add custom options.\n *\n * @returns {jQuery}\n */\n renderOperations: function () {\n var instance = this;\n if (this.allowDelete !== false) {\n return $(\"<a href='#' class='aui-button' />\")\n .addClass(this.classNames.DELETE)\n .text(AJS.I18n.getText('aui.words.delete')).click(function (e) {\n e.preventDefault();\n instance.destroy();\n });\n }\n },\n\n /**\n * Removes entry from table.\n *\n * @returns {undefined}\n */\n destroy: function () {\n if (this.deleteConfirmation) {\n var popup = dialog.popup(400, 200, 'delete-entity-' + this.model.get('id'));\n popup.element.html(this.deleteConfirmation(this.model.toJSON()));\n popup.show();\n popup.element.find('.cancel').click(function () {\n popup.hide();\n });\n popup.element.find('form').submit(function (e) {\n popup.hide();\n this.model.destroy();\n e.preventDefault();\n }.bind(this));\n } else {\n this.model.destroy();\n }\n },\n\n /**\n * Renders a generic edit row. You probably want to override this in a sub class.\n *\n * @return Row\n */\n render: function () {\n var instance = this;\n var renderData = this.model.toJSON();\n var $opsCell = $(\"<td class='aui-restfultable-operations' />\").append(this.renderOperations({}, renderData));\n var $throbberCell = $(\"<td class='aui-restfultable-status' />\").append(throbber());\n\n // restore state\n this.$el\n .removeClass(this.classNames.DISABLED + ' ' + this.classNames.FOCUSED + ' ' + this.classNames.LOADING + ' ' + this.classNames.EDIT_ROW)\n .addClass(this.classNames.READ_ONLY)\n .empty();\n\n\n if (this.allowReorder) {\n $('<td class=\"' + this.classNames.ORDER + '\" />').append(this.renderDragHandle()).appendTo(instance.$el);\n }\n\n this.$el.attr('data-id', this.model.id); // helper for webdriver testing\n\n $.each(this.columns, function (i, column) {\n var contents;\n var $cell = $('<td />');\n var value = renderData[column.id];\n var fieldName = column.fieldName || column.id;\n var args = [{name: fieldName, value: value, allowEdit: column.allowEdit}, renderData, instance.model];\n\n if (value) {\n instance.$el.attr('data-' + column.id, value); // helper for webdriver testing\n }\n\n if (column.readView) {\n contents = new column.readView({\n model: instance.model\n }).render(args[0]);\n } else {\n contents = instance.defaultColumnRenderer.apply(instance, args);\n }\n\n if (instance.allowEdit !== false && column.allowEdit !== false) {\n var $editableRegion = $('<span />')\n .addClass(instance.classNames.EDITABLE)\n .append('<span class=\"aui-icon aui-icon-small aui-iconfont-edit\"></span>')\n .append(contents)\n .attr('data-field-name', fieldName);\n\n $cell = $('<td />').append($editableRegion).appendTo(instance.$el);\n\n if (!contents || $.trim(contents) == '') {\n $cell.addClass(instance.classNames.NO_VALUE);\n $editableRegion.html($('<em />').text(this.emptyText || AJS.I18n.getText('aui.enter.value')));\n }\n\n } else {\n $cell.append(contents);\n }\n\n if (column.styleClass) {\n $cell.addClass(column.styleClass);\n }\n\n $cell.appendTo(instance.$el);\n });\n\n this.$el\n .append($opsCell)\n .append($throbberCell)\n .addClass(this.classNames.ROW + ' ' + this.classNames.READ_ONLY);\n\n this.trigger(this._event.RENDER, this.$el, renderData);\n this.$el.trigger(this._event.CONTENT_REFRESHED, [this.$el]);\n\n return this;\n }\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["js/aui/restful-table/row.js"],"names":["dialog","Backbone","View","extend","tagName","events","initialize","options","instance","_event","classNames","dataKeys","columns","allowEdit","allowDelete","Error","index","deleteConfirmation","allowReorder","$el","el","bind","CANCEL","disabled","FOCUS","field","focus","BLUR","unfocus","MODAL","addClass","ACTIVE","MODELESS","removeClass","renderDragHandle","DRAG_HANDLE","defaultColumnRenderer","data","value","document","createTextNode","toString","sync","attr","model","addExpand","showLoading","save","success","hideLoading","render","trigger","UPDATED","error","refresh","fetch","apply","arguments","hasFocus","hasClass","FOCUSED","LOADING","edit","e","target","is","EDITABLE","closest","ROW_EDIT","renderOperations","DELETE","text","AJS","I18n","getText","click","preventDefault","destroy","popup","get","element","html","toJSON","show","find","hide","submit","renderData","$opsCell","append","$throbberCell","DISABLED","EDIT_ROW","READ_ONLY","empty","ORDER","appendTo","id","$","each","i","column","contents","$cell","fieldName","args","name","readView","$editableRegion","trim","NO_VALUE","emptyText","styleClass","ROW","RENDER","CONTENT_REFRESHED"],"mappings":"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","file":"row.js","sourcesContent":["'use strict';\n\nimport $ from '../jquery';\nimport * as dialog from '../dialog';\nimport Backbone from '../backbone';\nimport classNames from './class-names';\nimport dataKeys from './data-keys';\nimport events from './events';\nimport i18n from '../i18n';\nimport throbber from './throbber';\n\n/**\n * An abstract class that gives the required behaviour for RestfulTable rows.\n * Extend this class and pass it as the {views.row} property of the options passed to RestfulTable in construction.\n */\nexport default Backbone.View.extend({\n tagName: 'tr',\n\n events: {\n 'click .aui-restfultable-editable': 'edit'\n },\n\n initialize: function (options) {\n var instance = this;\n\n options = options || {};\n\n this._event = events;\n this.classNames = classNames;\n this.dataKeys = dataKeys;\n this.columns = options.columns;\n this.allowEdit = options.allowEdit;\n this.allowDelete = options.allowDelete;\n\n if (!this.events['click .aui-restfultable-editable']) {\n throw new Error('It appears you have overridden the events property. To add events you will need to use' +\n 'a work around. https://github.com/documentcloud/backbone/issues/244');\n }\n\n this.index = options.index || 0;\n this.deleteConfirmation = options.deleteConfirmation;\n this.allowReorder = options.allowReorder;\n this.$el = $(this.el);\n\n this.bind(this._event.CANCEL, function () {\n this.disabled = true;\n })\n .bind(this._event.FOCUS, function (field) {\n this.focus(field);\n })\n .bind(this._event.BLUR, function () {\n this.unfocus();\n })\n .bind(this._event.MODAL, function () {\n this.$el.addClass(this.classNames.ACTIVE);\n })\n .bind(this._event.MODELESS, function () {\n this.$el.removeClass(this.classNames.ACTIVE);\n });\n },\n\n /**\n * Renders drag handle\n *\n * @return jQuery\n */\n renderDragHandle: function () {\n return '<span class=\"' + this.classNames.DRAG_HANDLE + '\"></span></td>';\n },\n\n /**\n * Renders default cell contents\n *\n * @param data\n *\n * @return {undefiend, String}\n */\n defaultColumnRenderer: function (data) {\n if (data.value) {\n return document.createTextNode(data.value.toString());\n }\n },\n\n /**\n * Save changed attributes back to server and re-render\n *\n * @param attr\n *\n * @return {Row}\n */\n sync: function (attr) {\n var instance = this;\n\n this.model.addExpand(attr);\n this.showLoading();\n this.model.save(attr, {\n success: function () {\n instance.hideLoading().render();\n instance.trigger(instance._event.UPDATED);\n },\n error: function () {\n instance.hideLoading();\n }\n });\n\n return this;\n },\n\n /**\n * Get model from server and re-render\n *\n * @return {Row}\n */\n refresh: function (success, error) {\n var instance = this;\n\n this.showLoading();\n this.model.fetch({\n success: function () {\n instance.hideLoading().render();\n if (success) {\n success.apply(this, arguments);\n }\n },\n error: function () {\n instance.hideLoading();\n if (error) {\n error.apply(this, arguments);\n }\n }\n });\n\n return this;\n },\n\n /**\n * Returns true if row has focused class\n *\n * @return Boolean\n */\n hasFocus: function () {\n return this.$el.hasClass(this.classNames.FOCUSED);\n },\n\n /**\n * Adds focus class (Item has been recently updated)\n *\n * @return Row\n */\n focus: function () {\n $(this.el).addClass(this.classNames.FOCUSED);\n return this;\n },\n\n /**\n * Removes focus class\n *\n * @return Row\n */\n unfocus: function () {\n $(this.el).removeClass(this.classNames.FOCUSED);\n return this;\n },\n\n /**\n * Adds loading class (to show server activity)\n *\n * @return Row\n */\n showLoading: function () {\n this.$el.addClass(this.classNames.LOADING);\n return this;\n },\n\n /**\n * Hides loading class (to show server activity)\n *\n * @return Row\n */\n hideLoading: function () {\n this.$el.removeClass(this.classNames.LOADING);\n return this;\n },\n\n /**\n * Switches row into edit mode\n *\n * @param e\n */\n edit: function (e) {\n var field;\n if ($(e.target).is('.' + this.classNames.EDITABLE)) {\n field = $(e.target).attr('data-field-name');\n } else {\n field = $(e.target).closest('.' + this.classNames.EDITABLE).attr('data-field-name');\n }\n this.trigger(this._event.ROW_EDIT, field);\n return this;\n },\n\n /**\n * Can be overriden to add custom options.\n *\n * @returns {jQuery}\n */\n renderOperations: function () {\n var instance = this;\n if (this.allowDelete !== false) {\n return $(\"<a href='#' class='aui-button' />\")\n .addClass(this.classNames.DELETE)\n .text(AJS.I18n.getText('aui.words.delete')).click(function (e) {\n e.preventDefault();\n instance.destroy();\n });\n }\n },\n\n /**\n * Removes entry from table.\n *\n * @returns {undefined}\n */\n destroy: function () {\n if (this.deleteConfirmation) {\n var popup = dialog.popup(400, 200, 'delete-entity-' + this.model.get('id'));\n popup.element.html(this.deleteConfirmation(this.model.toJSON()));\n popup.show();\n popup.element.find('.cancel').click(function () {\n popup.hide();\n });\n popup.element.find('form').submit(function (e) {\n popup.hide();\n this.model.destroy();\n e.preventDefault();\n }.bind(this));\n } else {\n this.model.destroy();\n }\n },\n\n /**\n * Renders a generic edit row. You probably want to override this in a sub class.\n *\n * @return Row\n */\n render: function () {\n var instance = this;\n var renderData = this.model.toJSON();\n var $opsCell = $(\"<td class='aui-restfultable-operations' />\").append(this.renderOperations({}, renderData));\n var $throbberCell = $(\"<td class='aui-restfultable-status' />\").append(throbber());\n\n // restore state\n this.$el\n .removeClass(this.classNames.DISABLED + ' ' + this.classNames.FOCUSED + ' ' + this.classNames.LOADING + ' ' + this.classNames.EDIT_ROW)\n .addClass(this.classNames.READ_ONLY)\n .empty();\n\n\n if (this.allowReorder) {\n $('<td class=\"' + this.classNames.ORDER + '\" />').append(this.renderDragHandle()).appendTo(instance.$el);\n }\n\n this.$el.attr('data-id', this.model.id); // helper for webdriver testing\n\n $.each(this.columns, function (i, column) {\n var contents;\n var $cell = $('<td />');\n var value = renderData[column.id];\n var fieldName = column.fieldName || column.id;\n var args = [{name: fieldName, value: value, allowEdit: column.allowEdit}, renderData, instance.model];\n\n if (value) {\n instance.$el.attr('data-' + column.id, value); // helper for webdriver testing\n }\n\n if (column.readView) {\n contents = new column.readView({\n model: instance.model\n }).render(args[0]);\n } else {\n contents = instance.defaultColumnRenderer.apply(instance, args);\n }\n\n if (instance.allowEdit !== false && column.allowEdit !== false) {\n var $editableRegion = $('<span />')\n .addClass(instance.classNames.EDITABLE)\n .append('<span class=\"aui-icon aui-icon-small aui-iconfont-edit\"></span>')\n .append(contents)\n .attr('data-field-name', fieldName);\n\n $cell = $('<td />').append($editableRegion).appendTo(instance.$el);\n\n if (!contents || $.trim(contents) == '') {\n $cell.addClass(instance.classNames.NO_VALUE);\n $editableRegion.html($('<em />').text(this.emptyText || AJS.I18n.getText('aui.enter.value')));\n }\n\n } else {\n $cell.append(contents);\n }\n\n if (column.styleClass) {\n $cell.addClass(column.styleClass);\n }\n\n $cell.appendTo(instance.$el);\n });\n\n this.$el\n .append($opsCell)\n .append($throbberCell)\n .addClass(this.classNames.ROW + ' ' + this.classNames.READ_ONLY);\n\n this.trigger(this._event.RENDER, this.$el, renderData);\n this.$el.trigger(this._event.CONTENT_REFRESHED, [this.$el]);\n\n return this;\n }\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["js/aui/restful-table.js"],"names":["logger","triggerEvt","name","args","document","trigger","triggerEvtForInst","evt","inst","id","RestfulTable","View","extend","initialize","options","instance","_getDefaultOptions","_event","classNames","dataKeys","$table","el","addClass","RESTFUL_TABLE","ALLOW_HOVER","LOADING","wrapAll","$thead","$theadRow","appendTo","$tbody","length","Error","selector","columns","showGlobalLoading","forEach","column","header","isFunction","warn","append","_models","_createCollection","_rowClass","views","row","editRows","closest","submit","e","focusedRow","SAVE","preventDefault","allowReorder","prepend","sortable","handle","DRAG_HANDLE","helper","elt","attr","MOVEABLE","children","each","i","$td","borderLeft","parseInt","css","borderRight","width","clientWidth","html","left","offset","body","start","event","ui","cachedHeight","clientHeight","$this","placeholder","find","item","eq","td","getColumnCount","height","visibility","getRowFromElement","MODAL","stop","is","removeClass","ROW","MODELESS","update","context","nextItem","next","prevItem","prev","move","axis","delay","containment","cursor","scroll","zIndex","bind","target","allowCreate","_createRow","editRow","isCreateRow","model","url","resources","self","cancelAccessKey","submitAccessKey","fieldFocusSelector","CREATED","values","addPosition","undefined","createPosition","addRow","VALIDATION_ERROR","FOCUS","render","errors","$create","CREATE","_applyFocusCoordinator","autoFocus","getRows","hasFocus","removeRow","fetchInitialResources","all","entries","populate","get","createRequest","afterElement","position","afterModel","after","data","reverseOrder","ajax","type","dataType","contentType","JSON","stringify","complete","hideLoading","success","xhr","REORDER_SUCCESS","error","responseData","parseJSON","responseText","SERVER_ERROR","showLoading","RowsAwareCollection","Collection","sort","comparator","tableRows","models","sortBy","silent","remove","prototype","apply","arguments","index","currentTableRows","some","reverse","hideGlobalLoading","reset","renderRows","isEmpty","showNoEntriesMsg","INITIALIZED","focus","$loading","loadingMsg","insertAfter","view","_renderRow","add","removeNoEntriesMsg","ROW_ADDED","ROW_REMOVED","getModels","getTable","getTableBody","getCreateRow","staticFieldCount","tr","ROW_VIEW","$noEntries","NO_ENTRIES","text","noEntriesMsg","READ_ONLY","$row","push","$rows","allowEdit","allowDelete","deleteConfirmation","ROW_EDIT","field","EDIT_ROW","edit","$el","insertBefore","isRowBeingEdited","delegateEvents","ROW_INITIALIZED","isBeingEdited","hasFocusBound","BLUR","enable","_removeEditRow","editView","inArray","splice","_shiftFocusAfterEdit","_saveEditRowOnBlur","dismissEditRows","hasUpdates","FINISHED_EDITING","isUpdateMode","toJSON","UPDATED","focusUpdated","unbind","CANCEL","disable","rows","els","map","AJS","I18n","getText","ClassNames","CustomCreateView","CustomEditView","CustomReadView","DataKeys","EditRow","EntryModel","Events","Row","Throbber"],"mappings":"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","file":"restful-table.js","sourcesContent":["'use strict';\n\nimport $ from './jquery';\nimport * as logger from './internal/log';\nimport Backbone from './backbone';\nimport classNames from './restful-table/class-names';\nimport CustomCreateView from './restful-table/custom-create-view';\nimport CustomEditView from './restful-table/custom-edit-view';\nimport CustomReadView from './restful-table/custom-read-view';\nimport dataKeys from './restful-table/data-keys';\nimport EditRow from './restful-table/edit-row';\nimport EntryModel from './restful-table/entry-model';\nimport events from './restful-table/events';\nimport globalize from './internal/globalize';\nimport i18n from './i18n';\nimport Row from './restful-table/row';\nimport throbber from './restful-table/throbber';\n\n/**\n * Triggers a custom event on the document object\n *\n * @param {String} name - name of event\n * @param {Array} args - args for event handler\n */\nfunction triggerEvt (name, args) {\n $(document).trigger(name, args);\n}\n\n/**\n * Some generic error handling that fires event in multiple contexts\n * - on document\n * - on Instance\n * - on document with prefixed id.\n *\n * @param evt\n * @param inst\n * @param args\n */\nfunction triggerEvtForInst (evt, inst, args) {\n $(inst).trigger(evt, args);\n triggerEvt(evt, args);\n if (inst.id) {\n triggerEvt(inst.id + '_' + evt, args);\n }\n}\n\n/**\n * A table whose entries/rows can be retrieved, added and updated via REST (CRUD).\n * It uses backbone.js to sync the table's state back to the server, avoiding page refreshes.\n *\n * @class RestfulTable\n */\nvar RestfulTable = Backbone.View.extend({\n /**\n * @param {!Object} options\n * ... {!Object} resources\n * ... ... {(string|function(function(Array.<Object>)))} all - URL of REST resource OR function that retrieves all entities.\n * ... ... {string} self - URL of REST resource to sync a single entities state (CRUD).\n * ... {!(selector|Element|jQuery)} el - Table element or selector of the table element to populate.\n * ... {!Array.<Object>} columns - Which properties of the entities to render. The id of a column maps to the property of an entity.\n * ... {Object} views\n * ... ... {RestfulTable.EditRow} editRow - Backbone view that renders the edit & create row. Your view MUST extend RestfulTable.EditRow.\n * ... ... {RestfulTable.Row} row - Backbone view that renders the readonly row. Your view MUST extend RestfulTable.Row.\n * ... {boolean} allowEdit - Is the table editable. If true, clicking row will switch it to edit state. Default true.\n * ... {boolean} allowDelete - Can entries be removed from the table, default true.\n * ... {boolean} allowCreate - Can new entries be added to the table, default true.\n * ... {boolean} allowReorder - Can we drag rows to reorder them, default false.\n * ... {boolean} autoFocus - Automatically set focus to first field on init, default false.\n * ... {boolean} reverseOrder - Reverse the order of rows, default false.\n * ... {boolean} silent - Do not trigger a \"refresh\" event on sort, default false.\n * ... {String} id - The id for the table. This id will be used to fire events specific to this instance.\n * ... {string} createPosition - If set to \"bottom\", place the create form at the bottom of the table instead of the top.\n * ... {string} addPosition - If set to \"bottom\", add new rows at the bottom of the table instead of the top. If undefined, createPosition will be used to define where to add the new row.\n * ... {string} noEntriesMsg - Text to display under the table header if it is empty, default empty.\n * ... {string} loadingMsg - Text/HTML to display while loading, default \"Loading\".\n * ... {string} submitAccessKey - Access key for submitting.\n * ... {string} cancelAccessKey - Access key for canceling.\n * ... {function(Object): (string|function(number, string): string)} deleteConfirmation - HTML to display in popup to confirm deletion.\n * ... {function(string): (selector|jQuery|Element)} fieldFocusSelector - Element to focus on given a name.\n * ... {EntryModel} model - Backbone model representing a row, default EntryModel.\n * ... {Backbone.Collection} Collection - Backbone collection representing the entire table, default Backbone.Collection.\n */\n initialize: function (options) {\n var instance = this;\n\n // combine default and user options\n instance.options = $.extend(true, instance._getDefaultOptions(options), options);\n\n // Prefix events for this instance with this id.\n instance.id = this.options.id;\n\n // faster lookup\n instance._event = events;\n instance.classNames = classNames;\n instance.dataKeys = dataKeys;\n\n // shortcuts to popular elements\n this.$table = $(options.el)\n .addClass(this.classNames.RESTFUL_TABLE)\n .addClass(this.classNames.ALLOW_HOVER)\n .addClass('aui')\n .addClass(instance.classNames.LOADING);\n\n this.$table.wrapAll(\"<form class='aui' action='#' />\");\n\n this.$thead = $('<thead/>');\n this.$theadRow = $('<tr />').appendTo(this.$thead);\n this.$tbody = $('<tbody/>');\n\n if (!this.$table.length) {\n throw new Error('RestfulTable: Init failed! The table you have specified [' + this.$table.selector + '] cannot be found.');\n }\n\n if (!this.options.columns) {\n throw new Error(\"RestfulTable: Init failed! You haven't provided any columns to render.\");\n }\n\n // Let user know the table is loading\n this.showGlobalLoading();\n this.options.columns.forEach(function (column) {\n var header = $.isFunction(column.header) ? column.header() : column.header;\n if (typeof header === 'undefined') {\n logger.warn('You have not specified [header] for column [' + column.id + ']. Using id for now...');\n header = column.id;\n }\n\n instance.$theadRow.append('<th>' + header + '</th>');\n });\n\n // columns for submit buttons and loading indicator used when editing\n instance.$theadRow.append('<th></th><th></th>');\n\n // create a new Backbone collection to represent rows (http://documentcloud.github.com/backbone/#Collection)\n this._models = this._createCollection();\n\n // shortcut to the class we use to create rows\n this._rowClass = this.options.views.row;\n\n this.editRows = []; // keep track of rows that are being edited concurrently\n\n this.$table.closest('form').submit(function (e) {\n if (instance.focusedRow) {\n // Delegates saving of row. See EditRow.submit\n instance.focusedRow.trigger(instance._event.SAVE);\n }\n e.preventDefault();\n });\n\n if (this.options.allowReorder) {\n // Add allowance for another cell to the <thead>\n this.$theadRow.prepend('<th />');\n\n // Allow drag and drop reordering of rows\n this.$tbody.sortable({\n handle: '.' + this.classNames.DRAG_HANDLE,\n helper: function (e, elt) {\n var helper = $('<div/>').attr('class', elt.attr('class')).addClass(instance.classNames.MOVEABLE);\n elt.children().each(function (i) {\n var $td = $(this);\n\n // .offsetWidth/.outerWidth() is broken in webkit for tables, so we do .clientWidth + borders\n // Need to coerce the border-left-width to an in because IE - http://bugs.jquery.com/ticket/10855\n var borderLeft = parseInt(0 + $td.css('border-left-width'), 10);\n var borderRight = parseInt(0 + $td.css('border-right-width'), 10);\n var width = $td[0].clientWidth + borderLeft + borderRight;\n\n helper.append($('<div/>').html($td.html()).attr('class', $td.attr('class')).width(width));\n });\n\n helper = $(\"<div class='aui-restfultable-readonly'/>\").append(helper); // Basically just to get the styles.\n helper.css({left: elt.offset().left}); // To align with the other table rows, since we've locked scrolling on x.\n helper.appendTo(document.body);\n\n return helper;\n },\n start: function (event, ui) {\n var cachedHeight = ui.helper[0].clientHeight;\n var $this = ui.placeholder.find('td');\n\n // Make sure that when we start dragging widths do not change\n ui.item\n .addClass(instance.classNames.MOVEABLE)\n .children().each(function (i) {\n $(this).width($this.eq(i).width());\n });\n\n // Create a <td> to add to the placeholder <tr> to inherit CSS styles.\n var td = '<td colspan=\"' + instance.getColumnCount() + '\"> </td>';\n\n ui.placeholder.html(td).css({\n height: cachedHeight,\n visibility: 'visible'\n });\n\n // Stop hover effects etc from occuring as we move the mouse (while dragging) over other rows\n instance.getRowFromElement(ui.item[0]).trigger(instance._event.MODAL);\n },\n stop: function (event, ui) {\n if ($(ui.item[0]).is(':visible')) {\n ui.item\n .removeClass(instance.classNames.MOVEABLE)\n .children().attr('style', '');\n\n ui.placeholder.removeClass(instance.classNames.ROW);\n\n // Return table to a normal state\n instance.getRowFromElement(ui.item[0]).trigger(instance._event.MODELESS);\n }\n },\n update: function (event, ui) {\n var context = {\n row: instance.getRowFromElement(ui.item[0]),\n item: ui.item,\n nextItem: ui.item.next(),\n prevItem: ui.item.prev()\n };\n\n instance.move(context);\n },\n axis: 'y',\n delay: 0,\n containment: 'document',\n cursor: 'move',\n scroll: true,\n zIndex: 8000\n });\n\n // Prevent text selection while reordering.\n this.$tbody.bind('selectstart mousedown', function (event) {\n return !$(event.target).is('.' + instance.classNames.DRAG_HANDLE);\n });\n }\n\n\n if (this.options.allowCreate !== false) {\n\n // Create row responsible for adding new entries ...\n this._createRow = new this.options.views.editRow({\n columns: this.options.columns,\n isCreateRow: true,\n model: this.options.model.extend({\n url: function () {\n return instance.options.resources.self;\n }\n }),\n cancelAccessKey: this.options.cancelAccessKey,\n submitAccessKey: this.options.submitAccessKey,\n allowReorder: this.options.allowReorder,\n fieldFocusSelector: this.options.fieldFocusSelector\n })\n .bind(this._event.CREATED, function (values) {\n if ((instance.options.addPosition == undefined && instance.options.createPosition === 'bottom') ||\n instance.options.addPosition === 'bottom') {\n instance.addRow(values);\n } else {\n instance.addRow(values, 0);\n }\n })\n .bind(this._event.VALIDATION_ERROR, function () {\n this.trigger(instance._event.FOCUS);\n })\n .render({\n errors: {},\n values: {}\n });\n\n // ... and appends it as the first row\n this.$create = $('<tbody class=\"' + this.classNames.CREATE + '\" />')\n .append(this._createRow.el);\n\n // Manage which row has focus\n this._applyFocusCoordinator(this._createRow);\n\n // focus create row\n if (this.options.autoFocus) {\n this._createRow.trigger(this._event.FOCUS);\n }\n }\n\n // when a model is removed from the collection, remove it from the viewport also\n this._models.bind('remove', function (model) {\n instance.getRows().forEach(function (row) {\n if (row.model === model) {\n if (row.hasFocus() && instance._createRow) {\n instance._createRow.trigger(instance._event.FOCUS);\n }\n instance.removeRow(row);\n }\n });\n });\n\n this.fetchInitialResources();\n },\n\n fetchInitialResources: function () {\n var instance = this;\n if ($.isFunction(this.options.resources.all)) {\n this.options.resources.all(function (entries) {\n instance.populate(entries);\n });\n } else {\n $.get(this.options.resources.all, function (entries) {\n instance.populate(entries);\n });\n }\n },\n\n move: function (context) {\n\n var instance = this;\n\n var createRequest = function (afterElement) {\n if (!afterElement.length) {\n return {\n position: 'First'\n };\n } else {\n var afterModel = instance.getRowFromElement(afterElement).model;\n return {\n after: afterModel.url()\n };\n }\n };\n\n if (context.row) {\n\n var data = instance.options.reverseOrder ? createRequest(context.nextItem) : createRequest(context.prevItem);\n\n $.ajax({\n url: context.row.model.url() + '/move',\n type: 'POST',\n dataType: 'json',\n contentType: 'application/json',\n data: JSON.stringify(data),\n complete: function () {\n // hides loading indicator (spinner)\n context.row.hideLoading();\n },\n success: function (xhr) {\n triggerEvtForInst(instance._event.REORDER_SUCCESS, instance, [xhr]);\n },\n error: function (xhr) {\n var responseData = $.parseJSON(xhr.responseText || xhr.data);\n triggerEvtForInst(instance._event.SERVER_ERROR, instance, [responseData, xhr, this]);\n }\n });\n\n // shows loading indicator (spinner)\n context.row.showLoading();\n }\n },\n\n _createCollection: function () {\n var instance = this;\n\n // create a new Backbone collection to represent rows (http://documentcloud.github.com/backbone/#Collection)\n var RowsAwareCollection = this.options.Collection.extend({\n // Force the collection to re-sort itself. You don't need to call this under normal\n // circumstances, as the set will maintain sort order as each item is added.\n sort: function (options) {\n options || (options = {});\n if (!this.comparator) {\n throw new Error('Cannot sort a set without a comparator');\n }\n this.tableRows = instance.getRows();\n this.models = this.sortBy(this.comparator, this);\n this.tableRows = undefined;\n if (!options.silent) {\n this.trigger('refresh', this, options);\n }\n return this;\n },\n remove: function (models, options) {\n this.tableRows = instance.getRows();\n Backbone.Collection.prototype.remove.apply(this, arguments);\n this.tableRows = undefined;\n return this;\n }\n });\n\n return new RowsAwareCollection([], {\n comparator: function (row) {\n // sort models in collection based on dom ordering\n var index;\n\n var currentTableRows = (this && this.tableRows !== undefined) ? this.tableRows : instance.getRows();\n currentTableRows.some(function (item, i) {\n if (item.model.id === row.id) {\n index = i;\n return true;\n }\n });\n return index;\n }\n });\n },\n\n /**\n * Refreshes table with entries\n *\n * @param entries\n */\n populate: function (entries) {\n if (this.options.reverseOrder) {\n entries.reverse();\n }\n\n this.hideGlobalLoading();\n if (entries && entries.length) {\n // Empty the models collection\n this._models.reset([], {silent: true});\n // Add all the entries to collection and render them\n this.renderRows(entries);\n // show message to user if we have no entries\n if (this.isEmpty()) {\n this.showNoEntriesMsg();\n }\n } else {\n this.showNoEntriesMsg();\n }\n\n // Ok, lets let everyone know that we are done...\n this.$table\n .append(this.$thead);\n\n if (this.options.createPosition === 'bottom') {\n this.$table.append(this.$tbody)\n .append(this.$create);\n } else {\n this.$table\n .append(this.$create)\n .append(this.$tbody);\n }\n\n this.$table.removeClass(this.classNames.LOADING)\n .trigger(this._event.INITIALIZED, [this]);\n\n triggerEvtForInst(this._event.INITIALIZED, this, [this]);\n\n if (this.options.autoFocus) {\n this.$table.find(':input:text:first').focus(); // set focus to first field\n }\n },\n\n /**\n * Shows loading indicator and text\n *\n * @return {RestfulTable}\n */\n showGlobalLoading: function () {\n if (!this.$loading) {\n this.$loading = $('<div class=\"aui-restfultable-init\">' + throbber() +\n '<span class=\"aui-restfultable-loading\">' + this.options.loadingMsg + '</span></div>');\n }\n\n if (!this.$loading.is(':visible')) {\n this.$loading.insertAfter(this.$table);\n }\n\n return this;\n },\n\n /**\n * Hides loading indicator and text\n * @return {RestfulTable}\n */\n hideGlobalLoading: function () {\n if (this.$loading) {\n this.$loading.remove();\n }\n return this;\n },\n\n\n /**\n * Adds row to collection and renders it\n *\n * @param {Object} values\n * @param {number} index\n * @return {RestfulTable}\n */\n addRow: function (values, index) {\n var view;\n var model;\n\n if (!values.id) {\n throw new Error('RestfulTable.addRow: to add a row values object must contain an id. ' +\n 'Maybe you are not returning it from your restend point?' +\n 'Recieved:' + JSON.stringify(values));\n }\n\n model = new this.options.model(values);\n\n\n view = this._renderRow(model, index);\n\n this._models.add(model);\n this.removeNoEntriesMsg();\n\n // Let everyone know we added a row\n triggerEvtForInst(this._event.ROW_ADDED, this, [view, this]);\n return this;\n },\n\n /**\n * Provided a view, removes it from display and backbone collection\n *\n * @param row {Row} The row to remove.\n */\n removeRow: function (row) {\n this._models.remove(row.model);\n row.remove();\n\n if (this.isEmpty()) {\n this.showNoEntriesMsg();\n }\n\n // Let everyone know we removed a row\n triggerEvtForInst(this._event.ROW_REMOVED, this, [row, this]);\n },\n\n /**\n * Is there any entries in the table\n *\n * @return {Boolean}\n */\n isEmpty: function () {\n return this._models.length === 0;\n },\n\n /**\n * Gets all models\n *\n * @return {Backbone.Collection}\n */\n getModels: function () {\n return this._models;\n },\n\n /**\n * Gets table body\n *\n * @return {jQuery}\n */\n getTable: function () {\n return this.$table;\n },\n\n /**\n * Gets table body\n *\n * @return {jQuery}\n */\n getTableBody: function () {\n return this.$tbody;\n },\n\n /**\n * Gets create Row\n *\n * @return {EditRow}\n */\n getCreateRow: function () {\n return this._createRow;\n },\n\n /**\n * Gets the number of table columns, accounting for the number of\n * additional columns added by RestfulTable itself\n * (such as the drag handle column, buttons and actions columns)\n *\n * @return {Number}\n */\n getColumnCount: function () {\n var staticFieldCount = 2; // accounts for the columns allocated to submit buttons and loading indicator\n if (this.allowReorder) {\n ++staticFieldCount;\n }\n return this.options.columns.length + staticFieldCount;\n },\n\n /**\n * Get the Row that corresponds to the given <tr> element.\n *\n * @param {HTMLElement} tr\n *\n * @return {Row}\n */\n getRowFromElement: function (tr) {\n return $(tr).data(this.dataKeys.ROW_VIEW);\n },\n\n /**\n * Shows message {options.noEntriesMsg} to the user if there are no entries\n *\n * @return {RestfulTable}\n */\n showNoEntriesMsg: function () {\n\n if (this.$noEntries) {\n this.$noEntries.remove();\n }\n\n this.$noEntries = $('<tr>')\n .addClass(this.classNames.NO_ENTRIES)\n .append($('<td>')\n .attr('colspan', this.getColumnCount())\n .text(this.options.noEntriesMsg)\n )\n .appendTo(this.$tbody);\n\n return this;\n },\n\n /**\n * Removes message {options.noEntriesMsg} to the user if there ARE entries\n *\n * @return {RestfulTable}\n */\n removeNoEntriesMsg: function () {\n if (this.$noEntries && this._models.length > 0) {\n this.$noEntries.remove();\n }\n return this;\n },\n\n /**\n * Gets the Row from their associated <tr> elements\n *\n * @return {Array}\n */\n getRows: function () {\n var instance = this;\n var views = [];\n\n this.$tbody.find('.' + this.classNames.READ_ONLY).each(function () {\n var $row = $(this);\n var view = $row.data(instance.dataKeys.ROW_VIEW);\n\n if (view) {\n views.push(view);\n }\n });\n\n return views;\n },\n\n /**\n * Appends entry to end or specified index of table\n *\n * @param {EntryModel} model\n * @param index\n *\n * @return {jQuery}\n */\n _renderRow: function (model, index) {\n var instance = this;\n var $rows = this.$tbody.find('.' + this.classNames.READ_ONLY);\n var $row;\n var view;\n\n view = new this._rowClass({\n model: model,\n columns: this.options.columns,\n allowEdit: this.options.allowEdit,\n allowDelete: this.options.allowDelete,\n allowReorder: this.options.allowReorder,\n deleteConfirmation: this.options.deleteConfirmation\n });\n\n this.removeNoEntriesMsg();\n\n view.bind(this._event.ROW_EDIT, function (field) {\n triggerEvtForInst(this._event.EDIT_ROW, {}, [this, instance]);\n instance.edit(this, field);\n });\n\n $row = view.render().$el;\n\n if (index !== -1) {\n\n if (typeof index === 'number' && $rows.length !== 0) {\n $row.insertBefore($rows[index]);\n } else {\n this.$tbody.append($row);\n }\n }\n\n $row.data(this.dataKeys.ROW_VIEW, view);\n\n // deactivate all rows - used in the cases, such as opening a dropdown where you do not want the table editable\n // or any interactions\n view.bind(this._event.MODAL, function () {\n instance.$table.removeClass(instance.classNames.ALLOW_HOVER);\n instance.$tbody.sortable('disable');\n instance.getRows().forEach(function (row) {\n if (!instance.isRowBeingEdited(row)) {\n row.delegateEvents({}); // clear all events\n }\n });\n });\n\n // activate all rows - used in the cases, such as opening a dropdown where you do not want the table editable\n // or any interactions\n view.bind(this._event.MODELESS, function () {\n instance.$table.addClass(instance.classNames.ALLOW_HOVER);\n instance.$tbody.sortable('enable');\n instance.getRows().forEach(function (row) {\n if (!instance.isRowBeingEdited(row)) {\n row.delegateEvents(); // rebind all events\n }\n });\n });\n\n // ensure that when this row is focused no other are\n this._applyFocusCoordinator(view);\n\n this.trigger(this._event.ROW_INITIALIZED, view);\n\n return view;\n },\n\n /**\n * Returns if the row is edit mode or note.\n *\n * @param {Row} row Read-only row to check if being edited.\n *\n * @return {Boolean}\n */\n isRowBeingEdited: function (row) {\n\n var isBeingEdited = false;\n\n this.editRows.some(function (editRow) {\n if (editRow.el === row.el) {\n isBeingEdited = true;\n return true;\n }\n });\n\n return isBeingEdited;\n },\n\n /**\n * Ensures that when supplied view is focused no others are\n *\n * @param {Backbone.View} view\n * @return {RestfulTable}\n */\n _applyFocusCoordinator: function (view) {\n var instance = this;\n\n if (!view.hasFocusBound) {\n view.hasFocusBound = true;\n\n view.bind(this._event.FOCUS, function () {\n if (instance.focusedRow && instance.focusedRow !== view) {\n instance.focusedRow.trigger(instance._event.BLUR);\n }\n instance.focusedRow = view;\n if (view instanceof Row && instance._createRow) {\n instance._createRow.enable();\n }\n });\n }\n\n return this;\n },\n\n /**\n * Remove specified row from collection holding rows being concurrently edited\n *\n * @param {EditRow} editView\n *\n * @return {RestfulTable}\n */\n _removeEditRow: function (editView) {\n var index = $.inArray(editView, this.editRows);\n this.editRows.splice(index, 1);\n return this;\n },\n\n /**\n * Focuses last row still being edited or create row (if it exists)\n *\n * @return {RestfulTable}\n */\n _shiftFocusAfterEdit: function () {\n\n if (this.editRows.length > 0) {\n this.editRows[this.editRows.length - 1].trigger(this._event.FOCUS);\n } else if (this._createRow) {\n this._createRow.trigger(this._event.FOCUS);\n }\n\n return this;\n },\n\n /**\n * Evaluate if we save row when we blur. We can only do this when there is one row being edited at a time, otherwise\n * it causes an infinite loop JRADEV-5325\n *\n * @return {boolean}\n */\n _saveEditRowOnBlur: function () {\n return this.editRows.length <= 1;\n },\n\n /**\n * Dismisses rows being edited concurrently that have no changes\n */\n dismissEditRows: function () {\n this.editRows.forEach(function (editRow) {\n if (!editRow.hasUpdates()) {\n editRow.trigger(this._event.FINISHED_EDITING);\n }\n }, this);\n },\n\n /**\n * Converts readonly row to editable view\n *\n * @param {Backbone.View} row\n * @param {String} field - field name to focus\n * @return {Backbone.View} editRow\n */\n edit: function (row, field) {\n var instance = this;\n var editRow = new this.options.views.editRow({\n el: row.el,\n columns: this.options.columns,\n isUpdateMode: true,\n allowReorder: this.options.allowReorder,\n fieldFocusSelector: this.options.fieldFocusSelector,\n model: row.model,\n cancelAccessKey: this.options.cancelAccessKey,\n submitAccessKey: this.options.submitAccessKey\n });\n var values = row.model.toJSON();\n\n values.update = true;\n editRow.render({\n errors: {},\n update: true,\n values: values\n })\n .bind(instance._event.UPDATED, function (model, focusUpdated) {\n instance._removeEditRow (this);\n this.unbind();\n row.render().delegateEvents(); // render and rebind events\n row.trigger(instance._event.UPDATED); // trigger blur fade out\n if (focusUpdated !== false) {\n instance._shiftFocusAfterEdit();\n }\n })\n .bind(instance._event.VALIDATION_ERROR, function () {\n this.trigger(instance._event.FOCUS);\n })\n .bind(instance._event.FINISHED_EDITING, function () {\n instance._removeEditRow(this);\n row.render().delegateEvents();\n this.unbind(); // avoid any other updating, blurring, finished editing, cancel events being fired\n })\n .bind(instance._event.CANCEL, function () {\n instance._removeEditRow(this);\n this.unbind(); // avoid any other updating, blurring, finished editing, cancel events being fired\n row.render().delegateEvents(); // render and rebind events\n instance._shiftFocusAfterEdit();\n })\n .bind(instance._event.BLUR, function () {\n instance.dismissEditRows(); // dismiss edit rows that have no changes\n if (instance._saveEditRowOnBlur()) {\n this.trigger(instance._event.SAVE, false); // save row, which if successful will call the updated event above\n }\n });\n\n // Ensure that if focus is pulled to another row, we blur the edit row\n this._applyFocusCoordinator(editRow);\n\n // focus edit row, which has the flow on effect of blurring current focused row\n editRow.trigger(instance._event.FOCUS, field);\n\n // disables form fields\n if (instance._createRow) {\n instance._createRow.disable();\n }\n\n this.editRows.push(editRow);\n\n return editRow;\n },\n\n\n /**\n * Renders all specified rows\n *\n * @param rows {Array<Backbone.Model>} array of objects describing Backbone.Model's to render\n * @return {RestfulTable}\n */\n renderRows: function (rows = []) {\n var comparator = this._models.comparator;\n var els = [];\n\n this._models.comparator = undefined; // disable temporarily, assume rows are sorted\n\n var models = rows.map((row) => {\n var model = new this.options.model(row);\n els.push(this._renderRow(model, -1).el);\n return model;\n });\n\n this._models.add(models, {silent: true});\n this._models.comparator = comparator;\n this.removeNoEntriesMsg();\n this.$tbody.append(els);\n\n return this;\n },\n\n /**\n * Gets default options\n *\n * @param {Object} options\n */\n _getDefaultOptions: function (options) {\n return {\n model: options.model || EntryModel,\n allowEdit: true,\n views: {\n editRow: EditRow,\n row: Row\n },\n Collection: Backbone.Collection.extend({\n url: options.resources.self,\n model: options.model || EntryModel\n }),\n allowReorder: false,\n fieldFocusSelector: function (name) {\n return ':input[name=' + name + '], #' + name;\n },\n loadingMsg: options.loadingMsg || AJS.I18n.getText('aui.words.loading')\n };\n }\n});\n\nRestfulTable.ClassNames = classNames;\nRestfulTable.CustomCreateView = CustomCreateView;\nRestfulTable.CustomEditView = CustomEditView;\nRestfulTable.CustomReadView = CustomReadView;\nRestfulTable.DataKeys = dataKeys;\nRestfulTable.EditRow = EditRow;\nRestfulTable.EntryModel = EntryModel;\nRestfulTable.Events = events;\nRestfulTable.Row = Row;\nRestfulTable.Throbber = throbber;\n\nglobalize('RestfulTable', RestfulTable);\n\nexport default RestfulTable;\n"]}
|
|
1
|
+
{"version":3,"sources":["js/aui/restful-table.js"],"names":["logger","triggerEvt","name","args","document","trigger","triggerEvtForInst","evt","inst","id","RestfulTable","Backbone","View","extend","initialize","options","instance","$","_getDefaultOptions","_event","events","classNames","dataKeys","$table","el","addClass","RESTFUL_TABLE","ALLOW_HOVER","LOADING","wrapAll","$thead","$theadRow","appendTo","$tbody","length","Error","selector","columns","showGlobalLoading","forEach","column","header","isFunction","warn","append","_models","_createCollection","_rowClass","views","row","editRows","closest","submit","e","focusedRow","SAVE","preventDefault","allowReorder","prepend","sortable","handle","DRAG_HANDLE","helper","elt","attr","MOVEABLE","children","each","i","$td","borderLeft","parseInt","css","borderRight","width","clientWidth","html","left","offset","body","start","event","ui","cachedHeight","clientHeight","$this","placeholder","find","item","eq","td","getColumnCount","height","visibility","getRowFromElement","MODAL","stop","is","removeClass","ROW","MODELESS","update","context","nextItem","next","prevItem","prev","move","axis","delay","containment","cursor","scroll","zIndex","bind","target","allowCreate","_createRow","editRow","isCreateRow","model","url","resources","self","cancelAccessKey","submitAccessKey","fieldFocusSelector","CREATED","values","addPosition","undefined","createPosition","addRow","VALIDATION_ERROR","FOCUS","render","errors","$create","CREATE","_applyFocusCoordinator","autoFocus","getRows","hasFocus","removeRow","fetchInitialResources","all","entries","populate","get","createRequest","afterElement","position","afterModel","after","data","reverseOrder","ajax","type","dataType","contentType","JSON","stringify","complete","hideLoading","success","xhr","REORDER_SUCCESS","error","responseData","parseJSON","responseText","SERVER_ERROR","showLoading","RowsAwareCollection","Collection","sort","comparator","tableRows","models","sortBy","silent","remove","prototype","apply","arguments","index","currentTableRows","some","reverse","hideGlobalLoading","reset","renderRows","isEmpty","showNoEntriesMsg","INITIALIZED","focus","$loading","loadingMsg","insertAfter","view","_renderRow","add","removeNoEntriesMsg","ROW_ADDED","ROW_REMOVED","getModels","getTable","getTableBody","getCreateRow","staticFieldCount","tr","ROW_VIEW","$noEntries","NO_ENTRIES","text","noEntriesMsg","READ_ONLY","$row","push","$rows","allowEdit","allowDelete","deleteConfirmation","ROW_EDIT","field","EDIT_ROW","edit","$el","insertBefore","isRowBeingEdited","delegateEvents","ROW_INITIALIZED","isBeingEdited","hasFocusBound","BLUR","Row","enable","_removeEditRow","editView","inArray","splice","_shiftFocusAfterEdit","_saveEditRowOnBlur","dismissEditRows","hasUpdates","FINISHED_EDITING","isUpdateMode","toJSON","UPDATED","focusUpdated","unbind","CANCEL","disable","rows","els","map","EntryModel","EditRow","AJS","I18n","getText","ClassNames","CustomCreateView","CustomEditView","CustomReadView","DataKeys","Events","Throbber","throbber"],"mappings":"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","file":"restful-table.js","sourcesContent":["'use strict';\n\nimport $ from './jquery';\nimport * as logger from './internal/log';\nimport Backbone from './backbone';\nimport classNames from './restful-table/class-names';\nimport CustomCreateView from './restful-table/custom-create-view';\nimport CustomEditView from './restful-table/custom-edit-view';\nimport CustomReadView from './restful-table/custom-read-view';\nimport dataKeys from './restful-table/data-keys';\nimport EditRow from './restful-table/edit-row';\nimport EntryModel from './restful-table/entry-model';\nimport events from './restful-table/events';\nimport globalize from './internal/globalize';\nimport i18n from './i18n';\nimport Row from './restful-table/row';\nimport throbber from './restful-table/throbber';\n\n/**\n * Triggers a custom event on the document object\n *\n * @param {String} name - name of event\n * @param {Array} args - args for event handler\n */\nfunction triggerEvt (name, args) {\n $(document).trigger(name, args);\n}\n\n/**\n * Some generic error handling that fires event in multiple contexts\n * - on document\n * - on Instance\n * - on document with prefixed id.\n *\n * @param evt\n * @param inst\n * @param args\n */\nfunction triggerEvtForInst (evt, inst, args) {\n $(inst).trigger(evt, args);\n triggerEvt(evt, args);\n if (inst.id) {\n triggerEvt(inst.id + '_' + evt, args);\n }\n}\n\n/**\n * A table whose entries/rows can be retrieved, added and updated via REST (CRUD).\n * It uses backbone.js to sync the table's state back to the server, avoiding page refreshes.\n *\n * @class RestfulTable\n */\nvar RestfulTable = Backbone.View.extend({\n /**\n * @param {!Object} options\n * ... {!Object} resources\n * ... ... {(string|function(function(Array.<Object>)))} all - URL of REST resource OR function that retrieves all entities.\n * ... ... {string} self - URL of REST resource to sync a single entities state (CRUD).\n * ... {!(selector|Element|jQuery)} el - Table element or selector of the table element to populate.\n * ... {!Array.<Object>} columns - Which properties of the entities to render. The id of a column maps to the property of an entity.\n * ... {Object} views\n * ... ... {RestfulTable.EditRow} editRow - Backbone view that renders the edit & create row. Your view MUST extend RestfulTable.EditRow.\n * ... ... {RestfulTable.Row} row - Backbone view that renders the readonly row. Your view MUST extend RestfulTable.Row.\n * ... {boolean} allowEdit - Is the table editable. If true, clicking row will switch it to edit state. Default true.\n * ... {boolean} allowDelete - Can entries be removed from the table, default true.\n * ... {boolean} allowCreate - Can new entries be added to the table, default true.\n * ... {boolean} allowReorder - Can we drag rows to reorder them, default false.\n * ... {boolean} autoFocus - Automatically set focus to first field on init, default false.\n * ... {boolean} reverseOrder - Reverse the order of rows, default false.\n * ... {boolean} silent - Do not trigger a \"refresh\" event on sort, default false.\n * ... {String} id - The id for the table. This id will be used to fire events specific to this instance.\n * ... {string} createPosition - If set to \"bottom\", place the create form at the bottom of the table instead of the top.\n * ... {string} addPosition - If set to \"bottom\", add new rows at the bottom of the table instead of the top. If undefined, createPosition will be used to define where to add the new row.\n * ... {string} noEntriesMsg - Text to display under the table header if it is empty, default empty.\n * ... {string} loadingMsg - Text/HTML to display while loading, default \"Loading\".\n * ... {string} submitAccessKey - Access key for submitting.\n * ... {string} cancelAccessKey - Access key for canceling.\n * ... {function(Object): (string|function(number, string): string)} deleteConfirmation - HTML to display in popup to confirm deletion.\n * ... {function(string): (selector|jQuery|Element)} fieldFocusSelector - Element to focus on given a name.\n * ... {EntryModel} model - Backbone model representing a row, default EntryModel.\n * ... {Backbone.Collection} Collection - Backbone collection representing the entire table, default Backbone.Collection.\n */\n initialize: function (options) {\n var instance = this;\n\n // combine default and user options\n instance.options = $.extend(true, instance._getDefaultOptions(options), options);\n\n // Prefix events for this instance with this id.\n instance.id = this.options.id;\n\n // faster lookup\n instance._event = events;\n instance.classNames = classNames;\n instance.dataKeys = dataKeys;\n\n // shortcuts to popular elements\n this.$table = $(options.el)\n .addClass(this.classNames.RESTFUL_TABLE)\n .addClass(this.classNames.ALLOW_HOVER)\n .addClass('aui')\n .addClass(instance.classNames.LOADING);\n\n this.$table.wrapAll(\"<form class='aui' action='#' />\");\n\n this.$thead = $('<thead/>');\n this.$theadRow = $('<tr />').appendTo(this.$thead);\n this.$tbody = $('<tbody/>');\n\n if (!this.$table.length) {\n throw new Error('RestfulTable: Init failed! The table you have specified [' + this.$table.selector + '] cannot be found.');\n }\n\n if (!this.options.columns) {\n throw new Error(\"RestfulTable: Init failed! You haven't provided any columns to render.\");\n }\n\n // Let user know the table is loading\n this.showGlobalLoading();\n this.options.columns.forEach(function (column) {\n var header = $.isFunction(column.header) ? column.header() : column.header;\n if (typeof header === 'undefined') {\n logger.warn('You have not specified [header] for column [' + column.id + ']. Using id for now...');\n header = column.id;\n }\n\n instance.$theadRow.append('<th>' + header + '</th>');\n });\n\n // columns for submit buttons and loading indicator used when editing\n instance.$theadRow.append('<th></th><th></th>');\n\n // create a new Backbone collection to represent rows (http://documentcloud.github.com/backbone/#Collection)\n this._models = this._createCollection();\n\n // shortcut to the class we use to create rows\n this._rowClass = this.options.views.row;\n\n this.editRows = []; // keep track of rows that are being edited concurrently\n\n this.$table.closest('form').submit(function (e) {\n if (instance.focusedRow) {\n // Delegates saving of row. See EditRow.submit\n instance.focusedRow.trigger(instance._event.SAVE);\n }\n e.preventDefault();\n });\n\n if (this.options.allowReorder) {\n // Add allowance for another cell to the <thead>\n this.$theadRow.prepend('<th />');\n\n // Allow drag and drop reordering of rows\n this.$tbody.sortable({\n handle: '.' + this.classNames.DRAG_HANDLE,\n helper: function (e, elt) {\n var helper = $('<div/>').attr('class', elt.attr('class')).addClass(instance.classNames.MOVEABLE);\n elt.children().each(function (i) {\n var $td = $(this);\n\n // .offsetWidth/.outerWidth() is broken in webkit for tables, so we do .clientWidth + borders\n // Need to coerce the border-left-width to an in because IE - http://bugs.jquery.com/ticket/10855\n var borderLeft = parseInt(0 + $td.css('border-left-width'), 10);\n var borderRight = parseInt(0 + $td.css('border-right-width'), 10);\n var width = $td[0].clientWidth + borderLeft + borderRight;\n\n helper.append($('<div/>').html($td.html()).attr('class', $td.attr('class')).width(width));\n });\n\n helper = $(\"<div class='aui-restfultable-readonly'/>\").append(helper); // Basically just to get the styles.\n helper.css({left: elt.offset().left}); // To align with the other table rows, since we've locked scrolling on x.\n helper.appendTo(document.body);\n\n return helper;\n },\n start: function (event, ui) {\n var cachedHeight = ui.helper[0].clientHeight;\n var $this = ui.placeholder.find('td');\n\n // Make sure that when we start dragging widths do not change\n ui.item\n .addClass(instance.classNames.MOVEABLE)\n .children().each(function (i) {\n $(this).width($this.eq(i).width());\n });\n\n // Create a <td> to add to the placeholder <tr> to inherit CSS styles.\n var td = '<td colspan=\"' + instance.getColumnCount() + '\"> </td>';\n\n ui.placeholder.html(td).css({\n height: cachedHeight,\n visibility: 'visible'\n });\n\n // Stop hover effects etc from occuring as we move the mouse (while dragging) over other rows\n instance.getRowFromElement(ui.item[0]).trigger(instance._event.MODAL);\n },\n stop: function (event, ui) {\n if ($(ui.item[0]).is(':visible')) {\n ui.item\n .removeClass(instance.classNames.MOVEABLE)\n .children().attr('style', '');\n\n ui.placeholder.removeClass(instance.classNames.ROW);\n\n // Return table to a normal state\n instance.getRowFromElement(ui.item[0]).trigger(instance._event.MODELESS);\n }\n },\n update: function (event, ui) {\n var context = {\n row: instance.getRowFromElement(ui.item[0]),\n item: ui.item,\n nextItem: ui.item.next(),\n prevItem: ui.item.prev()\n };\n\n instance.move(context);\n },\n axis: 'y',\n delay: 0,\n containment: 'document',\n cursor: 'move',\n scroll: true,\n zIndex: 8000\n });\n\n // Prevent text selection while reordering.\n this.$tbody.bind('selectstart mousedown', function (event) {\n return !$(event.target).is('.' + instance.classNames.DRAG_HANDLE);\n });\n }\n\n\n if (this.options.allowCreate !== false) {\n\n // Create row responsible for adding new entries ...\n this._createRow = new this.options.views.editRow({\n columns: this.options.columns,\n isCreateRow: true,\n model: this.options.model.extend({\n url: function () {\n return instance.options.resources.self;\n }\n }),\n cancelAccessKey: this.options.cancelAccessKey,\n submitAccessKey: this.options.submitAccessKey,\n allowReorder: this.options.allowReorder,\n fieldFocusSelector: this.options.fieldFocusSelector\n })\n .bind(this._event.CREATED, function (values) {\n if ((instance.options.addPosition == undefined && instance.options.createPosition === 'bottom') ||\n instance.options.addPosition === 'bottom') {\n instance.addRow(values);\n } else {\n instance.addRow(values, 0);\n }\n })\n .bind(this._event.VALIDATION_ERROR, function () {\n this.trigger(instance._event.FOCUS);\n })\n .render({\n errors: {},\n values: {}\n });\n\n // ... and appends it as the first row\n this.$create = $('<tbody class=\"' + this.classNames.CREATE + '\" />')\n .append(this._createRow.el);\n\n // Manage which row has focus\n this._applyFocusCoordinator(this._createRow);\n\n // focus create row\n if (this.options.autoFocus) {\n this._createRow.trigger(this._event.FOCUS);\n }\n }\n\n // when a model is removed from the collection, remove it from the viewport also\n this._models.bind('remove', function (model) {\n instance.getRows().forEach(function (row) {\n if (row.model === model) {\n if (row.hasFocus() && instance._createRow) {\n instance._createRow.trigger(instance._event.FOCUS);\n }\n instance.removeRow(row);\n }\n });\n });\n\n this.fetchInitialResources();\n },\n\n fetchInitialResources: function () {\n var instance = this;\n if ($.isFunction(this.options.resources.all)) {\n this.options.resources.all(function (entries) {\n instance.populate(entries);\n });\n } else {\n $.get(this.options.resources.all, function (entries) {\n instance.populate(entries);\n });\n }\n },\n\n move: function (context) {\n\n var instance = this;\n\n var createRequest = function (afterElement) {\n if (!afterElement.length) {\n return {\n position: 'First'\n };\n } else {\n var afterModel = instance.getRowFromElement(afterElement).model;\n return {\n after: afterModel.url()\n };\n }\n };\n\n if (context.row) {\n\n var data = instance.options.reverseOrder ? createRequest(context.nextItem) : createRequest(context.prevItem);\n\n $.ajax({\n url: context.row.model.url() + '/move',\n type: 'POST',\n dataType: 'json',\n contentType: 'application/json',\n data: JSON.stringify(data),\n complete: function () {\n // hides loading indicator (spinner)\n context.row.hideLoading();\n },\n success: function (xhr) {\n triggerEvtForInst(instance._event.REORDER_SUCCESS, instance, [xhr]);\n },\n error: function (xhr) {\n var responseData = $.parseJSON(xhr.responseText || xhr.data);\n triggerEvtForInst(instance._event.SERVER_ERROR, instance, [responseData, xhr, this]);\n }\n });\n\n // shows loading indicator (spinner)\n context.row.showLoading();\n }\n },\n\n _createCollection: function () {\n var instance = this;\n\n // create a new Backbone collection to represent rows (http://documentcloud.github.com/backbone/#Collection)\n var RowsAwareCollection = this.options.Collection.extend({\n // Force the collection to re-sort itself. You don't need to call this under normal\n // circumstances, as the set will maintain sort order as each item is added.\n sort: function (options) {\n options || (options = {});\n if (!this.comparator) {\n throw new Error('Cannot sort a set without a comparator');\n }\n this.tableRows = instance.getRows();\n this.models = this.sortBy(this.comparator, this);\n this.tableRows = undefined;\n if (!options.silent) {\n this.trigger('refresh', this, options);\n }\n return this;\n },\n remove: function (models, options) {\n this.tableRows = instance.getRows();\n Backbone.Collection.prototype.remove.apply(this, arguments);\n this.tableRows = undefined;\n return this;\n }\n });\n\n return new RowsAwareCollection([], {\n comparator: function (row) {\n // sort models in collection based on dom ordering\n var index;\n\n var currentTableRows = (this && this.tableRows !== undefined) ? this.tableRows : instance.getRows();\n currentTableRows.some(function (item, i) {\n if (item.model.id === row.id) {\n index = i;\n return true;\n }\n });\n return index;\n }\n });\n },\n\n /**\n * Refreshes table with entries\n *\n * @param entries\n */\n populate: function (entries) {\n if (this.options.reverseOrder) {\n entries.reverse();\n }\n\n this.hideGlobalLoading();\n if (entries && entries.length) {\n // Empty the models collection\n this._models.reset([], {silent: true});\n // Add all the entries to collection and render them\n this.renderRows(entries);\n // show message to user if we have no entries\n if (this.isEmpty()) {\n this.showNoEntriesMsg();\n }\n } else {\n this.showNoEntriesMsg();\n }\n\n // Ok, lets let everyone know that we are done...\n this.$table\n .append(this.$thead);\n\n if (this.options.createPosition === 'bottom') {\n this.$table.append(this.$tbody)\n .append(this.$create);\n } else {\n this.$table\n .append(this.$create)\n .append(this.$tbody);\n }\n\n this.$table.removeClass(this.classNames.LOADING)\n .trigger(this._event.INITIALIZED, [this]);\n\n triggerEvtForInst(this._event.INITIALIZED, this, [this]);\n\n if (this.options.autoFocus) {\n this.$table.find(':input:text:first').focus(); // set focus to first field\n }\n },\n\n /**\n * Shows loading indicator and text\n *\n * @return {RestfulTable}\n */\n showGlobalLoading: function () {\n if (!this.$loading) {\n this.$loading = $('<div class=\"aui-restfultable-init\">' + throbber() +\n '<span class=\"aui-restfultable-loading\">' + this.options.loadingMsg + '</span></div>');\n }\n\n if (!this.$loading.is(':visible')) {\n this.$loading.insertAfter(this.$table);\n }\n\n return this;\n },\n\n /**\n * Hides loading indicator and text\n * @return {RestfulTable}\n */\n hideGlobalLoading: function () {\n if (this.$loading) {\n this.$loading.remove();\n }\n return this;\n },\n\n\n /**\n * Adds row to collection and renders it\n *\n * @param {Object} values\n * @param {number} index\n * @return {RestfulTable}\n */\n addRow: function (values, index) {\n var view;\n var model;\n\n if (!values.id) {\n throw new Error('RestfulTable.addRow: to add a row values object must contain an id. ' +\n 'Maybe you are not returning it from your restend point?' +\n 'Recieved:' + JSON.stringify(values));\n }\n\n model = new this.options.model(values);\n\n\n view = this._renderRow(model, index);\n\n this._models.add(model);\n this.removeNoEntriesMsg();\n\n // Let everyone know we added a row\n triggerEvtForInst(this._event.ROW_ADDED, this, [view, this]);\n return this;\n },\n\n /**\n * Provided a view, removes it from display and backbone collection\n *\n * @param row {Row} The row to remove.\n */\n removeRow: function (row) {\n this._models.remove(row.model);\n row.remove();\n\n if (this.isEmpty()) {\n this.showNoEntriesMsg();\n }\n\n // Let everyone know we removed a row\n triggerEvtForInst(this._event.ROW_REMOVED, this, [row, this]);\n },\n\n /**\n * Is there any entries in the table\n *\n * @return {Boolean}\n */\n isEmpty: function () {\n return this._models.length === 0;\n },\n\n /**\n * Gets all models\n *\n * @return {Backbone.Collection}\n */\n getModels: function () {\n return this._models;\n },\n\n /**\n * Gets table body\n *\n * @return {jQuery}\n */\n getTable: function () {\n return this.$table;\n },\n\n /**\n * Gets table body\n *\n * @return {jQuery}\n */\n getTableBody: function () {\n return this.$tbody;\n },\n\n /**\n * Gets create Row\n *\n * @return {EditRow}\n */\n getCreateRow: function () {\n return this._createRow;\n },\n\n /**\n * Gets the number of table columns, accounting for the number of\n * additional columns added by RestfulTable itself\n * (such as the drag handle column, buttons and actions columns)\n *\n * @return {Number}\n */\n getColumnCount: function () {\n var staticFieldCount = 2; // accounts for the columns allocated to submit buttons and loading indicator\n if (this.allowReorder) {\n ++staticFieldCount;\n }\n return this.options.columns.length + staticFieldCount;\n },\n\n /**\n * Get the Row that corresponds to the given <tr> element.\n *\n * @param {HTMLElement} tr\n *\n * @return {Row}\n */\n getRowFromElement: function (tr) {\n return $(tr).data(this.dataKeys.ROW_VIEW);\n },\n\n /**\n * Shows message {options.noEntriesMsg} to the user if there are no entries\n *\n * @return {RestfulTable}\n */\n showNoEntriesMsg: function () {\n\n if (this.$noEntries) {\n this.$noEntries.remove();\n }\n\n this.$noEntries = $('<tr>')\n .addClass(this.classNames.NO_ENTRIES)\n .append($('<td>')\n .attr('colspan', this.getColumnCount())\n .text(this.options.noEntriesMsg)\n )\n .appendTo(this.$tbody);\n\n return this;\n },\n\n /**\n * Removes message {options.noEntriesMsg} to the user if there ARE entries\n *\n * @return {RestfulTable}\n */\n removeNoEntriesMsg: function () {\n if (this.$noEntries && this._models.length > 0) {\n this.$noEntries.remove();\n }\n return this;\n },\n\n /**\n * Gets the Row from their associated <tr> elements\n *\n * @return {Array}\n */\n getRows: function () {\n var instance = this;\n var views = [];\n\n this.$tbody.find('.' + this.classNames.READ_ONLY).each(function () {\n var $row = $(this);\n var view = $row.data(instance.dataKeys.ROW_VIEW);\n\n if (view) {\n views.push(view);\n }\n });\n\n return views;\n },\n\n /**\n * Appends entry to end or specified index of table\n *\n * @param {EntryModel} model\n * @param index\n *\n * @return {jQuery}\n */\n _renderRow: function (model, index) {\n var instance = this;\n var $rows = this.$tbody.find('.' + this.classNames.READ_ONLY);\n var $row;\n var view;\n\n view = new this._rowClass({\n model: model,\n columns: this.options.columns,\n allowEdit: this.options.allowEdit,\n allowDelete: this.options.allowDelete,\n allowReorder: this.options.allowReorder,\n deleteConfirmation: this.options.deleteConfirmation\n });\n\n this.removeNoEntriesMsg();\n\n view.bind(this._event.ROW_EDIT, function (field) {\n triggerEvtForInst(this._event.EDIT_ROW, {}, [this, instance]);\n instance.edit(this, field);\n });\n\n $row = view.render().$el;\n\n if (index !== -1) {\n\n if (typeof index === 'number' && $rows.length !== 0) {\n $row.insertBefore($rows[index]);\n } else {\n this.$tbody.append($row);\n }\n }\n\n $row.data(this.dataKeys.ROW_VIEW, view);\n\n // deactivate all rows - used in the cases, such as opening a dropdown where you do not want the table editable\n // or any interactions\n view.bind(this._event.MODAL, function () {\n instance.$table.removeClass(instance.classNames.ALLOW_HOVER);\n instance.$tbody.sortable('disable');\n instance.getRows().forEach(function (row) {\n if (!instance.isRowBeingEdited(row)) {\n row.delegateEvents({}); // clear all events\n }\n });\n });\n\n // activate all rows - used in the cases, such as opening a dropdown where you do not want the table editable\n // or any interactions\n view.bind(this._event.MODELESS, function () {\n instance.$table.addClass(instance.classNames.ALLOW_HOVER);\n instance.$tbody.sortable('enable');\n instance.getRows().forEach(function (row) {\n if (!instance.isRowBeingEdited(row)) {\n row.delegateEvents(); // rebind all events\n }\n });\n });\n\n // ensure that when this row is focused no other are\n this._applyFocusCoordinator(view);\n\n this.trigger(this._event.ROW_INITIALIZED, view);\n\n return view;\n },\n\n /**\n * Returns if the row is edit mode or note.\n *\n * @param {Row} row Read-only row to check if being edited.\n *\n * @return {Boolean}\n */\n isRowBeingEdited: function (row) {\n\n var isBeingEdited = false;\n\n this.editRows.some(function (editRow) {\n if (editRow.el === row.el) {\n isBeingEdited = true;\n return true;\n }\n });\n\n return isBeingEdited;\n },\n\n /**\n * Ensures that when supplied view is focused no others are\n *\n * @param {Backbone.View} view\n * @return {RestfulTable}\n */\n _applyFocusCoordinator: function (view) {\n var instance = this;\n\n if (!view.hasFocusBound) {\n view.hasFocusBound = true;\n\n view.bind(this._event.FOCUS, function () {\n if (instance.focusedRow && instance.focusedRow !== view) {\n instance.focusedRow.trigger(instance._event.BLUR);\n }\n instance.focusedRow = view;\n if (view instanceof Row && instance._createRow) {\n instance._createRow.enable();\n }\n });\n }\n\n return this;\n },\n\n /**\n * Remove specified row from collection holding rows being concurrently edited\n *\n * @param {EditRow} editView\n *\n * @return {RestfulTable}\n */\n _removeEditRow: function (editView) {\n var index = $.inArray(editView, this.editRows);\n this.editRows.splice(index, 1);\n return this;\n },\n\n /**\n * Focuses last row still being edited or create row (if it exists)\n *\n * @return {RestfulTable}\n */\n _shiftFocusAfterEdit: function () {\n\n if (this.editRows.length > 0) {\n this.editRows[this.editRows.length - 1].trigger(this._event.FOCUS);\n } else if (this._createRow) {\n this._createRow.trigger(this._event.FOCUS);\n }\n\n return this;\n },\n\n /**\n * Evaluate if we save row when we blur. We can only do this when there is one row being edited at a time, otherwise\n * it causes an infinite loop JRADEV-5325\n *\n * @return {boolean}\n */\n _saveEditRowOnBlur: function () {\n return this.editRows.length <= 1;\n },\n\n /**\n * Dismisses rows being edited concurrently that have no changes\n */\n dismissEditRows: function () {\n this.editRows.forEach(function (editRow) {\n if (!editRow.hasUpdates()) {\n editRow.trigger(this._event.FINISHED_EDITING);\n }\n }, this);\n },\n\n /**\n * Converts readonly row to editable view\n *\n * @param {Backbone.View} row\n * @param {String} field - field name to focus\n * @return {Backbone.View} editRow\n */\n edit: function (row, field) {\n var instance = this;\n var editRow = new this.options.views.editRow({\n el: row.el,\n columns: this.options.columns,\n isUpdateMode: true,\n allowReorder: this.options.allowReorder,\n fieldFocusSelector: this.options.fieldFocusSelector,\n model: row.model,\n cancelAccessKey: this.options.cancelAccessKey,\n submitAccessKey: this.options.submitAccessKey\n });\n var values = row.model.toJSON();\n\n values.update = true;\n editRow.render({\n errors: {},\n update: true,\n values: values\n })\n .bind(instance._event.UPDATED, function (model, focusUpdated) {\n instance._removeEditRow (this);\n this.unbind();\n row.render().delegateEvents(); // render and rebind events\n row.trigger(instance._event.UPDATED); // trigger blur fade out\n if (focusUpdated !== false) {\n instance._shiftFocusAfterEdit();\n }\n })\n .bind(instance._event.VALIDATION_ERROR, function () {\n this.trigger(instance._event.FOCUS);\n })\n .bind(instance._event.FINISHED_EDITING, function () {\n instance._removeEditRow(this);\n row.render().delegateEvents();\n this.unbind(); // avoid any other updating, blurring, finished editing, cancel events being fired\n })\n .bind(instance._event.CANCEL, function () {\n instance._removeEditRow(this);\n this.unbind(); // avoid any other updating, blurring, finished editing, cancel events being fired\n row.render().delegateEvents(); // render and rebind events\n instance._shiftFocusAfterEdit();\n })\n .bind(instance._event.BLUR, function () {\n instance.dismissEditRows(); // dismiss edit rows that have no changes\n if (instance._saveEditRowOnBlur()) {\n this.trigger(instance._event.SAVE, false); // save row, which if successful will call the updated event above\n }\n });\n\n // Ensure that if focus is pulled to another row, we blur the edit row\n this._applyFocusCoordinator(editRow);\n\n // focus edit row, which has the flow on effect of blurring current focused row\n editRow.trigger(instance._event.FOCUS, field);\n\n // disables form fields\n if (instance._createRow) {\n instance._createRow.disable();\n }\n\n this.editRows.push(editRow);\n\n return editRow;\n },\n\n\n /**\n * Renders all specified rows\n *\n * @param rows {Array<Backbone.Model>} array of objects describing Backbone.Model's to render\n * @return {RestfulTable}\n */\n renderRows: function (rows = []) {\n var comparator = this._models.comparator;\n var els = [];\n\n this._models.comparator = undefined; // disable temporarily, assume rows are sorted\n\n var models = rows.map((row) => {\n var model = new this.options.model(row);\n els.push(this._renderRow(model, -1).el);\n return model;\n });\n\n this._models.add(models, {silent: true});\n this._models.comparator = comparator;\n this.removeNoEntriesMsg();\n this.$tbody.append(els);\n\n return this;\n },\n\n /**\n * Gets default options\n *\n * @param {Object} options\n */\n _getDefaultOptions: function (options) {\n return {\n model: options.model || EntryModel,\n allowEdit: true,\n views: {\n editRow: EditRow,\n row: Row\n },\n Collection: Backbone.Collection.extend({\n url: options.resources.self,\n model: options.model || EntryModel\n }),\n allowReorder: false,\n fieldFocusSelector: function (name) {\n return ':input[name=' + name + '], #' + name;\n },\n loadingMsg: options.loadingMsg || AJS.I18n.getText('aui.words.loading')\n };\n }\n});\n\nRestfulTable.ClassNames = classNames;\nRestfulTable.CustomCreateView = CustomCreateView;\nRestfulTable.CustomEditView = CustomEditView;\nRestfulTable.CustomReadView = CustomReadView;\nRestfulTable.DataKeys = dataKeys;\nRestfulTable.EditRow = EditRow;\nRestfulTable.EntryModel = EntryModel;\nRestfulTable.Events = events;\nRestfulTable.Row = Row;\nRestfulTable.Throbber = throbber;\n\nglobalize('RestfulTable', RestfulTable);\n\nexport default RestfulTable;\n"]}
|