diff --git a/apps/common/main/lib/view/OpenDialog.js b/apps/common/main/lib/view/OpenDialog.js
index 6fd52e989..659d4b7df 100644
--- a/apps/common/main/lib/view/OpenDialog.js
+++ b/apps/common/main/lib/view/OpenDialog.js
@@ -104,7 +104,7 @@ define([
'',
'',
'<% } %>',
- '<% if (type == Common.Utils.importTextType.CSV || type == Common.Utils.importTextType.Paste || type == Common.Utils.importTextType.Columns) { %>',
+ '<% if (type == Common.Utils.importTextType.CSV) { %>',
'
',
'',
'
',
@@ -113,6 +113,16 @@ define([
'
',
'
',
'<% } %>',
+ '<% if (type == Common.Utils.importTextType.Paste || type == Common.Utils.importTextType.Columns) { %>',
+ '
',
+ '',
+ '
',
+ '',
+ '',
+ '',
+ '
',
+ '
',
+ '<% } %>',
'<% if (!!preview) { %>',
'
',
'',
@@ -234,7 +244,10 @@ define([
if (!this.closable && this.type == Common.Utils.importTextType.TXT) { //save last encoding only for opening txt files
Common.localStorage.setItem("de-settings-open-encoding", encoding);
}
- this.handler.call(this, state, encoding, delimiter, delimiterChar);
+
+ var decimal = this.separatorOptions ? this.separatorOptions.decimal : undefined,
+ thousands = this.separatorOptions ? this.separatorOptions.thousands : undefined;
+ this.handler.call(this, state, encoding, delimiter, delimiterChar, decimal, thousands);
}
}
@@ -336,6 +349,13 @@ define([
this.inputDelimiter.setVisible(false);
if (this.preview)
this.inputDelimiter.on ('changing', _.bind(this.updatePreview, this));
+
+ if (this.type == Common.Utils.importTextType.Paste || this.type == Common.Utils.importTextType.Columns) {
+ this.btnAdvanced = new Common.UI.Button({
+ el: $('#id-delimiters-advanced')
+ });
+ this.btnAdvanced.on('click', _.bind(this.onAdvancedClick, this));
+ }
}
},
@@ -355,7 +375,12 @@ define([
break;
case Common.Utils.importTextType.Paste:
case Common.Utils.importTextType.Columns:
- this.api.asc_TextImport(new Asc.asc_CTextOptions(encoding, delimiter, delimiterChar), _.bind(this.previewCallback, this), this.type == Common.Utils.importTextType.Paste);
+ var options = new Asc.asc_CTextOptions(encoding, delimiter, delimiterChar);
+ if (this.separatorOptions) {
+ options.asc_setNumberDecimalSeparator(this.separatorOptions.decimal);
+ options.asc_setNumberGroupSeparator(this.separatorOptions.thousands);
+ }
+ this.api.asc_TextImport(options, _.bind(this.previewCallback, this), this.type == Common.Utils.importTextType.Paste);
break;
}
},
@@ -444,6 +469,28 @@ define([
this.updatePreview();
},
+ onAdvancedClick: function() {
+ if (!SSE) return;
+
+ var me = this,
+ decimal = this.api.asc_getDecimalSeparator(),
+ thousands = this.api.asc_getGroupSeparator();
+ (new SSE.Views.AdvancedSeparatorDialog({
+ props: {
+ decimal: decimal,
+ thousands: thousands
+ },
+ handler: function(result, value) {
+ if (result == 'ok') {
+ me.separatorOptions = {
+ decimal: (value.decimal.length > 0) ? value.decimal : decimal,
+ thousands: (value.thousands.length > 0) ? value.thousands : thousands
+ };
+ }
+ }
+ })).show();
+ },
+
txtDelimiter : "Delimiter",
txtEncoding : "Encoding ",
txtSpace : "Space",
@@ -458,7 +505,8 @@ define([
txtComma: 'Comma',
txtColon: 'Colon',
txtSemicolon: 'Semicolon',
- txtProtected: 'Once you enter the password and open the file, the current password to the file will be reset.'
+ txtProtected: 'Once you enter the password and open the file, the current password to the file will be reset.',
+ txtAdvanced: 'Advanced'
}, Common.Views.OpenDialog || {}));
});
\ No newline at end of file
diff --git a/apps/spreadsheeteditor/main/app/controller/DataTab.js b/apps/spreadsheeteditor/main/app/controller/DataTab.js
index 6aa5e25db..46486cd48 100644
--- a/apps/spreadsheeteditor/main/app/controller/DataTab.js
+++ b/apps/spreadsheeteditor/main/app/controller/DataTab.js
@@ -199,10 +199,13 @@ define([
previewData: data,
settings: me._state.CSVOptions,
api: me.api,
- handler: function (result, encoding, delimiter, delimiterChar) {
+ handler: function (result, encoding, delimiter, delimiterChar, decimal, thousands) {
if (result == 'ok') {
if (me && me.api) {
- me.api.asc_TextToColumns(new Asc.asc_CTextOptions(encoding, delimiter, delimiterChar));
+ var options = new Asc.asc_CTextOptions(encoding, delimiter, delimiterChar);
+ decimal && options.asc_setNumberDecimalSeparator(decimal);
+ thousands && options.asc_setNumberGroupSeparator(thousands);
+ me.api.asc_TextToColumns(options);
}
}
}
diff --git a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js
index e35085aae..2553a88e6 100644
--- a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js
+++ b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js
@@ -2442,12 +2442,16 @@ define([
type: Common.Utils.importTextType.Paste,
preview: true,
api: me.api,
- handler: function (result, encoding, delimiter, delimiterChar) {
+ handler: function (result, encoding, delimiter, delimiterChar, decimal, thousands) {
if (result == 'ok') {
if (me && me.api) {
var props = new Asc.SpecialPasteProps();
props.asc_setProps(Asc.c_oSpecialPasteProps.useTextImport);
- props.asc_setAdvancedOptions(new Asc.asc_CTextOptions(encoding, delimiter, delimiterChar));
+
+ var options = new Asc.asc_CTextOptions(encoding, delimiter, delimiterChar);
+ decimal && options.asc_setNumberDecimalSeparator(decimal);
+ thousands && options.asc_setNumberGroupSeparator(thousands);
+ props.asc_setAdvancedOptions(options);
me.api.asc_SpecialPaste(props);
}
me._state.lastSpecPasteChecked = item;
diff --git a/apps/spreadsheeteditor/main/app/controller/Toolbar.js b/apps/spreadsheeteditor/main/app/controller/Toolbar.js
index 8c277ddfa..856454690 100644
--- a/apps/spreadsheeteditor/main/app/controller/Toolbar.js
+++ b/apps/spreadsheeteditor/main/app/controller/Toolbar.js
@@ -60,7 +60,8 @@ define([
'spreadsheeteditor/main/app/view/PrintTitlesDialog',
'spreadsheeteditor/main/app/view/ScaleDialog',
'spreadsheeteditor/main/app/view/SlicerAddDialog',
- 'spreadsheeteditor/main/app/view/CellsAddDialog'
+ 'spreadsheeteditor/main/app/view/CellsAddDialog',
+ 'spreadsheeteditor/main/app/view/AdvancedSeparatorDialog'
], function () { 'use strict';
SSE.Controllers.Toolbar = Backbone.Controller.extend(_.extend({
diff --git a/apps/spreadsheeteditor/main/app/view/AdvancedSeparatorDialog.js b/apps/spreadsheeteditor/main/app/view/AdvancedSeparatorDialog.js
new file mode 100644
index 000000000..5f2e2bf5e
--- /dev/null
+++ b/apps/spreadsheeteditor/main/app/view/AdvancedSeparatorDialog.js
@@ -0,0 +1,144 @@
+/*
+ *
+ * (c) Copyright Ascensio System SIA 2010-2020
+ *
+ * This program is a free software product. You can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License (AGPL)
+ * version 3 as published by the Free Software Foundation. In accordance with
+ * Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
+ * that Ascensio System SIA expressly excludes the warranty of non-infringement
+ * of any third-party rights.
+ *
+ * This program is distributed WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
+ * details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
+ *
+ * You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha
+ * street, Riga, Latvia, EU, LV-1050.
+ *
+ * The interactive user interfaces in modified source and object code versions
+ * of the Program must display Appropriate Legal Notices, as required under
+ * Section 5 of the GNU AGPL version 3.
+ *
+ * Pursuant to Section 7(b) of the License you must retain the original Product
+ * logo when distributing the program. Pursuant to Section 7(e) we decline to
+ * grant you any rights under trademark law for use of our trademarks.
+ *
+ * All the Product's GUI elements, including illustrations and icon sets, as
+ * well as technical writing content are licensed under the terms of the
+ * Creative Commons Attribution-ShareAlike 4.0 International. See the License
+ * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
+ *
+*/
+/**
+ * AdvancedSeparatorDialog.js
+ *
+ * Created by Julia Radzhabova on 26/06/20
+ * Copyright (c) 2020 Ascensio System SIA. All rights reserved.
+ *
+ */
+
+define([
+ 'common/main/lib/component/Window',
+ 'common/main/lib/component/InputField'
+], function () { 'use strict';
+
+ SSE.Views.AdvancedSeparatorDialog = Common.UI.Window.extend(_.extend({
+ options: {
+ width: 330,
+ cls: 'modal-dlg',
+ buttons: ['ok', 'cancel']
+ },
+
+ initialize : function(options) {
+ _.extend(this.options, {
+ title: this.textTitle
+ }, options || {});
+
+ this.template = [
+ '