Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?xml version='1.0' encoding='UTF-8' ?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml"
- xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
- <body>
- <ui:composition template="./layout/default2.xhtml">
- <ui:define name="title">
- Search Customers
- </ui:define>
- <ui:define name="content">
- <!-- Content Header (Page header) -->
- <section class="content-header">
- <h1>
- Search Customers
- <small>Customer Management</small>
- </h1>
- <ol class="breadcrumb">
- <li><a href="./"><i class="fa fa-dashboard"></i> Home</a></li>
- <li class="active">List Customers</li>
- </ol>
- </section>
- <!-- Main content -->
- <section class="content">
- <div class="row">
- <div class="col-xs-12">
- <div class="box">
- <div class="box-header">
- <h3 class="box-title">Search Customers</h3>
- </div>
- <!-- /.box-header -->
- <div class="box-body">
- <table id="example1" class="table table-bordered table-striped">
- <thead>
- <tr>
- <th>Id</th>
- <th>Name</th>
- <th>Gender</th>
- <th>DOB</th>
- <th>Created</th>
- <th></th>
- </tr>
- </thead>
- <tbody>
- </tbody>
- <tfoot>
- <tr>
- <th>Id</th>
- <th>Name</th>
- <th>Gender</th>
- <th>DOB</th>
- <th>Created</th>
- <th></th>
- </tr>
- </tfoot>
- </table>
- </div>
- <!-- /.box-body -->
- </div>
- <!-- /.box -->
- </div>
- <!-- /.col -->
- </div>
- <!-- /.row -->
- <div class="modal fade" id="modal-default">
- <div class="modal-dialog">
- <div class="modal-content">
- <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-label="Close">
- <span aria-hidden="true">×</span></button>
- <h4 class="modal-title">Customer Details</h4>
- </div>
- <div class="modal-body" id="dialog-body">
- <p>One fine body…</p>
- </div>
- <div class="modal-footer">
- <button type="button" class="btn btn-default pull-right" data-dismiss="modal">Close</button>
- </div>
- </div>
- <!-- /.modal-content -->
- </div>
- <!-- /.modal-dialog -->
- </div>
- <!-- /.modal -->
- </section>
- <!-- /.content -->
- </ui:define>
- <ui:define name="script">
- <script>
- //<![CDATA[
- //Add the CDATA tag so that JSF will not have issues when using sensitive symbols e.g. < and &
- var selectedCId = null;
- var dtable = $('#example1').DataTable({
- 'paging': true,
- 'lengthChange': false,
- 'pageLength': 5, //5 entries per page
- 'searching': true,
- 'ordering': true,
- 'info': true,
- 'autoWidth': false,
- 'ajax': {
- url: '/CRM-war/webresources/customers',
- dataFilter: function (data) {
- //add the 'data' attribute to the JSON response
- //so that it can be read properly with DataTable
- var json = jQuery.parseJSON(data);
- json.map(function (item) {
- //convert gender's value to 'Female' or 'Male'
- item.gender = (item.gender === 1) ? 'Female' : 'Male';
- //convert dob and created's date format
- item.created = moment(item.created).format('DD/MM/YYYY');
- item.dob = moment(item.dob).format('DD/MM/YYYY');
- });
- //convert all the gender field to be male or female
- json = {'data': json};
- return JSON.stringify(json);
- }
- },
- "columnDefs": [{
- 'targets': -1,
- 'data': null,
- 'defaultContent': '<div class="btn-group">\
- <button type="button" data-type="view" class="search btn btn-default" data-toggle="modal" data-target="#modal-default"><i class="fa fa-fw fa-search"></i></button>\
- <button type="button" data-type="edit" class="btn btn-default"><i class="fa fa-fw fa-edit"></i></button>\
- <button type="button" data-type="delete" class="btn btn-default"><i class="fa fa-fw fa-remove"></i></button>\
- </div>'
- }],
- 'columns': [
- {'data': 'id'},
- {'data': 'name'},
- {'data': 'gender'},
- {'data': 'dob'},
- {'data': 'created'},
- {'data': null}
- ]
- });
- function reloadDataTable() {
- dtable.ajax.reload(function () {
- if (selectedCId !== null) {
- console.log("checking : " + selectedCId);
- var data = dtable.data();
- for (var i = 0; i < data.length; i++) {
- if (data[i].id === selectedCId) {
- refreshDialog(data[i]);
- console.log("in here!!!");
- console.log(data[i]);
- break;
- }
- }
- }
- });
- } //end reloadDataTable
- function addContact(cId) {
- var contact = $('#selectContact').val();
- var contactValue = $('#inputContactValue').val().trim();
- if (contactValue === ''){
- return;
- }
- console.log("#adding customerId : " + cId + " contact : " + contact + " " + contactValue);
- var data = {};
- if (contact === 'PHONE') {
- data.phone = contactValue;
- }
- else if (contact === 'EMAIL') {
- data.email = contactValue;
- }
- console.log(data);
- $.ajax({
- url: '/CRM-war/webresources/customers/' + cId + '/contacts',
- headers: {
- 'Accept': 'application/json',
- 'Content-Type': 'application/json'
- },
- type: 'POST',
- data: JSON.stringify(data),
- success: function(){
- reloadDataTable();
- }
- });
- }
- function addField(cId) {
- var field = $('#inputField').val().trim();
- var fieldValue = $('#inputFieldValue').val().trim();
- if (field === '' || fieldValue === ''){
- return;
- }
- $.ajax({
- url: '/CRM-war/webresources/customers/' + cId + '/fields',
- headers: {
- 'Accept': 'application/json',
- 'Content-Type': 'application/json'
- },
- type: 'POST',
- data: JSON.stringify({name: field, value: fieldValue}),
- success: function(){
- reloadDataTable();
- }
- });
- }
- function deleteContact(e) {
- var thisElement = $(e);
- var cId = thisElement.attr('data-contact-id');
- console.log("#delete contact : " + cId);
- var choice = confirm("Do you want to delete?");
- if (choice) {
- $.ajax({
- url: '/CRM-war/webresources/contacts/' + cId,
- type: 'DELETE',
- success: function () {
- reloadDataTable();
- }
- });
- }
- }
- function deleteField(e) {
- var thisElement = $(e);
- var fId = thisElement.attr('data-field-id');
- var cId = thisElement.attr('data-customer-id');
- var choice = confirm("Do you want to delete?");
- if (choice) {
- $.ajax({
- url: '/CRM-war/webresources/customers/' + cId + '/fields/' + fId,
- type: 'DELETE',
- success: function () {
- reloadDataTable();
- }
- });
- }
- }
- function refreshDialog(data) {
- var cId = data.id;
- var html = '<div class="row">\
- <div class="col-xs-4"><b>Id</b></div>\
- <div class="col-xs-8">' + cId + '</div>\
- <div class="col-xs-4"><b>Name</b></div>\
- <div class="col-xs-8">' + data.name + '</div>\
- <div class="col-xs-4"><b>Gender</b></div>\
- <div class="col-xs-8">' + data.gender + '</div>\
- <div class="col-xs-4"><b>DOB</b></div>\
- <div class="col-xs-8">' + data.dob + '</div>\
- <div class="col-xs-4"><b>Created</b></div>\
- <div class="col-xs-8">' + data.created + '</div>';
- //add list of fields
- var fields = data['fields'];
- fields.map(function (item) {
- html += '<div class="col-xs-4"><b>' + item.name + '</b></div>';
- html += '<div class="col-xs-4">' + item.value + '</div>';
- html += '<div class="col-xs-4"><a class="btn btn-danger btn-xs" data-customer-id="' + data.id + '" data-field-id="' + item.id + '" onclick="deleteField(this)">Delete</a></div>';
- });
- //add list of contacts
- var contacts = data.contacts;
- contacts.map(function (item) {
- if (item['phone']) {
- html += '<div class="col-xs-4"><b>Phone</b></div>';
- html += '<div class="col-xs-4">' + item.phone + '</div>';
- html += '<div class="col-xs-4"><a class="btn btn-danger btn-xs" data-contact-id="' + item.id + '" onclick="deleteContact(this)">Delete</a></div>';
- }
- else if (item['email']) {
- html += '<div class="col-xs-4"><b>Email</b></div>';
- html += '<div class="col-xs-4">' + item.email + '</div>';
- html += '<div class="col-xs-4"><a class="btn btn-danger btn-xs" data-contact-id="' + item.id + '" onclick="deleteContact(this)">Delete</a></div>';
- }
- });
- //add textbox for adding field
- html += '<div class="col-xs-4"><input class="form-control" id="inputField" placeholder="field name" required/></div>';
- html += '<div class="col-xs-4"><input class="form-control" id="inputFieldValue" placeholder="field value" required/></div>';
- html += '<div class="col-xs-4"><a class="btn btn-primary" onclick="addField(' + cId + ')">Add Field</a></div>';
- //add textbox for adding contact
- html += '<div class="col-xs-4"><select class="form-control" id="selectContact"><option value="PHONE">Phone</option><option value="EMAIL">Email</option></select></div>';
- html += '<div class="col-xs-4"><input class="form-control" id="inputContactValue" required/></div>';
- html += '<div class="col-xs-4"><a class="btn btn-success" onclick="addContact(' + cId + ')">Add Contact</a></div>';
- html += '</div>';
- $('#dialog-body').html(html);
- }
- $('#example1 tbody').on('click', 'button', function () {
- var button = $(this);
- var type = button.attr('data-type');
- var data = dtable.row($(this).parents('tr')).data();
- var id = data.id;
- if (type === 'view') {
- //load the dialog box
- refreshDialog(data);
- selectedCId = id;
- console.log("selectedCId : " + selectedCId);
- }
- else if (type === 'edit') {
- window.location.href = "manageCustomer.xhtml?cId=" + id;
- }
- else if (type === 'delete') {
- //DO a DELETE request and refresh
- var choice = confirm("Do you want to delete?");
- if (choice) {
- $.ajax({
- url: '/CRM-war/webresources/customers/' + id,
- type: 'DELETE',
- success: function () {
- dtable.ajax.reload();
- }
- });
- }
- }
- });
- $('#modal-default').on('hidden.bs.modal', function (e) {
- selectedCId = null;
- console.log("hidden modal");
- })
- // $('#example1').DataTable();
- //]]>
- </script>
- </ui:define>
- </ui:composition>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement