RandomSec/main/webapp/modules/core/scripts/index/edit-metadata-dialog.js

101 lines
2.9 KiB
JavaScript
Raw Normal View History

2017-10-26 21:47:24 +02:00
2017-10-29 18:46:37 +01:00
function EditMetadataDialog(metaData, targetRowElem) {
2017-10-26 21:47:24 +02:00
this._metaDataUIs = [];
this._metaData = metaData;
2017-11-09 02:30:01 +01:00
this._MetadataUI = function(tr, key, value, project) {
2017-10-26 21:47:24 +02:00
var self = this;
var td0 = tr.insertCell(0);
$(td0).text(key);
var td1 = tr.insertCell(1);
$(td1).text((value !== null) ? value : "");
var td2 = tr.insertCell(2);
2017-10-29 18:46:37 +01:00
if (key !== "modified" && key !== "rowCount" && key !== "importOptionMetadata" && key !== "id") {
2017-11-05 16:41:17 +01:00
$('<button class="button">').text($.i18n._('core-index')["edit"]).appendTo(td2).click(function() {
var newValue = window.prompt($.i18n._('core-index')["change-metadata-value"]+" " + key, value);
if (newValue !== null) {
$(td1).text(newValue);
metaData[key] = newValue;
$.post(
"command/core/set-metaData",
{
project : project,
name : key,
value : newValue
},
function(o) {
if (o.code === "error") {
alert(o.message);
}
},
"json"
);
}
Refine.OpenProjectUI.refreshProject(targetRowElem, metaData);
});
}
2017-11-04 00:46:07 +01:00
};
2017-10-26 21:47:24 +02:00
this._createDialog();
}
EditMetadataDialog.prototype._createDialog = function() {
var self = this;
var frame = $(DOM.loadHTML("core", "scripts/project/edit-metadata-dialog.html"));
this._elmts = DOM.bind(frame);
this._level = DialogSystem.showDialog(frame);
this._elmts.closeButton.html($.i18n._('core-buttons')["close"]);
this._elmts.closeButton.click(function() { self._dismiss(); });
var body = $("#metadata-body");
$('<h1>').text($.i18n._('core-index')["metaDatas"]).appendTo(body);
var metadataTable = $("<table>")
.addClass("list-table")
.addClass("preferences")
.html('<tr><th>'+$.i18n._('core-index')["key"]+'</th><th>'+$.i18n._('core-index')["value"]+'</th><th></th></tr>')
.appendTo(body)[0];
2017-10-29 18:46:37 +01:00
var flattenObject = function(ob, key) {
var toReturn = {};
for ( var i in ob) {
if (i !== key) {
toReturn[i] = ob[i];
continue;
}
for ( var x in ob[i]) {
toReturn[ob[i][x].name] = ob[i][x].value;
}
}
return toReturn;
};
2017-11-09 02:30:01 +01:00
var flatMetadata = flattenObject(this._metaData, "userMetadata");
2017-10-29 18:46:37 +01:00
2017-11-09 02:30:01 +01:00
for (var k in flatMetadata) {
2017-10-26 21:47:24 +02:00
var tr = metadataTable.insertRow(metadataTable.rows.length);
2017-11-04 01:12:57 +01:00
var v;
2017-10-26 21:47:24 +02:00
2017-11-09 02:30:01 +01:00
if (typeof flatMetadata[k] === 'string') {
v = flatMetadata[k].replace(/\"/g, "");
2017-11-04 00:46:07 +01:00
} else {
2017-11-09 02:30:01 +01:00
v = JSON.stringify(flatMetadata[k]);
2017-11-04 00:46:07 +01:00
}
2017-10-26 21:47:24 +02:00
2017-11-09 02:30:01 +01:00
this._metaDataUIs.push(new this._MetadataUI(tr, k, v, flatMetadata.id));
2017-10-26 21:47:24 +02:00
}
2017-11-04 01:12:57 +01:00
};
2017-10-26 21:47:24 +02:00
EditMetadataDialog.prototype._dismiss = function() {
DialogSystem.dismissUntil(this._level - 1);
};