From 6beb446925c967aca92f5513adf36c5db77c00d6 Mon Sep 17 00:00:00 2001 From: TATTAVARADA Date: Thu, 27 Apr 2017 07:53:18 -0400 Subject: [PORTAL-7] Rebase This rebasing includes common libraries and common overlays projects abstraction of components Change-Id: Ia1efa4deacdc5701e6205104ac021a6c80ed60ba Signed-off-by: st782s --- .../ds2-raptor-report/stepFormFactory.js | 198 +++++++++++++++++++++ 1 file changed, 198 insertions(+) create mode 100644 ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-services/ds2-raptor-report/stepFormFactory.js (limited to 'ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-services/ds2-raptor-report/stepFormFactory.js') diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-services/ds2-raptor-report/stepFormFactory.js b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-services/ds2-raptor-report/stepFormFactory.js new file mode 100644 index 00000000..5c711425 --- /dev/null +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-services/ds2-raptor-report/stepFormFactory.js @@ -0,0 +1,198 @@ +(function(){ + var stepFormFactory = function($http, $compile, $q, $log) { + + var factory = {}; + + factory.getStepJSONData = function(jsonSrcName) { + $http({ + method: "GET", + url: jsonSrcName, + }).then(function(response) { + if (typeof response.data === 'object') { + return response.data; + } else { + return $q.reject(response.data); + } + }, function(response) { + // something went wrong + return $q.reject(response.data); + }); + } + + + factory.renderColumnForm = function(scope) { + + } + factory.renderForm = function(jsonSrcName, elem, scope) { + let defer = $q.defer(); + var divStepForm = document.getElementById('stepView'); + var textStyle = "width:300px" + var textAreaStyle = "width:300px" + if(divStepForm) + while(divStepForm && divStepForm.firstChild){ + divStepForm.removeChild(divStepForm.firstChild); + } + $http({ + method: 'GET', + url: jsonSrcName + }).then(function successCallback(response) { + // this callback will be called asynchronously + // when the response is available + if (typeof response.data === 'object') { + var json = response.data; + var step = json.step; + var div =d3.select(elem[0]); + var modelNameDict = {}; + + div.append("h1").attr({"class":"font-color:blue"}).text(json.content.title); + div.append("div").html(json.content.contentHtml); + var sections = json.content.sections; + sections.forEach(function(d, i) { + var sectionDiv = div.append("div"); + sectionDiv.attr("id", "section_"+i); + if(d.title != "finalButton") + sectionDiv.append("h4").text(d.title); + var proj_id_hidden = sectionDiv.append("input"); + proj_id_hidden.attr({"type":"hidden", "value":"", "name": "proj_id", "ng-model":"proj_id", "style": "" }); + + var elements = d.elements; + var buttons = d.buttons; + var elementTable ; + if(elements) { + elements.forEach(function(element, elementIndex) { + + var elementBody ; + if(elementIndex == 0) { + elementTable = sectionDiv.append("table").attr({"border":"0", "cellpadding":"4", "cellspacing":"0"}); + elementBody = elementTable.append("tbody"); + } else { + elementBody = elementTable = sectionDiv.select("tbody"); + } + if(element.input == 'hidden') { + + } else { + var tr = elementBody.append("tr") + var cellWidthStyle = {"width":"50%"} + + if (!(element.spanOverTwoColumns)){ + var td = tr.append("td").attr({"width":"30%","class":"tdLeftColumn"}); + if (element.input=="checkboxGroup") { + td = td.attr({"rowspan":element.checkboxes.length}) + } + td.text(element.displayName); + var cellWidthStyle = {"width":"500px;"} + } + td = tr.append("td").attr(cellWidthStyle); + var model_name_appendix=''; + if (element.name in modelNameDict) { + modelNameDict[element.name]=modelNameDict[element.name]+1 + model_name_appendix ='_'+modelNameDict[element.name] + } else { + modelNameDict[element.name]=0 + } + if(element.input == 'text') { + var inp_text = td.append("input"); + inp_text.attr({"type":"text", "value":element.defaultValue, "name": element.name, "ng-model":element.name+model_name_appendix, "style": (element.style?element.style:textStyle) }); + } + else if(element.input === 'checkbox') { + var temptd= td.append("label").attr({"class":"checkbox"}); + var temptd2= temptd.append("input").attr({"type":"checkbox", "ng-model": element.checkbox.value}); + var temptd3= temptd.append("i").attr({"class":"skin"}) + var temptd3= temptd.append("span").text(element.checkbox.text); + + } else if (element.input === 'radio') { + element.options.forEach(function(d,i) { + td.append("input").attr({"type":"radio", "id":element.name+"_"+d.id, "ng-model":element.name+model_name_appendix, "name": element.name, "value": d.id}); + td.append("label").text(d.name); + }) + } else if (element.input === 'checkboxGroup') { + + element.checkboxes.forEach(function(d,i) { + if (i==0) { + var temptd= td.append("label").attr({"class":"checkbox"}); + var temptd2= temptd.append("input").attr({"type":"checkbox", "ng-model": d.value}); + var temptd3= temptd.append("i").attr({"class":"skin"}) + var temptd3= temptd.append("span").text(d.text); + } else { + var tr = elementBody.append("tr") + td = tr.append("td").attr({"width":"50%"}); + var temptd= td.append("label").attr({"class":"checkbox"}); + var temptd2= temptd.append("input").attr({"type":"checkbox", "ng-model": d.value}); + var temptd3= temptd.append("i").attr({"class":"skin"}) + var temptd3= temptd.append("span").text(d.text); + } + }) + } else if (element.input === 'textarea') { + td.append("textarea").attr({"rows":"4", "cols":"50", "ng-model":element.name+model_name_appendix, "name": element.name, "style": (element.style?element.style:textAreaStyle)}); + } + else if (element.input === 'select') { + var select = td.append("select"); + // need to store options into element name; + select + .attr({"name": element.name,"b2b-dropdown":"","ng-model":element.ngModelName,"style":"width:300px"}) + .attr("placeholder-text","Select"); + + + /* var data = ["Option 1", "Option 2", "Option 3"]*/ + var options = select + .selectAll('option') + .data(element.options).enter() + .append('option').attr("value", function(d) {return d.value}) + .attr("b2b-dropdown-list","") + .text(function (d) { return d.text; }) + ; + } else if (element.input === 'tabletext') { + var colArray = element.columns.split(','); + var table = td.append("table"); + table.attr("border", "1"); + + colArray.forEach(function(d) { + table.append("th").text(d); + }) + + } + } + }) + if (buttons) { + buttons.forEach(function(button, buttonIndex) { + sectionDiv.append("input").attr({"type":"button", "value": button.text, "ng-click":button.ngFunction,"class":"btn btn-alt btn-small"}); + }) + sectionDiv.append("br"); + } + } + else { //if elements + if((json.step != "1")&&(!json.hideBackButton)) + sectionDiv.append("input").attr({"type":"button", "value": "Back", "ng-click":"previous()","class":"btn btn-alt btn-small"}); + if((d.title == "finalButton")&(!json.hideSaveButton)) + sectionDiv.append("input").attr({"type":"button", "value": "Save", "ng-click":"save()", "class":"btn btn-alt btn-small"}); + if(!json.last_step) + sectionDiv.append("input").attr({"type":"button", "value": "Next", "ng-click":"next()", "class":"btn btn-alt btn-small"}); + + } + }) + elem.html(div.html()); + elem.removeAttr("step-form"); + $compile(elem.contents())(scope); + defer.resolve(); + } else { + $log.error + return $q.reject(response.data); + } + }, function errorCallback(response) { + // called asynchronously if an error occurs + // or server returns response with an error status. + $log.error("reponse data is not a valid JSON object"); + defer.resolve(); + }); + //} + return defer.promise; + }; + + return factory; + }; + + stepFormFactory.$inject = ['$http', '$compile', '$q']; + + appDS2.factory('stepFormFactory', stepFormFactory); + +}()) -- cgit 1.2.3-korg