Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- @file
- @author Fyodorov "bga" Alexander <bga.email@gmail.com>
- @section LICENSE
- Copyright (c) 2009-2010, Fyodorov "Bga" Alexander <bga.email@gmail.com>
- All rights reserved.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * The name of the developer may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
- THIS SOFTWARE IS PROVIDED BY FYODOROV "BGA" ALEXANDER "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- IN NO EVENT SHALL FYODOROV "BGA" ALEXANDER BE LIABLE FOR ANY DIRECT, INDIRECT,
- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- @section DESCRIPTION
- cross browser support functions for DOM.Node
- */
- $jb.Loader._scope().
- //_require("$jb/$jb.nav.js").
- _require("$jb/$G.Function.js").
- //_require("$jb/$G.Array.js").
- //_require("$jb/$G.Object.js").
- _require("$jb/OOP.js").
- _require("$jb/$G.Date.js").
- _require("$jb/$jb.I18n.js").
- _require("$jb/$jb._dom.js").
- _require("$A/$A._loadControllers.js").
- //_require("$A/$A.GroupSelect.js").
- //_require("$A/$A.SortableTable.js").
- _require("$css/users-table.css").
- _require("$tmls/$A.UsersTable.asp").
- _willDeclared("$A/$A.UsersTable.js").
- _completed(function($G, $jb, $A){
- var _dom = $jb._dom;
- $A.UsersTable = function(v)
- {
- //$A.SortableTable.call(this, v);
- $jb.DOM.Plugin.call(this, v);
- this.sortableTable;
- this.rowsSelection;
- var self = this;
- this._html(this.layoutTml_._apply(null));
- var notReadyCount = 4;
- var users;
- var _final = function()
- {
- console.log('_final');
- var i = -1, len = users.length;
- var t = '';
- while(++i < len)
- t += self.rowTml_._apply(null, [users[i], self.userCategories]);
- self._find('.users-table-tbody')._append(t);
- $A._loadControllers(self);
- var i = -1, dm = self.sortableTable.dataManagers, len = dm.length;
- while(++i < len && dm[i] == null)
- ;
- self.sortableTable._sortByColomn(i, 1);
- self.rowsSelection._updateAll();
- self._updateAll();
- };
- this._find('.users-selection-controller')._attachEvent(
- 'plug',
- function(e)
- {
- if(e.target == e.currentTarget)
- {
- console.log(e.target);
- self.rowsSelection = _dom(e.target);
- if(--notReadyCount == 0)
- _final();
- }
- }
- );
- this._find('.users-table')._attachEvent(
- 'plug',
- function(e)
- {
- if(e.target == e.currentTarget)
- {
- self.sortableTable = _dom(e.target);
- if(--notReadyCount == 0)
- _final();
- }
- }
- );
- this._find('.users-selection-popup-menu')._attachEvent(
- 'plug',
- function(e)
- {
- if(e.target == e.currentTarget)
- {
- self.popupMenu = _dom(e.target);
- }
- }
- );
- $A._loadControllers(this);
- this.lastServerRequest_ = $A.server._getUsersByCategory(
- +this._attr('users-category-id'),
- function(err, data)
- {
- if(err != null)
- {
- console.error('$A.UsersTable::constructor failed to load users data, error = ', err)
- }
- else
- {
- users = data;
- }
- if(--notReadyCount == 0)
- _final();
- }
- );
- this.userCategories;
- $A.server._getUserCategories(
- function(err, data)
- {
- if(err != null)
- {
- console.error('$A.UsersTable::constructor failed to load users categories, error = ', err)
- }
- else
- {
- self.userCategories = data;
- }
- if(--notReadyCount == 0)
- _final();
- }
- );
- this._onSelectionPopupMenuOpenerClick = this._onSelectionPopupMenuOpenerClick._fBind(this);
- this._onEditButtonClick = this._onEditButtonClick._fBind(this);
- this._onToggleShortInfo = this._onToggleShortInfo._fBind(this);
- this._onToggleAllPhotos = this._onToggleAllPhotos._fBind(this);
- this._onPhotoChangeClick = this._onPhotoChangeClick._fBind(this);
- this._onListItemAdd = this._onListItemAdd._fBind(this);
- this._onListItemRemove = this._onListItemRemove._fBind(this);
- this._onSelectionLockClick = this._onSelectionLockClick._fBind(this);
- this._onLockUsersComplete = this._onLockUsersComplete._fBind(this);
- this._onSelectionRemoveClick = this._onSelectionRemoveClick._fBind(this);
- this._onRemoveUsersComplete = this._onRemoveUsersComplete._fBind(this);
- this._onEditSubmit = this._onEditSubmit._fBind(this);
- this._onEditReset = this._onEditReset._fBind(this);
- this._onUserDataGet = this._onUserDataGet._fBind(this);
- this._onLockUserClick = this._onLockUserClick._fBind(this);
- this._onRemoveUserClick = this._onRemoveUserClick._fBind(this);
- };
- //$A.UsersTable._staticDeriveFrom($A.SortableTable);
- $A.UsersTable._staticDeriveFrom($jb.DOM.Plugin);
- $A.UsersTable.prototype.layoutTml_ = $jb.Loader.templateResource.loadedTemplateMap['$A.UsersTable.prototype.layoutTml_'];
- $A.UsersTable.prototype.rowTml_ = $jb.Loader.templateResource.loadedTemplateMap['$A.UsersTable.prototype.rowTml_'];
- $A.UsersTable.prototype.phoneTml_ = $jb.Loader.templateResource.loadedTemplateMap['$A.UsersTable.prototype.phoneTml_'];
- $A.UsersTable.prototype._updateAll = function()
- {
- this._find('.users-selection-popup-menu-opener')._reattachEvent('click', this._onSelectionPopupMenuOpenerClick);
- this._find('.users-show-all-user-photos')._reattachEvent('click', this._onToggleAllPhotos);
- this._find('.users-user-edit-user-button')._reattachEvent('click', this._onEditButtonClick);
- this._find('.users-editable-field.user-name, .users-editable-field.user-surname')._reattachEvent('click', this._onToggleShortInfo);
- this._find('.users-change-photo')._reattachEvent('click', this._onPhotoChangeClick);
- this._find('.users-row')._reattachEvent('listItemAdd', this._onListItemAdd);
- this._find('.users-row')._reattachEvent('listItemRemove', this._onListItemRemove);
- this._find('.users-selection-lock')._reattachEvent('click', this._onSelectionLockClick);
- this._find('.users-selection-remove')._reattachEvent('click', this._onSelectionRemoveClick);
- this._find('.users-edit-form')._reattachEvent('submit', this._onEditSubmit);
- this._find('.users-edit-form')._reattachEvent('reset', this._onEditReset);
- this._find('.users-user-lock-button')._reattachEvent('click', this._onLockUserClick);
- this._find('.users-user-delete-button')._reattachEvent('click', this._onRemoveUserClick);
- };
- $A.UsersTable.prototype._sortDataGetUserName = function(cell)
- {
- var v = _dom(cell);
- return v._next('td')._find('.user-surname')._attr('value') + v._find('.user-name')._attr('value');
- };
- $A.UsersTable.prototype._sortDataGetUserEmail = function(cell)
- {
- //console.log(cell);
- return _dom(cell)._find('.user-email')._attr('value');
- };
- $A.UsersTable.prototype._sortDataGetUserPhone = function(cell)
- {
- //console.log(cell);
- return _dom(cell)._find('.user-phone')._attr('value');
- };
- $A.UsersTable.prototype._onSelectionPopupMenuOpenerClick = function(e)
- {
- e.stopPropagation();
- e.preventDefault();
- //_dom(this._find('.users-selection-popup-menu')[0])._show();
- if(this.popupMenu)
- this.popupMenu._show();
- };
- $A.UsersTable.prototype._removeRow = function(row)
- {
- this.rowsSelection._removeCheckBox(row._find('.users-select-user-checkbox')[0]);
- this.sortableTable._removeRow(row[0]);
- };
- $A.UsersTable.prototype._insertRow = function(row)
- {
- this.sortableTable._insertRow(row[0]);
- row._find('.users-editable-field.user-name, .users-editable-field.user-surname')._reattachEvent('click', this._onToggleShortInfo);
- row._find('.users-user-edit-user-button')._reattachEvent('click', this._onEditButtonClick);
- row._find('.users-change-photo')._reattachEvent('click', this._onPhotoChangeClick);
- row._find('.users-row')._reattachEvent('listItemAdd', this._onListItemAdd);
- row._find('.users-row')._reattachEvent('listItemRemove', this._onListItemRemove);
- row._find('.users-selection-lock')._reattachEvent('click', this._onSelectionLockClick);
- row._find('.users-selection-remove')._reattachEvent('click', this._onSelectionRemoveClick);
- row._find('.users-edit-form')._reattachEvent('submit', this._onEditSubmit);
- row._find('.users-edit-form')._reattachEvent('reset', this._onEditReset);
- row._find('.users-user-lock-button')._reattachEvent('click', this._onLockUserClick);
- row._find('.users-user-delete-button')._reattachEvent('click', this._onRemoveUserClick);
- this.rowsSelection._addCheckBox(row._find('.users-select-user-checkbox')[0])
- };
- $A.UsersTable.prototype._lockInputFields = function(row)
- {
- row._find('.users-editable-field.user-caterory')._attr('disabled', 'disabled');
- row._find('.users-editable-field:not(:disabled)')._attr('readonly', 'readonly');
- };
- $A.UsersTable.prototype._unlockInputFields = function(row)
- {
- row._find('.users-editable-field')._removeAttr('readonly')._removeAttr('disabled');
- };
- $A.UsersTable.prototype._switchRowToBlockMode = function(row, text)
- {
- row._find('.users-user-process-status')._text(text);
- row._addClass('users-row-mode-block');
- this._lockInputFields(row);
- //this.rowsSelection._removeCheckBox(row._find('.users-select-user-checkbox')[0]);
- return row;
- };
- $A.UsersTable.prototype._switchRowToEditMode = function(row)
- {
- row._removeClass('users-row-mode-view users-row-mode-short-info')._addClass('users-row-mode-edit');
- row._find('.users-editable-field.user-name, .users-editable-field.user-surname')._detachEvent('click', this._onToggleShortInfo);
- this._unlockInputFields(row);
- //row._find('.users-order-prepare-date-value')._removeAttr('disabled');
- //row._find('.users-order-prepare-date-value')._attr('disabled', '');
- this.rowsSelection._removeCheckBox(row._find('.users-select-user-checkbox')[0]);
- return row;
- };
- $A.UsersTable.prototype._switchRowToViewMode = function(row)
- {
- row._removeClass('users-row-mode-block users-row-mode-edit')._addClass('users-row-mode-view');
- this._lockInputFields(row);
- this.rowsSelection._addCheckBox(row._find('.users-select-user-checkbox')[0]);
- row._find('.users-editable-field.user-name, .users-editable-field.user-surname')._reattachEvent('click', this._onToggleShortInfo);
- return row;
- };
- $A.UsersTable.prototype._onEditButtonClick = function(e)
- {
- e.stopPropagation();
- e.preventDefault();
- this._switchRowToEditMode(_dom(e.target)._parents('tr'));
- };
- $A.UsersTable.prototype._onToggleShortInfo = function(e)
- {
- e.stopPropagation();
- e.preventDefault();
- _dom(e.target)._parents('tr')._toggleClass('users-row-mode-short-info');
- };
- $A.UsersTable.prototype._onToggleAllPhotos = function(e)
- {
- e.stopPropagation();
- //e.preventDefault();
- var v = _dom(e.target)._parents('table');
- v._toggleClass('users-table-mode-no-photo', !e.target.checked);
- };
- $A.UsersTable.prototype._onPhotoChangeClick = function(e)
- {
- e.stopPropagation();
- e.preventDefault();
- throw new NotSupportedError('$A.UsersTable::_onPhotoChangeClick photo upload not supported');
- };
- $A.UsersTable.prototype._onListItemAdd = function(e, v)
- {
- e.stopPropagation();
- e.preventDefault();
- _dom(_dom(e.currentTarget)._find('form')[0])._addElToValidation(v);
- };
- $A.UsersTable.prototype._onListItemRemove = function(e, v)
- {
- e.stopPropagation();
- e.preventDefault();
- _dom(_dom(e.currentTarget)._find('form')[0])._removeElFromValidation(v);
- };
- $A.UsersTable.prototype._onSelectionLockClick = function(e)
- {
- e.preventDefault();
- //e.stopPropagation();
- var cbs = this.rowsSelection._getSelectedCheckBoxes();
- var i = cbs.length;
- var ids = new Array(i);
- var text = $jb.i18n._translate('Locking user...');
- while(i--)
- {
- var row = _dom(cbs[i])._parents('tr');
- ids[i] = +row._attr('user-id');
- this._switchRowToBlockMode(row, text);
- this.rowsSelection._uncheckCheckBox(row._find('.users-select-user-checkbox')[0]);
- }
- this.popupMenu._hide();
- console.log('lock user ids = ', ids);
- $A.server._lockUsers(
- ids,
- this._onLockUsersComplete
- );
- };
- $A.UsersTable.prototype._onLockUsersComplete = function(err, data)
- {
- if(err != null)
- {
- console.error('$A.UsersTable::_onLockUsersComplete failed to lock users err', err);
- return;
- }
- var i = data.length;
- while(i--)
- {
- var row = this._find('[user-id=' + data[i] + ']');
- this._switchRowToViewMode(row);
- row._addClass('users-row-mode-user-lock');
- }
- };
- $A.UsersTable.prototype._onSelectionRemoveClick = function(e)
- {
- e.preventDefault();
- //e.stopPropagation();
- var cbs = this.rowsSelection._getSelectedCheckBoxes();
- var i = cbs.length;
- var ids = new Array(i);
- var text = $jb.i18n._translate('Removing user...');
- while(i--)
- {
- var row = _dom(cbs[i])._parents('tr');
- ids[i] = +row._attr('user-id');
- this._switchRowToBlockMode(row, text);
- this.rowsSelection._uncheckCheckBox(row._find('.users-select-user-checkbox')[0]);
- }
- this.popupMenu._hide();
- console.log('remove user ids = ', ids);
- $A.server._removeUsers(
- ids,
- this._onRemoveUsersComplete
- );
- };
- $A.UsersTable.prototype._onRemoveUsersComplete = function(err, data)
- {
- if(err != null)
- {
- console.error('$A.UsersTable::_onRemoveUsersComplete failed to remove users err', err);
- return;
- }
- var i = data.length;
- while(i--)
- {
- var row = this._find('[user-id=' + data[i] + ']');
- this._removeRow(row);
- }
- };
- $A.UsersTable.prototype._onEditSubmit = function(e)
- {
- e.preventDefault();
- console.log(e.target);
- var form = _dom(e.target);
- var data = form._serialize();
- var tr = _dom(e.target)._parents('tr');
- var userId = +tr._attr('user-id');
- this._switchRowToBlockMode(tr, $jb.i18n._translate('Saving...'));
- console.log('submit user-id = ', userId, ' data = ', data);
- $A.server._editUser(
- userId,
- data,
- this._onUserDataGet
- );
- };
- $A.UsersTable.prototype._onEditReset = function(e)
- {
- e.preventDefault();
- var form = _dom(e.target);
- var tr = _dom(e.target)._parents('tr');
- this._switchRowToBlockMode(tr, $jb.i18n._translate('Reseting...'));
- $A.server._getUserById(
- tr._attr('user-id'),
- this._onUserDataGet
- );
- };
- $A.UsersTable.prototype._onUserDataGet = function(err, data)
- {
- if(err != null)
- {
- console.error('$A.UsersTable::_onUserDataGet failed to get user data err = ', err);
- return;
- }
- this._removeRow(this._find('[user-id=' + data.id + ']'));
- var tr = _dom(this.rowTml_._apply(null, [data, this.userCategories]));
- this._insertRow(tr);
- $A._loadControllers(tr);
- };
- $A.UsersTable.prototype._onLockUserClick = function(e)
- {
- e.preventDefault();
- //e.stopPropagation();
- var tr = _dom(e.target)._parents('tr');
- var ids = [+tr._attr('user-id')];
- this._switchRowToBlockMode(tr, $jb.i18n._translate('Locking user...'));
- console.log('lock user ids = ', ids);
- $A.server._lockUsers(
- ids,
- this._onLockUsersComplete
- );
- };
- $A.UsersTable.prototype._onRemoveUserClick = function(e)
- {
- e.preventDefault();
- //e.stopPropagation();
- var tr = _dom(e.target)._parents('tr');
- var ids = [+tr._attr('user-id')];
- this._switchRowToBlockMode(tr, $jb.i18n._translate('Removing user...'));
- console.log('remove ids = ', ids);
- $A.server._removeUsers(
- ids,
- this._onRemoveUsersComplete
- );
- };
- });
Add Comment
Please, Sign In to add comment