Files
crm.clientright.ru/libraries/jquery/handsontable/extensions/jquery.handsontable.removeRow.js
Fedor ac7467f0b4 Major CRM updates: AI Assistant, Court Status API, S3 integration improvements, and extensive file storage system
- Added comprehensive AI Assistant system (aiassist/ directory):
  * Vector search and embedding capabilities
  * Typebot proxy integration
  * Elastic search functionality
  * Message classification and chat history
  * MCP proxy for external integrations

- Implemented Court Status API (GetCourtStatus.php):
  * Real-time court document status checking
  * Integration with external court systems
  * Comprehensive error handling and logging

- Enhanced S3 integration:
  * Improved file backup system with metadata
  * Batch processing capabilities
  * Enhanced error logging and recovery
  * Copy operations with URL fixing

- Added Telegram contact creation API
- Improved error logging across all modules
- Enhanced callback system for AI responses
- Extensive backup file storage with timestamps
- Updated documentation and README files

- File storage improvements:
  * Thousands of backup files with proper metadata
  * Fix operations for broken file references
  * Project-specific backup and recovery systems
  * Comprehensive file integrity checking

Total: 26,461+ files added/modified including AWS SDK, vendor dependencies, and extensive backup system.
2025-10-16 11:17:21 +03:00

46 lines
1.4 KiB
JavaScript

(function ($) {
"use strict";
/**
* Handsontable RemoveRow extension. See `demo/buttons.html` for example usage
* @param {Object} instance
* @param {Array|Boolean} [labels]
*/
Handsontable.extension.RemoveRow = function (instance, labels) {
var that = this;
this.priority = 1;
this.className = 'htRemoveRow htNoFrame';
this.instance = instance;
this.labels = labels;
instance.blockedCols.main.on('mousedown', 'th.htRemoveRow .btn', function () {
instance.alter("remove_row", $(this).parents('tr').index());
});
instance.container.on('mouseover', 'tbody th, tbody td', function () {
that.getButton(this).show();
});
instance.container.on('mouseout', 'tbody th, tbody td', function () {
that.getButton(this).hide();
});
instance.blockedCols.addHeader(this);
instance.container.addClass('htRemoveRow');
};
/**
* Return custom row label or automatically generate one
* @param {Number} index Row index
* @return {String}
*/
Handsontable.extension.RemoveRow.prototype.columnLabel = function (index) {
return '<div class="btn">x</div>';
};
/**
* Return button object for a given TD or TH
* @param {Element} td
* @return {jQuery}
*/
Handsontable.extension.RemoveRow.prototype.getButton = function (td) {
return this.instance.blockedCols.main.find('th.htRemoveRow .btn').eq($(td.parentNode).index());
};
})(jQuery);