/** * quest' oggetto definisce i metodi XML * se is_editable è true la stringa XML verrà modificato dall' update massivo * @type {{sso_getWebcustomerInformation: {defaultXML: string, is_editable: boolean, actualXML: string}, sso_getSelectedMSISDNDetails: {defaultXML: string, is_editable: boolean, actualXML: string}, sso_getMSISDNDetails: {defaultXML: string, is_editable: boolean, actualXML: string}, picasso_getWebcustomerInformation: {defaultXML: string, is_editable: boolean, actualXML: string}, sso_getMSISDNList: {defaultXML: string, is_editable: boolean, actualXML: string}, sso_getInfoActivationWSC: {defaultXML: string, is_editable: boolean, actualXML: string}}} */ let xmlMethods = { 'sso_getWebcustomerInformation': { 'defaultXML': sso_getWebcustomerInformation, 'actualXML': sso_getWebcustomerInformation, // dopo le modifiche 'is_editable': true // verrà modificato dalle modifiche massive? }, 'sso_getMSISDNDetails': { 'defaultXML': sso_getMSISDNDetails, 'actualXML': sso_getMSISDNDetails, 'is_editable': true }, 'sso_getMSISDNList': { 'defaultXML': sso_getMSISDNList, 'actualXML': sso_getMSISDNList, 'is_editable': true }, 'sso_getSelectedMSISDNDetails': { 'defaultXML': sso_getSelectedMSISDNDetails, 'actualXML': sso_getSelectedMSISDNDetails, 'is_editable': true }, 'sso_getInfoActivationWSC': { 'defaultXML': sso_getInfoActivationWSC, 'actualXML': sso_getInfoActivationWSC, 'is_editable': true }, 'picasso_getWebcustomerInformation': { 'defaultXML': picasso_getWebcustomerInformation, 'actualXML': picasso_getWebcustomerInformation, 'is_editable': true }, } /** * questa è la lista di campi mostrati nella sezione di update massivo * per aggiungere un campo è necessario aggiungere un oggetto di questo tipo alla lista * @type {({defaultValue: number, inputType: string, requireCheckbox: boolean, inputName: string}|{defaultValue: string, onChangeEditFields: {custcode: {editType: string}}, inputName: string}|{defaultValue: string, inputName: string}|{defaultValue: string, inputName: string}|{defaultValue: string, inputName: string})[]} */ let editableFields = [ { 'inputName': 'n_sim', 'inputType': 'number', "defaultValue": 1, 'requireCheckbox': false, }, { 'inputName': 'profile_user_name', "defaultValue": "NAME FAKESSO | DUAL TM9 RIC 5.49275", 'requireCheckbox': false, }, { 'inputName': 'Custcode', 'defaultValue': '5.49275', 'onChangeEditFields': { 'custcode': { 'editType': 'copyMain' } } }, { 'inputName': 'EmailAddress', 'defaultValue': 'pippo@vola.it' }, { 'inputName': 'Name', 'defaultValue': 'Paola' }, { 'inputName': 'ProfileIdentifier', 'defaultValue': 'BUSINESS_EMPLOYEE' }, { 'inputName': 'Surname', 'defaultValue': 'Sandrelli' }, { 'inputName': 'Username', 'defaultValue': 'FAKE_SSO_', 'onChangeEditFields': { 'username': { 'editType': 'copyMain' }, } }, { 'inputName': 'IdPiano', 'defaultValue': '2491' }, { 'inputName': 'OMProductId', 'defaultValue': '2156' // se uno di quelli dual risulto come dual già attivo }, { 'inputName': 'tmCode', 'defaultValue': '2491' }, { 'inputName': 'sim_1', 'defaultValue': '3464232371', 'onChangeEditFields': { 'MSISDN': { 'editType': 'copyMain' }, 'selectedBoID': { 'editType': 'copyMain' } } } // { // 'inputName': 'Type_ID', // 'defaultValue':'...', // 'labelText': 'Type_ID ex. (2)' // }, // { // 'inputName': 'providerID', // 'defaultValue':'...' // }, // { // 'inputName': 'selectedBoId', // 'defaultValue':'...' // // }, // { // 'inputName': 'selectedBoType', // 'defaultValue':'...' // }, // { // 'inputName': 'username', // 'defaultValue':'...' // }, // { // 'inputName': 'productId', // 'defaultValue':'...' // }, // { // 'inputName': 'productType', // 'defaultValue':'...' // }, // { // 'inputName': 'offerType', // 'defaultValue':'...' // }, // { // 'inputName': 'rewardID', // 'defaultValue':'...' // }, // { // 'inputName': 'groupTypeID', // 'defaultValue':'...' // } ]; $(document).ready(function () { addEditableFieldsInputs(); $.each(xmlMethods, function (method_name) { setDefaultXML(method_name); if (xmlMethods[method_name]["is_editable"]) { $(`input[name="is_editable_${method_name}"]`).prop("checked", true); } }) serializeInputAndEditXML(true, true); $('input[name="n_sim"]').on('change', displayNInputsForNSims); $('input[name^="shouldReplace_"]').on('change', shouldReplaceOption); $(document).on('change', '#edit-all input:not([type="checkbox"])', serializeInputAndEditXML); $(document).on('click', '#edit-all button', serializeInputAndEditXML); $('input[name^="is_editable_"]').on('change', changeEditOption); $(document).on('input', 'textarea', validateTextarea); $(document).on('click', 'button[id^="set_default_xml_"]', setDefaultXML); $(document).on('click', 'button[name="show_result"]', showResult); $(document).on('click', 'button[name="copy-result"]', copyToClipboard); }) /** * partendo dalla lista di sim aggiungo tutti i tag sim all' xml del metodo getMSISDNList * @param sim_list */ function editGetMSISDNListXML(sim_list) { let jsonMsisdn = $.xml2json(sso_getMSISDNList) let MSISDNList = jsonMsisdn["getMDISDNList"]["msisdn_list"] sim_list.forEach(function (sim_obj) { MSISDNList[sim_obj.inputName] = "" }); const newXML = $.json2xml(jsonMsisdn) let encodingValue = $.parseXML(sso_getMSISDNList)["xmlEncoding"] ?? null; const xmlHead = ``; xmlMethods.sso_getMSISDNList.actualXML = xmlHead + newXML const formattedXML = vkbeautify.xml(xmlMethods.sso_getMSISDNList.actualXML) $(`textarea#sso_getMSISDNList`).val(formattedXML) } /** * aggiungo una textarea per ogni sim per il metodo selezionato * @param sim_list * @param genericMethodName valori tipo -> "sso_getSelectedMSISDNDetails", "sso_getInfoActivationWSC" */ function add_N_areatext_sections(sim_list, genericMethodName) { let additional_methods_wrapper = $('#' + "additional_methods_" + genericMethodName) additional_methods_wrapper.empty() sim_list.forEach(function (sim_obj) { let sim_code = sim_obj.inputName let uniqueMethodName = sim_code + "_" + genericMethodName xmlMethods[uniqueMethodName] = { 'defaultXML': xmlMethods.sso_getSelectedMSISDNDetails.defaultXML, 'actualXML': xmlMethods.sso_getSelectedMSISDNDetails.defaultXML, 'is_editable': true } let formattedXML = vkbeautify.xml(xmlMethods[uniqueMethodName]["defaultXML"]) let additionalMethodArea = `
`; additional_methods_wrapper.append(additionalMethodArea) } ) } /** * questo metodo viene chiamato ogni volta che cambia in numero di sim e: * * genero gli oggetti input per ogni sim * passo la lista di oggetti input a addEditableFieldsInput (aggiunti nella sezione modifica massiva) * aggiorno l' xml del metodo getMSISDNList con le nuove sim * aggiungo una nuova textarea di editing metodo per ogni sim per i metodi getSelectedMSISDNDetails getInfoActivationWSC * @return void */ function displayNInputsForNSims() { $("[id^=sim_][id$=_wrapper]:not(#sim_1_wrapper)").remove();//rimuovo i vecchi input editableFields = editableFields.filter(field => !(field.inputName.startsWith('sim_') && (field.inputName !== "sim_1"))); let numberOfSim = $(this).val(); if (!(0 < numberOfSim) || !(numberOfSim <= 6)) { $(this).val(1) numberOfSim = 1 } const phone_number_sim_1 = $('input[name="sim_1"]').val() let sim_list = []; for (let sim_n = 2; sim_n <= numberOfSim; sim_n++) { let inputObj = { "inputName": "sim_" + sim_n, "defaultValue": phone_number_sim_1 + sim_n//qui }; sim_list.push(inputObj) editableFields.push(inputObj) } addEditableFieldsInputs(sim_list) //cambio actualXML di conseguenza inserendo dove necessario le chiavi aggiuntive di sim_1, sim_2, sim_3... // lista di xml che devono essere cambiati: // getMSISDNList (deve avere N tag sim_1, sim_2... ) editGetMSISDNListXML(sim_list) // getSelectedMSISDNDetails deve avere N textarea una per ogni sim add_N_areatext_sections(sim_list, "sso_getSelectedMSISDNDetails") // getInfoActivationWSC deve avere N textarea una per ogni sim add_N_areatext_sections(sim_list, "sso_getInfoActivationWSC") } /** * inserisco la lista di input in pagina per l' editing massivo dei campi * @param inputList */ function addEditableFieldsInputs(inputList = editableFields) { let inputWrapper = $('#wrapper-input-list') inputList.forEach(function (inputObj, index) { let div = $("
", {id: inputObj["inputName"] + "_wrapper", class: "col mb-2"}); let labelText = inputObj["labelText"] ?? inputObj["inputName"]; let label = $("