2010-10-20 20:11:15 +02:00
|
|
|
/*
|
|
|
|
|
|
|
|
Copyright 2010, Google Inc.
|
|
|
|
All rights reserved.
|
|
|
|
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
|
|
modification, are permitted provided that the following conditions are
|
|
|
|
met:
|
|
|
|
|
2011-08-04 22:37:14 +02:00
|
|
|
* Redistributions of source code must retain the above copyright
|
2010-10-20 20:11:15 +02:00
|
|
|
notice, this list of conditions and the following disclaimer.
|
2011-08-04 22:37:14 +02:00
|
|
|
* Redistributions in binary form must reproduce the above
|
2010-10-20 20:11:15 +02:00
|
|
|
copyright notice, this list of conditions and the following disclaimer
|
|
|
|
in the documentation and/or other materials provided with the
|
|
|
|
distribution.
|
2011-08-04 22:37:14 +02:00
|
|
|
* Neither the name of Google Inc. nor the names of its
|
2010-10-20 20:11:15 +02:00
|
|
|
contributors may be used to endorse or promote products derived from
|
|
|
|
this software without specific prior written permission.
|
|
|
|
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
|
|
"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 THE COPYRIGHT
|
|
|
|
OWNER OR CONTRIBUTORS 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.
|
|
|
|
|
2011-08-04 22:37:14 +02:00
|
|
|
*/
|
2010-10-20 20:11:15 +02:00
|
|
|
|
2010-08-09 03:13:57 +02:00
|
|
|
DataTableColumnHeaderUI.extendMenu(function(column, columnHeaderUI, menu) {
|
2011-08-04 22:37:14 +02:00
|
|
|
var doTextTransform = function(expression, onError, repeat, repeatCount) {
|
|
|
|
Refine.postCoreProcess(
|
|
|
|
"text-transform",
|
|
|
|
{
|
|
|
|
columnName: column.name,
|
|
|
|
expression: expression,
|
|
|
|
onError: onError,
|
|
|
|
repeat: repeat,
|
|
|
|
repeatCount: repeatCount
|
|
|
|
},
|
|
|
|
null,
|
|
|
|
{ cellsChanged: true }
|
|
|
|
);
|
|
|
|
};
|
2010-08-09 03:13:57 +02:00
|
|
|
|
2011-08-04 22:37:14 +02:00
|
|
|
var doTextTransformPrompt = function() {
|
|
|
|
var frame = $(
|
|
|
|
DOM.loadHTML("core", "scripts/views/data-table/text-transform-dialog.html")
|
|
|
|
.replace("$EXPRESSION_PREVIEW_WIDGET$", ExpressionPreviewDialog.generateWidgetHtml()));
|
2010-08-09 03:13:57 +02:00
|
|
|
|
2011-08-04 22:37:14 +02:00
|
|
|
var elmts = DOM.bind(frame);
|
2013-07-09 15:57:25 +02:00
|
|
|
elmts.dialogHeader.text($.i18n._('core-views')["custom-text-trans"]+" " + column.name);
|
|
|
|
|
2015-05-02 04:24:57 +02:00
|
|
|
elmts.or_views_errorOn.text($.i18n._('core-views')["on-error"]);
|
2013-07-09 15:57:25 +02:00
|
|
|
elmts.or_views_keepOr.text($.i18n._('core-views')["keep-or"]);
|
|
|
|
elmts.or_views_setBlank.text($.i18n._('core-views')["set-blank"]);
|
|
|
|
elmts.or_views_storeErr.text($.i18n._('core-views')["store-err"]);
|
|
|
|
elmts.or_views_reTrans.text($.i18n._('core-views')["re-trans"]);
|
|
|
|
elmts.or_views_timesChang.text($.i18n._('core-views')["times-chang"]);
|
|
|
|
elmts.okButton.html($.i18n._('core-buttons')["ok"]);
|
|
|
|
elmts.cancelButton.text($.i18n._('core-buttons')["cancel"]);
|
2010-08-09 03:13:57 +02:00
|
|
|
|
2011-08-04 22:37:14 +02:00
|
|
|
var level = DialogSystem.showDialog(frame);
|
|
|
|
var dismiss = function() { DialogSystem.dismissUntil(level - 1); };
|
|
|
|
|
|
|
|
elmts.cancelButton.click(dismiss);
|
|
|
|
elmts.okButton.click(function() {
|
|
|
|
doTextTransform(
|
|
|
|
previewWidget.getExpression(true),
|
|
|
|
$('input[name="text-transform-dialog-onerror-choice"]:checked')[0].value,
|
|
|
|
elmts.repeatCheckbox[0].checked,
|
|
|
|
elmts.repeatCountInput[0].value
|
|
|
|
);
|
|
|
|
dismiss();
|
|
|
|
});
|
|
|
|
|
|
|
|
var o = DataTableView.sampleVisibleRows(column);
|
|
|
|
var previewWidget = new ExpressionPreviewDialog.Widget(
|
|
|
|
elmts,
|
|
|
|
column.cellIndex,
|
|
|
|
o.rowIndices,
|
|
|
|
o.values,
|
|
|
|
null
|
|
|
|
);
|
|
|
|
previewWidget._prepareUpdate = function(params) {
|
|
|
|
params.repeat = elmts.repeatCheckbox[0].checked;
|
|
|
|
params.repeatCount = elmts.repeatCountInput[0].value;
|
2010-08-09 03:13:57 +02:00
|
|
|
};
|
2011-08-04 22:37:14 +02:00
|
|
|
elmts.repeatCheckbox.click(function() {
|
|
|
|
previewWidget.update();
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
var doFillDown = function() {
|
|
|
|
Refine.postCoreProcess(
|
|
|
|
"fill-down",
|
|
|
|
{
|
|
|
|
columnName: column.name
|
|
|
|
},
|
|
|
|
null,
|
|
|
|
{ modelsChanged: true }
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
var doBlankDown = function() {
|
|
|
|
Refine.postCoreProcess(
|
|
|
|
"blank-down",
|
|
|
|
{
|
|
|
|
columnName: column.name
|
|
|
|
},
|
|
|
|
null,
|
|
|
|
{ modelsChanged: true }
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
var doJoinMultiValueCells = function() {
|
2013-07-09 15:57:25 +02:00
|
|
|
var separator = window.prompt($.i18n._('core-views')["enter-separator"], ", ");
|
2011-08-04 22:37:14 +02:00
|
|
|
if (separator !== null) {
|
|
|
|
Refine.postCoreProcess(
|
|
|
|
"join-multi-value-cells",
|
|
|
|
{
|
|
|
|
columnName: column.name,
|
|
|
|
keyColumnName: theProject.columnModel.keyColumnName,
|
2017-10-23 08:46:33 +02:00
|
|
|
separator
|
2011-08-04 22:37:14 +02:00
|
|
|
},
|
|
|
|
null,
|
|
|
|
{ rowsChanged: true }
|
|
|
|
);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
var doSplitMultiValueCells = function() {
|
2017-10-23 00:53:18 +02:00
|
|
|
|
|
|
|
var frame = $(DOM.loadHTML("core", "scripts/views/data-table/split-multi-valued-cells-dialog.html"));
|
|
|
|
var elmts = DOM.bind(frame);
|
|
|
|
elmts.dialogHeader.text($.i18n._('core-views')["split-cells"]);
|
|
|
|
|
|
|
|
elmts.or_views_howSplit.text($.i18n._('core-views')["how-split-cells"]);
|
|
|
|
elmts.or_views_bySep.text($.i18n._('core-views')["by-sep"]);
|
|
|
|
elmts.or_views_separator.text($.i18n._('core-views')["separator"]);
|
|
|
|
elmts.or_views_regExp.text($.i18n._('core-views')["reg-exp"]);
|
|
|
|
|
|
|
|
elmts.or_views_fieldLen.text($.i18n._('core-views')["field-len"]);
|
|
|
|
elmts.or_views_listInt.text($.i18n._('core-views')["list-int"]);
|
|
|
|
|
|
|
|
elmts.okButton.html($.i18n._('core-buttons')["ok"]);
|
|
|
|
elmts.cancelButton.text($.i18n._('core-buttons')["cancel"]);
|
|
|
|
|
|
|
|
var level = DialogSystem.showDialog(frame);
|
|
|
|
var dismiss = function() { DialogSystem.dismissUntil(level - 1); };
|
|
|
|
|
|
|
|
elmts.cancelButton.click(dismiss);
|
|
|
|
elmts.okButton.click(function() {
|
|
|
|
var mode = $("input[name='split-by-mode']:checked")[0].value;
|
|
|
|
var config = {
|
|
|
|
columnName: column.name,
|
|
|
|
keyColumnName: theProject.columnModel.keyColumnName,
|
2017-10-23 09:54:26 +02:00
|
|
|
mode
|
2017-10-23 00:53:18 +02:00
|
|
|
};
|
2017-10-23 08:46:33 +02:00
|
|
|
if (mode === "separator") {
|
2017-10-23 00:53:18 +02:00
|
|
|
config.separator = elmts.separatorInput[0].value;
|
|
|
|
if (!(config.separator)) {
|
|
|
|
alert($.i18n._('core-views')["specify-sep"]);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
config.regex = elmts.regexInput[0].checked;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
var s = "[" + elmts.lengthsTextarea[0].value + "]";
|
|
|
|
try {
|
|
|
|
var a = JSON.parse(s);
|
|
|
|
|
|
|
|
var lengths = [];
|
|
|
|
$.each(a, function(i,n) {
|
|
|
|
if (typeof n == "number") {
|
|
|
|
lengths.push(n);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
if (lengths.length === 0) {
|
|
|
|
alert($.i18n._('core-views')["warning-no-length"]);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
config.fieldLengths = JSON.stringify(lengths);
|
|
|
|
|
|
|
|
} catch (e) {
|
|
|
|
alert($.i18n._('core-views')["warning-format"]);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-08-04 22:37:14 +02:00
|
|
|
Refine.postCoreProcess(
|
|
|
|
"split-multi-value-cells",
|
2017-10-23 00:53:18 +02:00
|
|
|
config,
|
2011-08-04 22:37:14 +02:00
|
|
|
null,
|
|
|
|
{ rowsChanged: true }
|
|
|
|
);
|
2017-10-23 00:53:18 +02:00
|
|
|
|
|
|
|
dismiss();
|
|
|
|
});
|
2011-08-04 22:37:14 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
MenuSystem.appendTo(menu, [ "core/edit-cells" ], [
|
|
|
|
{
|
|
|
|
id: "core/text-transform",
|
2013-07-09 15:57:25 +02:00
|
|
|
label: $.i18n._('core-views')["transform"]+"...",
|
2011-08-04 22:37:14 +02:00
|
|
|
click: function() { doTextTransformPrompt(); }
|
|
|
|
},
|
|
|
|
{
|
|
|
|
id: "core/common-transforms",
|
2013-07-09 15:57:25 +02:00
|
|
|
label: $.i18n._('core-views')["common-transform"],
|
2011-08-04 22:37:14 +02:00
|
|
|
submenu: [
|
|
|
|
{
|
|
|
|
id: "core/trim-whitespace",
|
2013-07-09 15:57:25 +02:00
|
|
|
label: $.i18n._('core-views')["trim-all"],
|
2011-09-30 08:09:55 +02:00
|
|
|
click: function() { doTextTransform("value.trim()", "keep-original", false, ""); }
|
2011-08-04 22:37:14 +02:00
|
|
|
},
|
2010-08-09 03:13:57 +02:00
|
|
|
{
|
2011-08-04 22:37:14 +02:00
|
|
|
id: "core/collapse-whitespace",
|
2013-07-09 15:57:25 +02:00
|
|
|
label: $.i18n._('core-views')["collapse-white"],
|
2011-09-30 08:09:55 +02:00
|
|
|
click: function() { doTextTransform("value.replace(/\\s+/,' ')", "keep-original", false, ""); }
|
2010-08-09 03:13:57 +02:00
|
|
|
},
|
2011-08-04 22:37:14 +02:00
|
|
|
{},
|
2010-08-09 03:13:57 +02:00
|
|
|
{
|
2011-08-04 22:37:14 +02:00
|
|
|
id: "core/unescape-html-entities",
|
2013-07-09 15:57:25 +02:00
|
|
|
label: $.i18n._('core-views')["unescape-html"],
|
2011-09-30 08:09:55 +02:00
|
|
|
click: function() { doTextTransform("value.unescape('html')", "keep-original", true, 10); }
|
2010-08-09 03:13:57 +02:00
|
|
|
},
|
|
|
|
{},
|
|
|
|
{
|
2011-08-04 22:37:14 +02:00
|
|
|
id: "core/to-titlecase",
|
2013-07-09 15:57:25 +02:00
|
|
|
label: $.i18n._('core-views')["titlecase"],
|
2011-09-30 08:09:55 +02:00
|
|
|
click: function() { doTextTransform("value.toTitlecase()", "keep-original", false, ""); }
|
2011-08-04 22:37:14 +02:00
|
|
|
},
|
|
|
|
{
|
|
|
|
id: "core/to-uppercase",
|
2013-07-09 15:57:25 +02:00
|
|
|
label: $.i18n._('core-views')["uppercase"],
|
2011-09-30 08:09:55 +02:00
|
|
|
click: function() { doTextTransform("value.toUppercase()", "keep-original", false, ""); }
|
2010-08-09 03:13:57 +02:00
|
|
|
},
|
|
|
|
{
|
2011-08-04 22:37:14 +02:00
|
|
|
id: "core/to-lowercase",
|
2013-07-09 15:57:25 +02:00
|
|
|
label: $.i18n._('core-views')["lowercase"],
|
2011-09-30 08:09:55 +02:00
|
|
|
click: function() { doTextTransform("value.toLowercase()", "keep-original", false, ""); }
|
2010-08-09 03:13:57 +02:00
|
|
|
},
|
|
|
|
{},
|
|
|
|
{
|
2011-08-04 22:37:14 +02:00
|
|
|
id: "core/to-number",
|
2013-07-09 15:57:25 +02:00
|
|
|
label: $.i18n._('core-views')["to-number"],
|
2011-09-30 08:09:55 +02:00
|
|
|
click: function() { doTextTransform("value.toNumber()", "keep-original", false, ""); }
|
2010-08-09 03:13:57 +02:00
|
|
|
},
|
|
|
|
{
|
2011-08-04 22:37:14 +02:00
|
|
|
id: "core/to-date",
|
2013-07-09 15:57:25 +02:00
|
|
|
label: $.i18n._('core-views')["to-date"],
|
2011-09-30 08:09:55 +02:00
|
|
|
click: function() { doTextTransform("value.toDate()", "keep-original", false, ""); }
|
2011-08-04 22:37:14 +02:00
|
|
|
},
|
|
|
|
{
|
|
|
|
id: "core/to-text",
|
2013-07-09 15:57:25 +02:00
|
|
|
label: $.i18n._('core-views')["to-text"],
|
2011-09-30 08:09:55 +02:00
|
|
|
click: function() { doTextTransform("value.toString()", "keep-original", false, ""); }
|
2010-08-09 03:13:57 +02:00
|
|
|
},
|
|
|
|
{},
|
|
|
|
{
|
2011-08-04 22:37:14 +02:00
|
|
|
id: "core/to-blank",
|
2013-07-09 15:57:25 +02:00
|
|
|
label: $.i18n._('core-views')["blank-out"],
|
2011-09-30 08:09:55 +02:00
|
|
|
click: function() { doTextTransform("null", "keep-original", false, ""); }
|
2010-08-09 03:13:57 +02:00
|
|
|
}
|
2011-08-04 22:37:14 +02:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{},
|
|
|
|
{
|
|
|
|
id: "core/fill-down",
|
2013-07-09 15:57:25 +02:00
|
|
|
label: $.i18n._('core-views')["fill-down"],
|
2011-08-04 22:37:14 +02:00
|
|
|
click: doFillDown
|
|
|
|
},
|
|
|
|
{
|
|
|
|
id: "core/blank-down",
|
2013-07-09 15:57:25 +02:00
|
|
|
label: $.i18n._('core-views')["blank-down"],
|
2011-08-04 22:37:14 +02:00
|
|
|
click: doBlankDown
|
|
|
|
},
|
|
|
|
{},
|
|
|
|
{
|
|
|
|
id: "core/split-multi-valued-cells",
|
2013-07-09 15:57:25 +02:00
|
|
|
label: $.i18n._('core-views')["split-cells"]+"...",
|
2011-08-04 22:37:14 +02:00
|
|
|
click: doSplitMultiValueCells
|
|
|
|
},
|
|
|
|
{
|
|
|
|
id: "core/join-multi-valued-cells",
|
2013-07-09 15:57:25 +02:00
|
|
|
label: $.i18n._('core-views')["join-cells"]+"...",
|
2011-08-04 22:37:14 +02:00
|
|
|
click: doJoinMultiValueCells
|
|
|
|
},
|
|
|
|
{},
|
|
|
|
{
|
|
|
|
id: "core/cluster",
|
2013-07-09 15:57:25 +02:00
|
|
|
label: $.i18n._('core-views')["cluster-edit"]+"...",
|
2011-08-04 22:37:14 +02:00
|
|
|
click: function() { new ClusteringDialog(column.name, "value"); }
|
|
|
|
}
|
|
|
|
]);
|
2010-08-09 03:13:57 +02:00
|
|
|
|
2011-08-04 22:37:14 +02:00
|
|
|
var doTransposeColumnsIntoRows = function() {
|
|
|
|
var dialog = $(DOM.loadHTML("core", "scripts/views/data-table/transpose-columns-into-rows.html"));
|
2010-08-09 03:13:57 +02:00
|
|
|
|
2011-08-04 22:37:14 +02:00
|
|
|
var elmts = DOM.bind(dialog);
|
|
|
|
var level = DialogSystem.showDialog(dialog);
|
2013-07-09 15:57:25 +02:00
|
|
|
|
|
|
|
elmts.dialogHeader.html($.i18n._('core-views')["transp-cell"]);
|
|
|
|
elmts.or_views_fromCol.html($.i18n._('core-views')["from-col"]);
|
|
|
|
elmts.or_views_toCol.html($.i18n._('core-views')["to-col"]);
|
|
|
|
elmts.or_views_transpose.html($.i18n._('core-views')["transp-into"]);
|
|
|
|
elmts.or_views_twoCol.html($.i18n._('core-views')["two-new-col"]);
|
|
|
|
elmts.or_views_keyCol.html($.i18n._('core-views')["key-col"]);
|
|
|
|
elmts.or_views_containNames.html($.i18n._('core-views')["contain-names"]);
|
|
|
|
elmts.or_views_valCol.html($.i18n._('core-views')["val-col"]);
|
|
|
|
elmts.or_views_containOrig.html($.i18n._('core-views')["contain-val"]);
|
|
|
|
elmts.or_views_oneCol.html($.i18n._('core-views')["one-col"]);
|
|
|
|
elmts.or_views_prependName.html($.i18n._('core-views')["prepend-name"]);
|
|
|
|
elmts.or_views_followBy.html($.i18n._('core-views')["follow-by"]);
|
|
|
|
elmts.or_views_beforeVal.html($.i18n._('core-views')["before-val"]);
|
|
|
|
elmts.or_views_ignoreBlank.html($.i18n._('core-views')["ignore-blank"]);
|
|
|
|
elmts.or_views_fillOther.html($.i18n._('core-views')["fill-other"]);
|
|
|
|
elmts.okButton.html($.i18n._('core-buttons')["transpose"]);
|
|
|
|
elmts.cancelButton.html($.i18n._('core-buttons')["cancel"]);
|
|
|
|
|
2011-08-04 22:37:14 +02:00
|
|
|
var dismiss = function() {
|
|
|
|
DialogSystem.dismissUntil(level - 1);
|
|
|
|
};
|
2010-08-09 03:13:57 +02:00
|
|
|
|
2011-08-04 22:37:14 +02:00
|
|
|
var columns = theProject.columnModel.columns;
|
2010-08-09 03:13:57 +02:00
|
|
|
|
2011-08-04 22:37:14 +02:00
|
|
|
elmts.cancelButton.click(function() { dismiss(); });
|
|
|
|
elmts.okButton.click(function() {
|
|
|
|
var config = {
|
2011-11-06 03:50:33 +01:00
|
|
|
startColumnName: elmts.fromColumnSelect[0].value,
|
|
|
|
columnCount: elmts.toColumnSelect[0].value,
|
2011-11-07 20:39:23 +01:00
|
|
|
ignoreBlankCells: elmts.ignoreBlankCellsCheckbox[0].checked,
|
|
|
|
fillDown: elmts.fillDownCheckbox[0].checked
|
2011-08-04 22:37:14 +02:00
|
|
|
};
|
2011-11-06 03:50:33 +01:00
|
|
|
|
|
|
|
var mode = dialog.find('input[name="transpose-dialog-column-choices"]:checked')[0].value;
|
|
|
|
if (mode == "2") {
|
|
|
|
config.keyColumnName = $.trim(elmts.keyColumnNameInput[0].value);
|
|
|
|
config.valueColumnName = $.trim(elmts.valueColumnNameInput[0].value);
|
|
|
|
if (config.keyColumnName == "") {
|
2013-07-09 15:57:25 +02:00
|
|
|
alert($.i18n._('core-views')["spec-new-name"]);
|
2011-11-06 03:50:33 +01:00
|
|
|
return;
|
|
|
|
} else if (config.valueColumnName == "") {
|
2013-07-09 15:57:25 +02:00
|
|
|
alert($.i18n._('core-views')["spec-new-val"]);
|
2011-11-06 03:50:33 +01:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
config.combinedColumnName = $.trim(elmts.combinedColumnNameInput[0].value);
|
|
|
|
config.prependColumnName = elmts.prependColumnNameCheckbox[0].checked;
|
|
|
|
config.separator = elmts.separatorInput[0].value;
|
|
|
|
if (config.combinedColumnName == "") {
|
2013-07-09 15:57:25 +02:00
|
|
|
alert($.i18n._('core-views')["spec-col-name"]);
|
2011-11-06 03:50:33 +01:00
|
|
|
return;
|
|
|
|
} else if (config.prependColumnName && config.separator == "") {
|
2013-07-09 15:57:25 +02:00
|
|
|
alert($.i18n._('core-views')["spec-separator"]);
|
2011-11-06 03:50:33 +01:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
2011-08-04 22:37:14 +02:00
|
|
|
|
|
|
|
Refine.postCoreProcess(
|
|
|
|
"transpose-columns-into-rows",
|
|
|
|
config,
|
|
|
|
null,
|
2011-11-06 03:50:33 +01:00
|
|
|
{ modelsChanged: true },
|
|
|
|
{
|
|
|
|
onDone: dismiss
|
|
|
|
}
|
2011-08-04 22:37:14 +02:00
|
|
|
);
|
|
|
|
});
|
|
|
|
|
|
|
|
for (var i = 0; i < columns.length; i++) {
|
|
|
|
var column2 = columns[i];
|
|
|
|
var option = $('<option>').attr("value", column2.name).text(column2.name).appendTo(elmts.fromColumnSelect);
|
|
|
|
if (column2.name == column.name) {
|
|
|
|
option.attr("selected", "true");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
var populateToColumn = function() {
|
|
|
|
elmts.toColumnSelect.empty();
|
|
|
|
|
|
|
|
var toColumnName = elmts.fromColumnSelect[0].value;
|
2010-08-09 03:13:57 +02:00
|
|
|
|
2011-08-04 22:37:14 +02:00
|
|
|
var j = 0;
|
|
|
|
for (; j < columns.length; j++) {
|
|
|
|
var column2 = columns[j];
|
|
|
|
if (column2.name == toColumnName) {
|
|
|
|
break;
|
2010-08-09 03:13:57 +02:00
|
|
|
}
|
2011-08-04 22:37:14 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
for (var k = j + 1; k < columns.length; k++) {
|
|
|
|
var column2 = columns[k];
|
2011-10-19 15:42:50 +02:00
|
|
|
$('<option>').attr("value", k - j + 1).text(column2.name).appendTo(elmts.toColumnSelect);
|
2011-08-04 22:37:14 +02:00
|
|
|
}
|
2011-10-19 15:42:50 +02:00
|
|
|
|
|
|
|
$('<option>')
|
|
|
|
.attr("value", "-1")
|
|
|
|
.attr("selected", "true")
|
|
|
|
.text("(last column)")
|
|
|
|
.appendTo(elmts.toColumnSelect);
|
2011-08-04 22:37:14 +02:00
|
|
|
};
|
|
|
|
populateToColumn();
|
|
|
|
|
|
|
|
elmts.fromColumnSelect.bind("change", populateToColumn);
|
|
|
|
};
|
|
|
|
|
|
|
|
var doTransposeRowsIntoColumns = function() {
|
2013-07-09 15:57:25 +02:00
|
|
|
var rowCount = window.prompt($.i18n._('core-views')["how-many-rows"], "2");
|
2011-10-08 01:44:11 +02:00
|
|
|
if (rowCount !== null) {
|
2011-08-04 22:37:14 +02:00
|
|
|
try {
|
2011-10-08 01:44:11 +02:00
|
|
|
rowCount = parseInt(rowCount,10);
|
2011-08-04 22:37:14 +02:00
|
|
|
} catch (e) {
|
|
|
|
// ignore
|
|
|
|
}
|
|
|
|
|
|
|
|
if (isNaN(rowCount) || rowCount < 2) {
|
2013-07-09 15:57:25 +02:00
|
|
|
alert($.i18n._('core-views')["expect-two"]);
|
2011-08-04 22:37:14 +02:00
|
|
|
} else {
|
|
|
|
var config = {
|
|
|
|
columnName: column.name,
|
|
|
|
rowCount: rowCount
|
|
|
|
};
|
|
|
|
|
|
|
|
Refine.postCoreProcess(
|
|
|
|
"transpose-rows-into-columns",
|
|
|
|
config,
|
|
|
|
null,
|
|
|
|
{ modelsChanged: true }
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
2011-11-04 22:00:32 +01:00
|
|
|
|
|
|
|
var doKeyValueColumnize = function() {
|
|
|
|
var dialog = $(DOM.loadHTML("core", "scripts/views/data-table/key-value-columnize.html"));
|
|
|
|
|
|
|
|
var elmts = DOM.bind(dialog);
|
|
|
|
var level = DialogSystem.showDialog(dialog);
|
2013-07-09 15:57:25 +02:00
|
|
|
|
|
|
|
elmts.dialogHeader.html($.i18n._('core-views')["columnize"]);
|
|
|
|
elmts.or_views_keyCol.html($.i18n._('core-views')["key-col"]);
|
|
|
|
elmts.or_views_valCol.html($.i18n._('core-views')["val-col"]);
|
|
|
|
elmts.or_views_noteCol.html($.i18n._('core-views')["note-col"]);
|
|
|
|
elmts.okButton.html($.i18n._('core-buttons')["ok"]);
|
|
|
|
elmts.cancelButton.html($.i18n._('core-buttons')["cancel"]);
|
|
|
|
|
2011-11-04 22:00:32 +01:00
|
|
|
var dismiss = function() {
|
|
|
|
DialogSystem.dismissUntil(level - 1);
|
|
|
|
};
|
|
|
|
|
|
|
|
var columns = theProject.columnModel.columns;
|
|
|
|
|
|
|
|
elmts.cancelButton.click(function() { dismiss(); });
|
|
|
|
elmts.okButton.click(function() {
|
|
|
|
var config = {
|
|
|
|
keyColumnName: elmts.keyColumnSelect[0].value,
|
|
|
|
valueColumnName: elmts.valueColumnSelect[0].value,
|
|
|
|
noteColumnName: elmts.noteColumnSelect[0].value
|
|
|
|
};
|
|
|
|
if (config.keyColumnName == null ||
|
|
|
|
config.valueColumnName == null ||
|
|
|
|
config.keyColumnName == config.valueColumnName) {
|
2013-07-09 15:57:25 +02:00
|
|
|
alert($.i18n._('core-views')["sel-col-val"]);
|
2011-11-04 22:00:32 +01:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
var noteColumnName = elmts.noteColumnSelect[0].value;
|
|
|
|
if (noteColumnName != null) {
|
|
|
|
if (noteColumnName == config.keyColumnName ||
|
|
|
|
noteColumnName == config.valueColumnName) {
|
2013-07-09 15:57:25 +02:00
|
|
|
alert($.i18n._('core-views')["cannot-same"]);
|
2011-11-04 22:00:32 +01:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
config.noteColumnName = noteColumnName;
|
|
|
|
}
|
|
|
|
|
|
|
|
Refine.postCoreProcess(
|
|
|
|
"key-value-columnize",
|
|
|
|
config,
|
|
|
|
null,
|
|
|
|
{ modelsChanged: true }
|
|
|
|
);
|
|
|
|
dismiss();
|
|
|
|
});
|
|
|
|
|
|
|
|
var valueColumnIndex = -1;
|
|
|
|
for (var i = 0; i < columns.length; i++) {
|
|
|
|
var column2 = columns[i];
|
|
|
|
|
|
|
|
var keyOption = $('<option>').attr("value", column2.name).text(column2.name).appendTo(elmts.keyColumnSelect);
|
|
|
|
if (column2.name == column.name) {
|
|
|
|
keyOption.attr("selected", "true");
|
|
|
|
valueColumnIndex = i + 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
var valueOption = $('<option>').attr("value", column2.name).text(column2.name).appendTo(elmts.valueColumnSelect);
|
|
|
|
if (i === valueColumnIndex) {
|
|
|
|
valueOption.attr("selected", "true");
|
|
|
|
}
|
|
|
|
|
|
|
|
$('<option>').attr("value", column2.name).text(column2.name).appendTo(elmts.noteColumnSelect);
|
|
|
|
}
|
|
|
|
};
|
2011-08-04 22:37:14 +02:00
|
|
|
|
|
|
|
MenuSystem.appendTo(menu, [ "core/transpose" ], [
|
|
|
|
{
|
|
|
|
id: "core/transpose-columns-into-rows",
|
2013-07-09 15:57:25 +02:00
|
|
|
label: $.i18n._('core-views')["transp-cell-row"]+"...",
|
2011-08-04 22:37:14 +02:00
|
|
|
click: doTransposeColumnsIntoRows
|
|
|
|
},
|
|
|
|
{
|
|
|
|
id: "core/transpose-rows-into-columns",
|
2013-07-09 15:57:25 +02:00
|
|
|
label: $.i18n._('core-views')["transp-cell-col"]+"...",
|
2011-08-04 22:37:14 +02:00
|
|
|
click: doTransposeRowsIntoColumns
|
2011-11-04 22:00:32 +01:00
|
|
|
},
|
|
|
|
{},
|
|
|
|
{
|
|
|
|
id: "core/key-value-columnize",
|
2013-07-09 15:57:25 +02:00
|
|
|
label: $.i18n._('core-views')["columnize-col"]+"...",
|
2011-11-04 22:00:32 +01:00
|
|
|
click: doKeyValueColumnize
|
2011-08-04 22:37:14 +02:00
|
|
|
}
|
|
|
|
]
|
|
|
|
);
|
2010-08-09 03:13:57 +02:00
|
|
|
});
|