427 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			427 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| <%@ Page Title="" Language="C#" MasterPageFile="~/SystemSettings/SysSettingMasterPage.master" AutoEventWireup="true" CodeFile="ManageRegions.aspx.cs" Inherits="ManageRegions" %>
 | |
| 
 | |
| 
 | |
| <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
 | |
|     <style type="text/css">
 | |
|         ::-ms-clear, ::-ms-reveal {
 | |
|             display: none;
 | |
|         }
 | |
| 
 | |
|         .selectinput {
 | |
|             width: 150px;
 | |
|             margin-right: 10px;
 | |
|         }
 | |
| 
 | |
|         .dialog-content table {
 | |
|             border-collapse: collapse;
 | |
|             width: 100%;
 | |
|         }
 | |
| 
 | |
|             .dialog-content table td.label {
 | |
|                 width: 120px;
 | |
|                 text-align: right;
 | |
|                 padding-right: 10px;
 | |
|                 line-height: 30px;
 | |
|                 height: 24px;
 | |
|                 vertical-align: top;
 | |
|             }
 | |
| 
 | |
|             .dialog-content table td input,
 | |
|             .dialog-content table td textarea {
 | |
|                 border: 1px solid #a9a9a9;
 | |
|                 width: 200px;
 | |
|                 height: 18px;
 | |
|                 padding: 1px;
 | |
|             }
 | |
| 
 | |
|                 .dialog-content table td input[type="checkbox"] {
 | |
|                     border: none;
 | |
|                 }
 | |
| 
 | |
|             .dialog-content table td textarea {
 | |
|                 height: 100px;
 | |
|                 /*max-width: 200px;*/
 | |
|             }
 | |
| 
 | |
|         #dialogdatatb td {
 | |
|             padding-top: 30px;
 | |
|         }
 | |
| 
 | |
|         .a {
 | |
|             text-decoration: none;
 | |
|             color: #2140fb;
 | |
|         }
 | |
|     </style>
 | |
| 
 | |
|     <link href="<%=GetFileUrlWithVersion("../css/jquery.datetimepicker.css")%>" rel="stylesheet" />
 | |
|     <script src="<%=GetFileUrlWithVersion("../js/jquery.datetimepicker.full.js")%>"></script>
 | |
|     <script src="../Maintenance/js/inputdatactr.js"></script>
 | |
| 
 | |
|     <script type="text/javascript">        
 | |
| 
 | |
|         function regionrequest(method, param, callback, error) {
 | |
|             _network.request("SystemSettings/ManageRegions.aspx", -1, method, param, callback, error || function (e) {
 | |
|                 showmaskbg(false, true);
 | |
|                 showAlert(GetTextByKey('P_SET_QUERY', 'An unknown error occurred.  Please refresh page.'), GetTextByKey('P_SET_QUERY', 'Query'));
 | |
|             });
 | |
|         }
 | |
| 
 | |
|         function OnAdd() {
 | |
|             regionid = undefined;
 | |
| 
 | |
|             $('#dialog_name').val('');
 | |
|             $('#dialog_startdate').val('');
 | |
|             $('#dialog_projectenddate').val('');
 | |
|             $('#dialog_enddate').val('');
 | |
|             $('#dialog_notes').val('');
 | |
|             $('#dialog_region .dialog-title span.title').text(GetTextByKey("P_SET_ADDREGION", "Add Region"));
 | |
| 
 | |
|             showmaskbg(true);
 | |
|             $('#dialog_region')
 | |
|                 .css({
 | |
|                     'top': (document.documentElement.clientHeight - $('#dialog_region').height()) / 3,
 | |
|                     'left': (document.documentElement.clientWidth - $('#dialog_region').width()) / 2
 | |
|                 }).showDialogfixed();
 | |
|             $('#dialog_name').focus();
 | |
|         }
 | |
| 
 | |
|         var regionid;
 | |
|         function OnEdit() {
 | |
|             var index = grid_dt.selectedIndex;
 | |
|             if (index < 0) {
 | |
|                 showAlert(GetTextByKey("P_SET_PLEASESELECTREGION", "Please select Region."), GetTextByKey("P_SET_EDITREGION", "Edit Region")); return;
 | |
|             }
 | |
|             var region = grid_dt.source[index].Values;
 | |
|             if (!region) {
 | |
|                 regionid = undefined;
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             regionid = region.Id;
 | |
|             $('#dialog_name').val(region.Name);
 | |
|             $('#dialog_startdate').val(region.StartDate.DisplayValue);
 | |
|             $('#dialog_projectenddate').val(region.ProjectedEndDate.DisplayValue);
 | |
|             $('#dialog_enddate').val(region.EndDate.DisplayValue);
 | |
|             $('#dialog_notes').val(region.Notes);
 | |
|             $('#dialog_region .dialog-title span.title').text(GetTextByKey("P_SET_EDITREGION", "Edit Region"));
 | |
|             showmaskbg(true);
 | |
|             $('#dialog_region')
 | |
|                 .css({
 | |
|                     'top': (document.documentElement.clientHeight - $('#dialog_region').height()) / 3,
 | |
|                     'left': (document.documentElement.clientWidth - $('#dialog_region').width()) / 2
 | |
|                 }).showDialogfixed();
 | |
|             $('#dialog_name').focus();
 | |
|         }
 | |
| 
 | |
|         function OnDblClick(e) {
 | |
|             OnEdit();
 | |
|         }
 | |
| 
 | |
|         function OnDelete(region) {
 | |
|             if (!region) {
 | |
|                 return;
 | |
|             }
 | |
|             var alerttitle = GetTextByKey("P_SET_DELETEREGION", "Delete Region");
 | |
|             showConfirm(GetTextByKey("P_SET_DOYOUWANTTODELETETHEREGION", 'Do you want to delete the region?'), alerttitle, function () {
 | |
|                 regionrequest("DeleteRegion", region.Id, function (data) {
 | |
|                     if (typeof (data) === "string") {
 | |
|                         showAlert(data, alerttitle);
 | |
|                     }
 | |
|                     else
 | |
|                         OnRefresh();
 | |
|                 }, function (err) {
 | |
|                     showAlert(GetTextByKey("P_SET_FAILEDTODELETETHISREGION", 'Failed to delete this Region.'), alerttitle);
 | |
|                 });
 | |
|             });
 | |
|         }
 | |
| 
 | |
|         function OnRefresh() {
 | |
|             showloading(true);
 | |
| 
 | |
|             regionrequest("GetRegions", "", function (data) {
 | |
|                 showloading(false);
 | |
|                 if (typeof (data) === "string") {
 | |
|                     showAlert(data, GetTextByKey("P_SET_ERROR", 'Error'));
 | |
|                     return;
 | |
|                 }
 | |
| 
 | |
|                 if (data)
 | |
|                     showRegions(data);
 | |
|             }, function (err) {
 | |
|                 showloading(false);
 | |
|             });
 | |
|         }
 | |
| 
 | |
|         function showRegions(data) {
 | |
|             var rows = [];
 | |
|             for (var i = 0; i < data.length; i++) {
 | |
|                 var r = data[i];
 | |
|                 for (var j in r) {
 | |
|                     if (j === "StartDate") {
 | |
|                         r[j] = { DisplayValue: r["StartDateStr"], Value: r[j] };
 | |
|                     }
 | |
|                     else if (j === "ProjectedEndDate") {
 | |
|                         r[j] = { DisplayValue: r["ProjectedEndDateStr"], Value: r[j] };
 | |
|                     }
 | |
|                     else if (j === "EndDate") {
 | |
|                         r[j] = { DisplayValue: r["EndDateStr"], Value: r[j] };
 | |
|                     }
 | |
|                     else if (j === "IsActive") {
 | |
|                         r[j] = { DisplayValue: r["IsActive"] ? "Yes" : "No", Value: r[j] };
 | |
|                     }
 | |
|                 }
 | |
|                 var fr = { Values: r };
 | |
|                 rows.push(fr);
 | |
|             }
 | |
|             grid_dt.setData(rows);
 | |
|         }
 | |
| 
 | |
| 
 | |
|         var grid_dt;
 | |
|         function InitGridData() {
 | |
|             grid_dt = new GridView('#regionlist');
 | |
|             grid_dt.lang = {
 | |
|                 all: GetTextByKey("P_GRID_ALL", "(All)"),
 | |
|                 ok: GetTextByKey("P_GRID_OK", "OK"),
 | |
|                 reset: GetTextByKey("P_GRID_RESET", "Reset")
 | |
|             };
 | |
|             var list_columns = [
 | |
|                 { name: 'Name', caption: GetTextByKey("P_SET_REGIONNAME", "Region Name"), valueIndex: 'Name', css: { 'width': 200, 'text-align': 'left' } },
 | |
|                 { name: 'StartDate', caption: GetTextByKey("P_SET_STARTDATE", "Start Date"), valueIndex: 'StartDate', css: { 'width': 120, 'text-align': 'left' } },
 | |
|                 { name: 'ProjectedEndDate', caption: GetTextByKey("P_SET_PROJECTEDENDDATE", "Projected End Date"), valueIndex: 'ProjectedEndDate', css: { 'width': 130, 'text-align': 'left' } },
 | |
|                 { name: 'EndDate', caption: GetTextByKey("P_SET_ENDDATE", "End Date"), valueIndex: 'EndDate', css: { 'width': 120, 'text-align': 'left' } },
 | |
|                 //{ name: 'IsActive', caption: GetTextByKey("P_SET_ACTIVE", "Active"), valueIndex: 'IsActive', css: { 'width': 80, 'text-align': 'left' } },
 | |
|                 { name: 'Notes', caption: GetTextByKey("P_SET_NOTES", "Notes"), valueIndex: 'Notes', css: { 'width': 280, 'text-align': 'left' } },
 | |
|                 { name: 'Edit', caption: "", css: { 'width': 30, 'text-align': 'center' } },
 | |
|                 { name: 'Delete', caption: "", css: { 'width': 30, 'text-align': 'center' } }
 | |
|             ];
 | |
|             var columns = [];
 | |
|             // head
 | |
|             for (var hd in list_columns) {
 | |
|                 var col = {};
 | |
|                 col.name = list_columns[hd].name;
 | |
|                 col.caption = list_columns[hd].caption;
 | |
|                 col.visible = true;
 | |
|                 col.sortable = true;
 | |
|                 col.width = list_columns[hd].css.width;
 | |
|                 col.align = list_columns[hd].css["text-align"]
 | |
|                 col.key = list_columns[hd].valueIndex;
 | |
|                 col.allowFilter = list_columns[hd].allowFilter;
 | |
|                 col.type = list_columns[hd].type;
 | |
| 
 | |
|                 if (col.name === "Edit") {
 | |
|                     col.isurl = true;
 | |
|                     col.text = "\uf044";
 | |
|                     col.sortable = false;
 | |
|                     col.events = {
 | |
|                         onclick: function () {
 | |
|                             OnEdit();
 | |
|                         }
 | |
|                     };
 | |
|                     col.classFilter = function (e) {
 | |
|                         return "icon-col";
 | |
|                     }
 | |
|                     col.attrs = { 'title': GetTextByKey("P_SET_EDIT", 'Edit') };
 | |
|                 }
 | |
|                 else if (col.name === "Delete") {
 | |
|                     col.isurl = true;
 | |
|                     col.text = "\uf00d";
 | |
|                     col.sortable = false;
 | |
|                     col.events = {
 | |
|                         onclick: function () {
 | |
|                             OnDelete(this);
 | |
|                         }
 | |
|                     };
 | |
|                     col.classFilter = function (e) {
 | |
|                         return "icon-col";
 | |
|                     };
 | |
|                     col.attrs = { 'title': GetTextByKey("P_SET_DELETE", 'Delete') };
 | |
|                 }
 | |
|                 columns.push(col);
 | |
|             }
 | |
|             grid_dt.canMultiSelect = false;
 | |
|             grid_dt.columns = columns;
 | |
|             grid_dt.init();
 | |
|             grid_dt.rowdblclick = OnEdit;
 | |
|         }
 | |
| 
 | |
|         function OnDialogOK() {
 | |
|             var item = {
 | |
|                 'Name': $.trim($('#dialog_name').val()),
 | |
|                 'StartDate': $.trim($('#dialog_startdate').val()),
 | |
|                 'ProjectedEndDate': $.trim($('#dialog_projectenddate').val()),
 | |
|                 'EndDate': $.trim($('#dialog_enddate').val()),
 | |
|                 'Notes': $.trim($('#dialog_notes').val())
 | |
|             };
 | |
|             var alerttitle;
 | |
|             if (regionid) {
 | |
|                 item.Id = regionid;
 | |
|                 alerttitle = GetTextByKey("P_SET_EDITREGION", "Edit Region");
 | |
|             } else {
 | |
|                 item.Id = -1;
 | |
|                 alerttitle = GetTextByKey("P_SET_ADDREGION", "Add Region");
 | |
|             }
 | |
| 
 | |
|             if (!item.Name || item.Name.length == 0) {
 | |
|                 showAlert(GetTextByKey("P_SET_REGIONNAMECANNOTBEEMPTY", 'Region name cannot be empty.'), alerttitle);
 | |
|                 $('#dialog_name').focus();
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             if (item.StartDate.length > 0 && !checkDate(item.StartDate)) {
 | |
|                 showAlert(GetTextByKey("P_SET_STARTDATEFORMATERROR", "Start Date format error."), alerttitle);
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             if (item.ProjectedEndDate.length > 0 && !checkDate(item.ProjectedEndDate)) {
 | |
|                 showAlert(GetTextByKey("P_SET_PROJECTEDENDDATEFORMATERROR", "Projected End Date format error."), alerttitle);
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             if (item.EndDate.length > 0 && !checkDate(item.EndDate)) {
 | |
|                 showAlert(GetTextByKey("P_SET_ENDDATEFORMATERROR", "End Date format error."), alerttitle);
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             if (item.StartDate.length > 0) {
 | |
|                 var sdate = item.StartDate;
 | |
|                 var stdt = new Date(sdate.replace("-", "/"));
 | |
|                 if (item.ProjectedEndDate.length > 0) {
 | |
|                     var edate = item.ProjectedEndDate;
 | |
|                     var etdt = new Date(edate.replace("-", "/"));
 | |
|                     if (stdt > etdt) {
 | |
|                         showAlert(GetTextByKey("P_SET_PROJECTEDENDDATEFORMATERROR1", "Projected End Date must be later than Start Date."), alerttitle);
 | |
|                         return;
 | |
|                     }
 | |
|                 }
 | |
|                 if (item.EndDate.length > 0) {
 | |
|                     var edate = item.EndDate;
 | |
|                     var etdt = new Date(edate.replace("-", "/"));
 | |
|                     if (stdt > etdt) {
 | |
|                         showAlert(GetTextByKey("P_SET_ENDDATEFORMATERROR1", "End Date must be later than Start Date."), alerttitle);
 | |
|                         return;
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             regionrequest("SaveRegion", htmlencode(JSON.stringify(item)), function (data) {
 | |
|                 if (typeof (data) === "string") {
 | |
|                     showAlert(data, GetTextByKey("P_SET_ERROR", 'Error'));
 | |
|                     return;
 | |
|                 }
 | |
| 
 | |
|                 showmaskbg(false);
 | |
|                 $('#dialog_region').hideDialog();
 | |
|                 OnRefresh();
 | |
|             }, function (err) {
 | |
|                 showmaskbg(false);
 | |
|             });
 | |
|         }
 | |
| 
 | |
|         $(function () {
 | |
|             setPageTitle(GetTextByKey("P_SET_MANAGEREGIONS", 'Manage Regions'), true);
 | |
|             InitGridData();
 | |
| 
 | |
|             OnRefresh();
 | |
| 
 | |
|             $('#dialog_startdate').datetimepicker({
 | |
|                 timepicker: false,
 | |
|                 format: 'm/d/Y',
 | |
|                 enterLikeTab: false,
 | |
|                 scrollInput: false,
 | |
|                 onSelectDate: function (v, inp) {
 | |
|                     var date = new DateFormatter().formatDate(v, 'm/d/Y 00:00:00');
 | |
|                     inp.parent().data('val', [date]);
 | |
|                 }
 | |
|             });
 | |
| 
 | |
|             $('#dialog_projectenddate').datetimepicker({
 | |
|                 timepicker: false,
 | |
|                 format: 'm/d/Y',
 | |
|                 enterLikeTab: false,
 | |
|                 scrollInput: false,
 | |
|                 onSelectDate: function (v, inp) {
 | |
|                     var date = new DateFormatter().formatDate(v, 'm/d/Y 00:00:00');
 | |
|                     inp.parent().data('val', [date]);
 | |
|                 }
 | |
|             });
 | |
| 
 | |
|             $('#dialog_enddate').datetimepicker({
 | |
|                 timepicker: false,
 | |
|                 format: 'm/d/Y',
 | |
|                 enterLikeTab: false,
 | |
|                 scrollInput: false,
 | |
|                 onSelectDate: function (v, inp) {
 | |
|                     var date = new DateFormatter().formatDate(v, 'm/d/Y 00:00:00');
 | |
|                     inp.parent().data('val', [date]);
 | |
|                 }
 | |
|             });
 | |
| 
 | |
|             $('#dialog_region').dialog(function () {
 | |
|                 showmaskbg(false);
 | |
|             });
 | |
| 
 | |
|             $(window).resize(function () {
 | |
|                 $("#regionlist").css("height", $(window).height() - $("#regionlist").offset().top - 4);
 | |
|             }).resize();
 | |
| 
 | |
|         });
 | |
|     </script>
 | |
| </asp:Content>
 | |
| <asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
 | |
|     <div id="recordcontent" style="padding: 0px; margin: 0px;">
 | |
|         <div class="page_title" data-lgid="P_SET_MANAGEREGIONS">Manage Regions</div>
 | |
|         <div class="function_title">
 | |
|             <span class="sbutton iconadd" onclick="OnAdd();" data-lgid="P_SET_ADD">Add</span>
 | |
|             <span class="sbutton iconrefresh" onclick="OnRefresh();" data-lgid="P_SET_REFRESH">Refresh</span>
 | |
|         </div>
 | |
|         <div class="clear"></div>
 | |
|         <div id="regionlist">
 | |
|             <data-grid ref="grid" v-bind:columns="columns" v-bind:source="source" v-bind:allow-editing="true" v-on:rowdblclick="rowdblclick"
 | |
|                 v-bind:allow-auto-new-row="false" v-bind:total-row="totalRow" body-class="autoHeightBody">
 | |
|             </data-grid>
 | |
|         </div>
 | |
|     </div>
 | |
|     <div id="mask_bg" style="display: none;">
 | |
|         <div class="loading c-spin"></div>
 | |
|     </div>
 | |
| 
 | |
|     <div class="dialog" id="dialog_region" style="display: none; width: 500px;">
 | |
|         <div class="dialog-title"><span class="title" data-lgid="P_SET_ADDREGION">Add Region</span><em class="dialog-close"></em></div>
 | |
|         <div class="dialog-content">
 | |
|             <table>
 | |
|                 <tr>
 | |
|                     <td class="label" data-lgid="P_SET_REGIONNAME_COLON">Region Name:</td>
 | |
|                     <td>
 | |
|                         <input type="text" id="dialog_name" maxlength="200" tabindex="1" style="width: 320px;" autocomplete="off" /></td>
 | |
|                 </tr>
 | |
|                 <tr>
 | |
|                     <td class="label" data-lgid="P_SET_STARTDATE_COLON">Start Date:</td>
 | |
|                     <td>
 | |
|                         <input type="text" id="dialog_startdate" maxlength="20" tabindex="1" style="width: 320px;" autocomplete="off" /></td>
 | |
|                 </tr>
 | |
|                 <tr>
 | |
|                     <td class="label" data-lgid="P_SET_PROJECTEDENDDATE_COLON">Project End Date:</td>
 | |
|                     <td>
 | |
|                         <input type="text" id="dialog_projectenddate" maxlength="20" tabindex="1" style="width: 320px;" autocomplete="off" /></td>
 | |
|                 </tr>
 | |
|                 <tr>
 | |
|                     <td class="label" data-lgid="P_SET_ENDDATE_COLON">End Date:</td>
 | |
|                     <td>
 | |
|                         <input type="text" id="dialog_enddate" maxlength="20" tabindex="1" style="width: 320px;" autocomplete="off" /></td>
 | |
|                 </tr>
 | |
|                 <tr>
 | |
|                     <td class="label" data-lgid="P_SET_NOTES_COLON">Notes:</td>
 | |
|                     <td>
 | |
|                         <textarea id="dialog_notes" maxlength="1000" tabindex="1" style="width: 320px;"></textarea></td>
 | |
|                 </tr>
 | |
|             </table>
 | |
|         </div>
 | |
|         <div class="dialog-func">
 | |
|             <input type="button" value="Cancel" data-lgid="P_SET_CANCEL" class="dialog-close" tabindex="8" />
 | |
|             <input type="button" onclick="OnDialogOK();" value="OK" data-lgid="P_SET_OK" tabindex="7" />
 | |
|             <div class="clear"></div>
 | |
|         </div>
 | |
|     </div>
 | |
| </asp:Content>
 |