PropertiesView.js revision 620268d6c2c779a8b2c676f276680021144b532f
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows/**
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows *
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows * Copyright (c) 2014 ForgeRock AS. All rights reserved.
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows *
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows * The contents of this file are subject to the terms
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows * of the Common Development and Distribution License
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows * (the License). You may not use this file except in
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows * compliance with the License.
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows *
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows * You can obtain a copy of the License at
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows * http://forgerock.org/license/CDDLv1.0.html
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows * See the License for the specific language governing
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows * permission and limitations under the License.
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows *
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows * When distributing Covered Code, include this CDDL
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows * Header Notice in each file and include the License file
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows * at http://forgerock.org/license/CDDLv1.0.html
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows * If applicable, add the following below the CDDL Header,
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows * with the fields enclosed by brackets [] replaced by
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows * your own identifying information:
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows * "Portions Copyrighted [year] [name of copyright owner]"
2d2a52253051eb056ca017546a076c0f585283f2stephh */
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows/*global define, $, _, Handlebars, form2js */
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows/*jslint evil: true */
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolowsdefine("org/forgerock/openidm/ui/admin/mapping/PropertiesView", [
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "org/forgerock/openidm/ui/admin/util/AdminAbstractView",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "org/forgerock/commons/ui/common/main/EventManager",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "org/forgerock/commons/ui/common/main/Configuration",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "org/forgerock/commons/ui/common/util/UIUtils",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "org/forgerock/commons/ui/common/util/Constants",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "org/forgerock/openidm/ui/admin/delegates/SessionStorageDelegate"
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows ], function(AbstractView, eventManager, conf, UIUtils, constants, sessionStorageDelegate) {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows var PropertiesView = AbstractView.extend({
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows template: "templates/admin/mapping/PropertiesTemplate.html",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows element: "#propertyMapping",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows noBaseTemplate: true,
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows events: {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "click .addProperty": "addProperty",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "click .removePropertyBtn": "removeProperty",
2d2a52253051eb056ca017546a076c0f585283f2stephh "click .attrTabBtn": "openPropertyEditTab"
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows },
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows addProperty: function (e) {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows e.preventDefault();
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows eventManager.sendEvent(constants.ROUTE_REQUEST, {routeName: "addMappingProperty", args: [this.parent.currentMapping().name]});
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows },
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows removeProperty: function (e) {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows e.preventDefault();
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows UIUtils.jqConfirm($.t("templates.mapping.confirmRemoveProperty",{property: $(e.target).attr('target')}),_.bind(function(){
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows var mapProps = sessionStorageDelegate.get(this.parent.currentMapping().name + "_Properties") || this.data.mapProps;
2d2a52253051eb056ca017546a076c0f585283f2stephh sessionStorageDelegate.set(this.parent.currentMapping().name + "_Properties",_.reject(mapProps, function (p) { return p.target === $(e.target).attr('target'); }));
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows this.parent.checkChanges();
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows this.render(this.parent);
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows },this));
2d2a52253051eb056ca017546a076c0f585283f2stephh },
2d2a52253051eb056ca017546a076c0f585283f2stephh openPropertyEditTab: function(e){
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows var id = $(e.target).attr('rowId'),
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows tab = $(e.target).attr('tab');
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows eventManager.sendEvent(constants.ROUTE_REQUEST, {routeName: "editMappingProperty", args: [this.parent.currentMapping().name, id]});
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows if(tab === 'condition'){
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows $("[href=#Condition_Script]").click();
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows else if(tab === 'transform'){
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows $("[href=#Transformation_Script]").click();
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows else if(tab === 'default'){
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows $("[href=#Default_Values]").click();
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows },
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows loadMappingPropertiesGrid: function() {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows var _this = this,
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows mapProps = sessionStorageDelegate.get(this.parent.currentMapping().name + "_Properties") || sessionStorageDelegate.get("currentMapping").properties,
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows sampleSource = conf.globalData.sampleSource || {},
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows gridFromMapProps = function (props) {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows return _.chain(props)
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows .map(function (prop) {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows var sampleData = null,
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows type = "",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows source = {},
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows sourceProp = "",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows required = false,
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows def = "",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows script = "",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows object = {},
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows hasConditionScript = false;
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows if(typeof(prop.condition) === "object" && prop.condition.type === "text/javascript" &&
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows typeof(prop.condition.source) === "string"){
2d2a52253051eb056ca017546a076c0f585283f2stephh
2d2a52253051eb056ca017546a076c0f585283f2stephh hasConditionScript = true;
2d2a52253051eb056ca017546a076c0f585283f2stephh object = sampleSource;
2d2a52253051eb056ca017546a076c0f585283f2stephh
2d2a52253051eb056ca017546a076c0f585283f2stephh try {
2d2a52253051eb056ca017546a076c0f585283f2stephh if(!eval(prop.condition.source) && prop.condition.source.length > 0){
2d2a52253051eb056ca017546a076c0f585283f2stephh sampleData = "WILL NOT UPDATE";
2d2a52253051eb056ca017546a076c0f585283f2stephh }
2d2a52253051eb056ca017546a076c0f585283f2stephh } catch (e) {
2d2a52253051eb056ca017546a076c0f585283f2stephh sampleData = "ERROR WITH CONDITION";
2d2a52253051eb056ca017546a076c0f585283f2stephh }
2d2a52253051eb056ca017546a076c0f585283f2stephh }
2d2a52253051eb056ca017546a076c0f585283f2stephh
2d2a52253051eb056ca017546a076c0f585283f2stephh if (typeof(prop.transform) === "object" && prop.transform.type === "text/javascript" &&
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows typeof (prop.transform.source) === "string" && sampleData === null) {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows if (typeof(prop.source) !== "undefined" && prop.source.length) {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows source = sampleSource[prop.source];
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows } else {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows source = sampleSource;
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows try {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows sampleData = eval(prop.transform.source); // references to "source" variable expected within this string
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows } catch (err) {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows sampleData = "ERROR WITH SCRIPT";
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows script = prop.transform.source;
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows if (typeof(prop.source) !== "undefined" && prop.source.length) {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows sourceProp = prop.source;
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows } else if (typeof(prop.source) !== "undefined" && prop.source.length) {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows if(sampleData === null){
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows sampleData = sampleSource[prop.source];
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows sourceProp = prop.source;
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows if (typeof(prop["default"]) !== "undefined" && prop["default"].length) {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows if (sampleData === null || sampleData === undefined) {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows sampleData = prop["default"];
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows def = prop["default"];
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows return {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "target": Handlebars.Utils.escapeExpression(prop.target),
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "source": Handlebars.Utils.escapeExpression(sourceProp),
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "default": Handlebars.Utils.escapeExpression(def),
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "script": Handlebars.Utils.escapeExpression(script),
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "sample": Handlebars.Utils.escapeExpression(decodeURIComponent((sampleData || ""))),
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "required": required,
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "hasConditionScript": hasConditionScript
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows };
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }).value();
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows };
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows this.data.mapProps = mapProps;
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows /*if (!$("#findSampleUser").hasClass("ui-autocomplete-input")) {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows $("#findSampleUser").autocomplete({
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows delay: 500,
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows minLength: 2,
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows select: function (event, ui) {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows conf.globalData.sampleSource = ui.item;
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows sampleSource = ui.item;
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows $("#findSampleUser").val(ui.item.cn);
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows $('#mappingTable').jqGrid('setGridParam', {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows datatype: 'local',
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows data: gridFromMapProps(mapProps)
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }).trigger('reloadGrid');
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows return false;
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows },
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows source: function (request, response) {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows searchDelegate.searchResults("account", "cn", request.term).always(response);
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }).data( "ui-autocomplete" )._renderItem = function (ul, item) {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows return $( "<li>" )
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows .append( "<a>" + Handlebars.Utils.escapeExpression(item.cn) + "<br>" + Handlebars.Utils.escapeExpression(item.sAMAccountName) + " / " + Handlebars.Utils.escapeExpression(item.mail) + "</a>" )
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows .appendTo( ul );
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows };
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }*/
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows //$('#mappingTable').after('<div id="mappingTable_pager"></div>');
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows $('#mappingTable').jqGrid( {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows datatype: "local",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows data: gridFromMapProps(mapProps),
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows height: 'auto',
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows width: 910,
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows rowNum: mapProps.length,
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows pager: 'mappingTable_pager',
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows hidegrid: false,
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows colModel: [
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "name": "required",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "label": "&nbsp;",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "width": "25px",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "align": "center",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "title": false,
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "formatter": function(required,opt,row){
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows return (!required) ? '<button target="' + row.target + '" type="button" title="' + $.t("common.form.removeAttribute") + ': ' + row.target + '" class="glyph-icon glyph-icon-minus-sign removePropertyBtn" style="margin-top:4px;">&nbsp;&nbsp;&nbsp;</button>' : '';
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows },
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "name": "target",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "label": $.t("templates.mapping.target"),
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "width": "175px",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "key": true
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows },
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "name": "source",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "label": $.t("templates.mapping.source"),
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "width": "150px"
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows },
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "name": "default",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "label": "Default",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "width": "115px",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "formatter": function(def,opt,row){
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows return (def.length > 0) ? '<span class="attrTabBtn" style="cursor:pointer;" rowId="' + opt.rowId + '" tab="default">' + def + '</span>' : '';
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows },
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "name": "script",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "label": "Transform Script",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "width": "150px",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "formatter": function(script,opt,row){
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows return (script.length > 0) ? '<span class="attrTabBtn" style="cursor:pointer;" rowId="' + opt.rowId + '" tab="transform">' + script + '</span>' : '';
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows },
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "name": "hasConditionScript",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "label": "&nbsp;",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "width": "25px",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "align": "center",
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "title": false,
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows "formatter": function(hasConditionScript,opt,row){
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows return (hasConditionScript) ? '<button class="glyph-icon glyph-icon-filter attrTabBtn" style="height:17px;margin-bottom:4px;" rowId="' + opt.rowId + '" title="' + $.t('templates.mapping.conditionScriptApplied') + '" tab="condition">&nbsp;&nbsp;&nbsp;</button>' : '';
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }/*,
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows {
2d2a52253051eb056ca017546a076c0f585283f2stephh "name": "sample",
2d2a52253051eb056ca017546a076c0f585283f2stephh "label": "Sample",
2d2a52253051eb056ca017546a076c0f585283f2stephh "width": "175px"
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }*/
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows ],
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows cmTemplate: {sortable:false},
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows onSelectRow: function(id){
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows if(id !== "blankRow"){
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows eventManager.sendEvent(constants.ROUTE_REQUEST, {routeName: "editMappingProperty", args: [_this.parent.currentMapping().name, id]});
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows },
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows beforeSelectRow: function(rowid, e) {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows //this prevents the row from being selected if the remove button is clicked
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows var btn = $('.removeBtn', e.target);
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows if (e.target.tagName.toUpperCase() === "BUTTON" || btn.length > 0) {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows return false;
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows return true;
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows },
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows loadComplete: function(data){
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows if (!data.rows.length) {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows $('#mappingTable').addRowData("blankRow", {"required":true,"target":$.t("templates.mapping.noPropertiesMapped"), "default":"", "script":"", "hasConditionScript":false});
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows _this.parent.$el.find("#findSampleSource").parent().hide();
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }).jqGrid('sortableRows',{
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows update: function(ev,ui){
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows var item = ui.item[0],
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows index = item.rowIndex;
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows });
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows },
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows checkAvailableProperties: function(){
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows var _this = this,
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows availableProps;
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows availableProps = sessionStorageDelegate.get(this.parent.currentMapping().name + "_AvailableObjects").target.properties || [];
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows if(!availableProps.length || _.difference(availableProps,_.pluck(_this.data.mapProps,"target")).length) {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows _this.$el.find('.addProperty').removeProp('disabled');
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows _this.$el.find('#allPropertiesMapped').hide();
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows } else {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows _this.$el.find('.addProperty').prop('disabled',true);
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows _this.$el.find('#allPropertiesMapped').show();
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows },
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows render: function(parent, callback) {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows this.parent = parent;
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows this.parentRender(_.bind(function () {
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows this.loadMappingPropertiesGrid();
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows this.checkAvailableProperties();
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows if(callback){
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows callback();
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }, this));
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows }
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows });
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows return new PropertiesView();
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows});
749f21d359d8fbd020c974a1a5227316221bfc9cwesolows